Как настроить сценарий входа для запуска xrandr?

libicui18n

libicudata.so.50 -> libicudata.so.50.1.2
libicudata.so.50.1.2
libicui18n.so.50 -> libicui18n.so.50.1.2
libicui18n.so.50.1.2
libicuio.so.50 -> libicuio.so.50.1.2
libicuio.so.50.1.2
libicule.so.50 -> libicule.so.50.1.2
libicule.so.50.1.2
libiculx.so.50 -> libiculx.so.50.1.2
libiculx.so.50.1.2
libicutest.so.50 -> libicutest.so.50.1.2
libicutest.so.50.1.2
libicutu.so.50 -> libicutu.so.50.1.2
libicutu.so.50.1.2
libicuuc.so.50 -> libicuuc.so.50.1.2
libicuuc.so.50.1.2

Файлы зависят друг от друга, иначе особых зависимостей нет. Упаковано как lib64/libicu *.so... → libicu-50.1.2-15.el7.x86_64.tar.gz,который вы можете распаковать в любом месте в $HOME.

Ссылкаhttps://drive.google.com/drive/folders/1mt62sCzGvSVkj5-osQhk466ImZ5XjPQt?usp=sharing(libicu-devel-50.1.2-15.el7.x86_64.tar.gzтоже присутствует в ссылке.)

3
08.01.2020, 00:58
4 ответа

Я использую макет из 2 экранов, который немного похож на ваш, у меня обычный экран справа и портретный -экран слева. С моей настройкой X отлично работает на моих двух экранах.

Вот мое предложение для вашего собственного случая (трудно проверить, так как у меня нет таких же экранов и у меня нет 3 экранов ), но этого должно быть достаточно, чтобы вы получили работающую настройку X.

Поместите следующие файлы в/etc/X11/xorg.conf.d/

30-screen-dport0.conf
30-screen-dport1.conf
30-screen-dport2.conf

со следующим содержанием:

30 -экран -dportcenter.conf

Section "Monitor"
  Identifier   "DisplayPort-0"
  Option       "Primary" "true"
  Option       "PreferredMode"   "3840x2160" # Adapt this if you resolution is not the same
  Option       "Position"        "1200 0" 
EndSection

Section "Screen"
  Identifier   "DPC"
  Device       "nVidia" # here you choose your driver
  Monitor      "DisplayPort-0"
EndSection

30 -экран -dportleft.conf

Section "Monitor"
  Identifier   "DisplayPort-1 "
  Option       "LeftOf" "DisplayPort-0"
  Option       "Rotate" "left" 
  Option       "PreferredMode"   "1920x1200"
  Option       "Position"        "0 0"
EndSection

Section "Screen"
  Identifier   "DPL"
  Device       "nVidia"
  Monitor      "DisplayPort-1"
EndSection

30 -экран -dportright.conf

Section "Monitor"
  Identifier   "DisplayPort-2"
  Option       "RightOf" "DisplayPort-0"
  Option       "Rotate" "right" 
  Option       "PreferredMode"   "1920x1200"
  Option       "Position"        "5040 0" # 1200 + 3840
EndSection

Section "Screen"
  Identifier   "DPR"
  Device       "nVidia"
  Monitor      "DisplayPort-2"
EndSection

90 -serverlayout.conf

Section "ServerLayout"
    Identifier   "Main"
    Screen       0 "DPL"
    Screen       1 "DPC"
    Screen       2 "DPR
EndSection

Координаты X-сервера работают следующим образом

 0                 X
+ -----------------> X-axis 
|0
|
|
|
|
| 
| Y
V Y-axis  

Идентификатор nVidia — это ссылка на видеокарту, определенную в файле с именем

20 -nvidia.conf

Section "Device"
  Identifier  "nVidia"
  Driver      "nouveau"
  Option      "AccelMethod"  "sna"
  Option      "GLXVBlank"    "true"
  # Need to flag this as only referring to one output on the card
  Screen      0

EndSection
4
27.01.2020, 21:13

Я использую пользователя -land systemd service (full path =$HOME/.config/systemd/user/set-display.service)для обработки аналогичной ситуации на моих виртуальных машинах QEMU, которые используют XFCE и не заполняют экран автоматически (прерываются из-за conky):

[Unit]
Description=Set Display Resolution

[Service]
ExecStartPre=/bin/sleep 5
Type=oneshot
ExecStart=/usr/bin/xrandr --output Virtual-0 --mode 1499x996

[Install]
WantedBy=default.target

Я использую команду sleep, чтобы убедиться, что DE полностью загружен; мои виртуальные машины на твердотельных накопителях всегда были в порядке с 5 секундами или меньше, а на жестких дисках иногда требовалось больше. Просто создайте скрипт, который запускает обе ваши команды xrandr, замените его на ExecStart=(чем-то вроде ExecStart=/path/to/your/script), затем включите его(systemctl --user enable set-display).

ОБНОВЛЕНИЕ :тестирование в качестве системной службы в Debian Buster не работало, даже при запуске службы вручную после входа в систему (пробовали как root и обычный пользователь ).

3
27.01.2020, 21:13

Вы должны поместить эти две строки в один из файлов, исполняемых вашим диспетчер входа в систему или оконный менеджер при их запуске. Какой файл будет это точно зависит от того, какой менеджер входа в систему и оконный менеджер вы использование и локальная настройка вашей системы.

Например, если вы используете slimменеджер входа в систему, вы должны установить команды в файле, указанном login_cmdв конфиг. В Debian например:

$ grep '^login_cmd ' /etc/slim.conf
login_cmd           exec /bin/bash -login /etc/X11/Xsession %session

Но в Slackware:

$ grep '^login_cmd ' /etc/slim.conf
login_cmd           exec /bin/bash -login ~/.xinitrc %session

В Debian, я думаю, лучшим местом будет новый файл, созданный в /etc/X11/Xsession.d, скажем, 90xrandrсо следующим содержимым:

xrandr --output DisplayPort-1 --rotate right --left-of DisplayPort-0
xrandr --output DisplayPort-2 --rotate left --right-of DisplayPort-0

Вам не нужно делать его исполняемым или добавлять шебанг, как это было бы источник/etc/X11/Xsession:

# use run-parts to source every file in the session directory; we source
# instead of executing so that the variables and functions defined above
# are available to the scripts, and so that they can pass variables to each
# other
SESSIONFILES=$(run-parts --list $SYSSESSIONDIR)
if [ -n "$SESSIONFILES" ]; then
  set +e
  for SESSIONFILE in $SESSIONFILES; do
   . $SESSIONFILE
  done
  set -e
fi

Также обратите внимание, что login_cmdзапускается после того, как пользователь входит в систему. необходимо использовать slimв настройках монитора по умолчанию каждый раз при его запуске.

1
27.01.2020, 21:13

Из командной строки (, если вы используете nano, в противном случае замените на vim)

sudo nano /etc/xdg/autostart/rotate-screen-1.desktop

Затем вставьте следующее и сохраните:

[Desktop Entry]
Version=1.0
Encoding=UTF-8
Type=Application
Name=Xrandr Screen 1 Rotation
Icon=preferences-desktop-screensaver
Exec=xrandr --output DisplayPort-1 --rotate right --left-of DisplayPort-0
Terminal=false
OnlyShowIn=LXDE;OPENBOX;GNOME;KDE;
Categories=System;Security;Utility;
StartupNotify=false
X-KDE-autostart-after=panel
X-OPENBOX-Autostart-enabled=true

Затем то же самое для второго экрана

sudo nano /etc/xdg/autostart/rotate-screen-2.desktop

Затем вставьте следующее и сохраните:

[Desktop Entry]
Version=1.0
Encoding=UTF-8
Type=Application
Name=Xrandr Screen 2 Rotation
Icon=preferences-desktop-screensaver
Exec=xrandr --output DisplayPort-2 --rotate left --right-of DisplayPort-0
Terminal=false
OnlyShowIn=LXDE;OPENBOX;GNOME;KDE;
Categories=System;Security;Utility;
StartupNotify=false
X-KDE-autostart-after=panel
X-OPENBOX-Autostart-enabled=true

После перезагрузки экран должен автоматически поворачиваться

1
27.01.2020, 21:13

Теги

Похожие вопросы