xrandr을 실행하기 위해 로그인 스크립트를 어떻게 설정합니까?

xrandr을 실행하기 위해 로그인 스크립트를 어떻게 설정합니까?

모니터 3개를 사용하는데 그 중 2개는 회전하는 사이드 모니터입니다.

2개의 모니터 회전을 성공적으로 구성할 수 없었지만 로그인 관리자가 시작된 후에 사용할 수 있는 명령을 xorg.conf찾았습니다 .xrandr

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

현재는 로그인 후 수동으로 이러한 명령을 실행합니다.

로그인 시 모니터가 회전하도록 하려면 어디에 넣어야 합니까? 그리고 글로벌하게 할 수 있나요? 이렇게 하면 다른 사용자로 로그인하면 모니터가 회전하게 됩니다. 아니면 각 사용자가 로그인한 후 이를 수행하려면 사용자 스크립트가 필요합니까?

답변1

나는 당신과 다소 유사한 2 화면 레이아웃을 사용하고 있습니다. 내 것은 오른쪽에 일반 화면이 있고 왼쪽에 세로 화면이 있습니다. 내 설정에 따르면 X는 두 화면에서 완벽하게 작동합니다.

다음은 여러분의 상황에 대한 제 제안입니다(동일한 화면도 없고 3개도 없기 때문에 테스트하기 어렵습니다). 하지만 작동하는 X 설정을 얻는 데는 충분할 것입니다.

다음 파일을 넣으십시오./etc/X11/xorg.conf.d/

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

다음 콘텐츠가 포함되어 있습니다:

30-screen-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-screen-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

Xserver 좌표는 다음과 같이 작동합니다.

 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

답변2

$HOME/.config/systemd/user/set-display.serviceXFCE를 사용하고 화면을 자동 완성하지 않는(conky로 인해 단축됨) QEMU VM에서 유사한 상황을 처리하기 위해 userland systemd 서비스(전체 경로 = )를 사용했습니다 .

[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

DE가 완전히 로드되었는지 확인하기 위해 sleep 명령을 사용합니다. SSD의 VM은 항상 5초 이내에 정상적으로 실행되는 반면, HDD VM은 때때로 더 많은 시간이 걸립니다. 두 개의 xrandr 명령을 실행하는 스크립트를 작성하고 다음으로 바꾸십시오.실행 시작 =(비슷함 ExecStart=/path/to/your/script) 그런 다음 활성화합니다( systemctl --user enable set-display).

업데이트: 로그인 후 수동으로 서비스를 실행하더라도(루트 및 일반 사용자로 시도) Debian Buster에서 시스템 서비스 테스트가 작동하지 않습니다.

답변3

로그인 관리자나 창 관리자가 시작될 때 실행되는 파일 중 하나에 이 두 줄을 넣어야 합니다. 어떤 파일은 사용하는 로그인 관리자 및 창 관리자와 시스템의 로컬 설정에 따라 전적으로 달라집니다.

예를 들어 로그인 관리자를 사용하는 경우 구성에 지정된 파일 slim에 시작 명령을 넣어야 합니다 . login_cmd데비안을 예로 들어보겠습니다:

$ 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

90xrandr데비안에서는 /etc/X11/Xsession.d에 다음 내용을 포함하는 새 파일을 만드는 것이 가장 좋은 장소라고 생각합니다 .

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

소스가 다음과 같으므로 실행 가능하게 만들거나 shebang을 추가할 필요가 없습니다 /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시작할 때마다 기본 모니터 설정을 사용해야 합니다.

답변4

명령줄에서(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

재부팅 후 화면이 자동으로 회전해야 합니다.

관련 정보