모니터 자동 구성을 비활성화하는 방법은 무엇입니까?


14

데스크톱 환경으로 Ubuntu 16.04 (dev branch), XFCE를 실행하고 있습니다.

컴퓨터가 두 대의 모니터에 연결되어 있습니다. 하나는 일반 VGA 케이블을 통해, 다른 하나는 HDMI 스위처에 연결되어 있습니다. 해당 설정은 제대로 작동하지만 HDMI 스위처를 다른 HDMI 연결로 일시적으로 변경할 때마다 Xorg는 모니터 연결이 끊어진 것을 감지하고 Xorg가 단일 모니터 만 사용하도록 재구성하고 HDMI 스위처를 컴퓨터로 다시 전환해도 이중 모니터는 다시 활성화되지 않습니다 둘 중 하나를 사용하여 수동으로 트리거해야합니다.xrandr

이러한 종류의 자동 모니터 감지 및 재구성이 발생하지 않도록하려면 어떻게해야합니까? 컴퓨터가 아무것도하지 않고 HDMI 스위처를 전환하고 싶습니다.

다중 모니터 설정을 복원하는 데 사용되는 명령 :

xrandr \
 --output HDMI-1 \
   --mode "1920x1080" \
   --panning "1920x1080+1280+0/0x0+0+0" \
 --output DVI-1-I \
   --mode "1280x1024" \
   --panning "1280x1024/0x0+0+0"

정기적 인 사용시 xrandr 출력 :

Screen 0: minimum 320 x 200, current 3200 x 1080, maximum 8192 x 8192
DP-1 disconnected (normal left inverted right x axis y axis)
HDMI-1 connected 1920x1080+1280+0 (normal left inverted right x axis y axis) 443mm x 249mm panning 1920x1080+1280+0
   1920x1080     60.00*+  60.00    50.00    59.94    59.93  
   1920x1080i    60.00    50.00    59.94  
   1680x1050     59.95    59.88  
   1600x1024     60.17  
   1400x1050     74.76    70.00    59.98  
   1280x1024     75.02    60.02  
   1440x900      59.89    59.90  
   1280x960      60.00  
   1360x768      59.80    59.96  
   1280x800      59.91  
   1152x864      75.00    75.00    70.00    60.00  
   1280x720      60.00    50.00    59.94  
   1024x768      60.04    75.03    70.07    60.00  
   960x720       75.00    60.00  
   928x696       75.00    60.05  
   896x672       75.05    60.01  
   960x600       60.00  
   832x624       74.55  
   960x540       59.99  
   800x600       75.00    70.00    65.00    60.00    72.19    75.00    60.32    56.25  
   840x525       74.96    69.88    60.01    59.88  
   720x576       50.00  
   800x512       60.17  
   700x525       74.76    70.06    59.98  
   720x480       60.00    59.94  
   640x512       75.02    60.02  
   720x450       59.89  
   640x480       60.00    72.81    75.00    66.67    60.00    59.94  
   720x400       70.08  
   680x384       59.80    59.96  
   576x432       75.00    75.00    70.00    60.06  
   512x384       75.03    70.07    60.00  
   416x312       74.66  
   400x300       72.19    75.12    60.32    56.34  
   320x240       72.81    75.00    60.05  
DVI-I-1 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 359mm x 287mm
   1280x1024     60.02*+  75.02  
   1280x960      60.00  
   1280x800      74.93    59.81  
   1152x864      75.00  
   1280x768      74.89    59.87  
   1280x720      60.00  
   1024x768      75.08    75.03    70.07    60.00  
   1024x576      59.97  
   832x624       74.55  
   800x600       72.19    75.00    70.01    60.32    56.25  
   848x480       60.00  
   640x480       75.00    72.81    66.67    60.00  
   720x400       70.08  

HDMI 스위처가 다른 연결로 전환 된 경우 xrandr 출력 :

Screen 0: minimum 320 x 200, current 1280 x 1024, maximum 8192 x 8192
DP-1 disconnected (normal left inverted right x axis y axis)
HDMI-1 disconnected (normal left inverted right x axis y axis)
DVI-I-1 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 359mm x 287mm
   1280x1024     60.02*+  75.02  
   1280x960      60.00  
   1280x800      74.93    59.81  
   1152x864      75.00  
   1280x768      74.89    59.87  
   1280x720      60.00  
   1024x768      75.08    75.03    70.07    60.00  
   1024x576      59.97  
   832x624       74.55  
   800x600       72.19    75.00    70.01    60.32    56.25  
   848x480       60.00  
   640x480       75.00    72.81    66.67    60.00  
   720x400       70.08  

내가 시도한 몇 가지 더 :

모니터가 연결된 상태에서 다음 모델을 찾으십시오.

$ xvidtune -show 
"1920x1080"   148.50   1920 2008 2052 2200   1080 1084 1089 1125 -hsync +vsync

그런 다음 모니터를 분리 한 상태에서 :

$ xrandr --newmode "1920x1080-new"   148.50   1920 2008 2052 2200   1080 1084 1089 1125 -hsync +vsync
$ xrandr --addmode HDMI-1 1920x1080-new
$ xrandr --output HDMI-1 --mode 1920x1080-new

이렇게하면 연결을 끊을 때 디스플레이를 활성화 할 수 있습니다. 그렇지 않으면 존재하지 않는 모드 1920x1080으로 인해 실패합니다. 그러나 HDMI 스위처를 전환하면 사용자 정의 모드로 설정해도 디스플레이가 비활성화됩니다.

HDMI 스위처로 디스플레이 연결을 끊을 때 발생하는 udev 이벤트입니다.

$ udevadm monitor --property
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent

KERNEL[41678.571099] change   /devices/pci0000:00/0000:00:02.0/0000:01:00.0/drm/card0 (drm)
ACTION=change
DEVNAME=/dev/dri/card0
DEVPATH=/devices/pci0000:00/0000:00:02.0/0000:01:00.0/drm/card0
DEVTYPE=drm_minor
HOTPLUG=1
MAJOR=226
MINOR=0
SEQNUM=3248
SUBSYSTEM=drm

UDEV  [41678.573432] change   /devices/pci0000:00/0000:00:02.0/0000:01:00.0/drm/card0 (drm)
ACTION=change
DEVNAME=/dev/dri/card0
DEVPATH=/devices/pci0000:00/0000:00:02.0/0000:01:00.0/drm/card0
DEVTYPE=drm_minor
HOTPLUG=1
ID_FOR_SEAT=drm-pci-0000_01_00_0
ID_PATH=pci-0000:01:00.0
ID_PATH_TAG=pci-0000_01_00_0
MAJOR=226
MINOR=0
SEQNUM=3248
SUBSYSTEM=drm
TAGS=:uaccess:master-of-seat:seat:
USEC_INITIALIZED=31279519

다음은 HDMI 스위처를 사용하여 디스플레이를 다시 활성화 할 때 udev 이벤트입니다.

$ udevadm monitor --property
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent

KERNEL[41696.104481] change   /devices/pci0000:00/0000:00:02.0/0000:01:00.0/drm/card0 (drm)
ACTION=change
DEVNAME=/dev/dri/card0
DEVPATH=/devices/pci0000:00/0000:00:02.0/0000:01:00.0/drm/card0
DEVTYPE=drm_minor
HOTPLUG=1
MAJOR=226
MINOR=0
SEQNUM=3249
SUBSYSTEM=drm

UDEV  [41696.105685] change   /devices/pci0000:00/0000:00:02.0/0000:01:00.0/drm/card0 (drm)
ACTION=change
DEVNAME=/dev/dri/card0
DEVPATH=/devices/pci0000:00/0000:00:02.0/0000:01:00.0/drm/card0
DEVTYPE=drm_minor
HOTPLUG=1
ID_FOR_SEAT=drm-pci-0000_01_00_0
ID_PATH=pci-0000:01:00.0
ID_PATH_TAG=pci-0000_01_00_0
MAJOR=226
MINOR=0
SEQNUM=3249
SUBSYSTEM=drm
TAGS=:seat:master-of-seat:uaccess:
USEC_INITIALIZED=31279519

.

$ sudo lshw -c display
  *-display                 
       description: VGA compatible controller
       product: Redwood XT [Radeon HD 5670/5690/5730]
       vendor: Advanced Micro Devices, Inc. [AMD/ATI]
       physical id: 0
       bus info: pci@0000:01:00.0
       version: 00
       width: 64 bits
       clock: 33MHz
       capabilities: pm pciexpress msi vga_controller bus_master cap_list rom
       configuration: driver=radeon latency=0
       resources: irq:55 memory:c0000000-cfffffff memory:fea20000-fea3ffff ioport:e000(size=256) memory:c0000-dffff

xrandr다시 연결할 때 모니터가 목록에 있다고 가정 합니까? xrandr설정이 원하는대로 출력을 게시 할 수 있습니까? 다시 연결하면 자동으로 쉽게 복원 할 수 있습니다. 또한 xrandr" 수동 트리거 " 명령 은 무엇입니까 ?
Jacob Vlijm

게시물을 업데이트했습니다. 그러나 구성을 자동으로 복원하고 싶지는 않습니다. 처음에는 엉망이되지 않기를 바랍니다.
Grumbel

문제를 해결하는 그래픽 드라이버를 찾지 않으면 도달하지 못할 가능성이 높습니다. 이 문제는 연결시 드라이버와 화면 간의 통신이 실패하여 기본값으로 이동하기 때문에 발생합니다. 바로 가기 키 또는 자동으로 어떤 종류의 작업이 필요합니다. 선택, 더러워 지거나 전혀 고치지 않음 :)
Jacob Vlijm

@Grumbel, sudo lshw -c display질문에 대한 결과를 추가 할 수 있습니까 ? 엔비디아가 있다면 askubuntu.com/q/858798/26246
user.dz

답변:


2

이것은 최종 답변이 아니라 올바른 방향을 가리키는 포인터입니다. XFCE에서 xfsettingsd프로그램은 RRScreenChangeNotify이벤트 처리 및 모드 스위치 트리거를 담당하며 , 정확한 기능은 xfce4-settings-4.12.0/xfsettingsd/displays.c77 행 에서 찾을 수 있으며이 기능을 호출 xfce_displays_helper_screen_on_event합니다. 이 기능을 비활성화하면 새 모니터가 연결될 때 더 이상 모드가 변경되지 않습니다.

디버그 정보는 다음을 통해 얻을 수 있습니다.

DISPLAY=:0 XFSETTINGSD_DEBUG=512 xfsettingsd --replace --no-daemon

1
제안 해 주셔서 감사합니다. RRScreenChangeNotify 처리를 비활성화했으며 설치가 중단 된 직후 모니터가 깨어나는 문제를 포함하여 설정에서 많은 문제가 해결되었습니다.
Jim Paris

0

다른 계피와 그놈의 경우 여기 에서 해결책을 찾을 수 있습니다 .

시나몬:

gsettings set org.cinnamon.settings-daemon.plugins.xrandr active false

금언:

gsettings set org.gnome.settings-daemon.plugins.xrandr active false
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.