Jak wyłączyć automatyczną konfigurację monitora?


14

Używam Ubuntu 16.04 (gałąź dewelopera), XFCE jako środowisko pulpitu.

Mój komputer jest podłączony do dwóch monitorów. Jeden przez zwykły kabel VGA, a drugi jest podłączony do przełącznika HDMI. Ta konfiguracja działa dobrze, ale za każdym razem, gdy tymczasowo zmieniam przełącznik HDMI na inne połączenie HDMI, Xorg wykrywa, że ​​monitor został odłączony, i ponownie konfiguruje Xorg, aby używał tylko jednego monitora, przełączenie przełącznika HDMI z powrotem na komputer nie powoduje ponownej aktywacji podwójnego monitora użyj albo, muszę ręcznie uruchomić to za pomocąxrandr

Jak mogę zapobiec tego rodzaju automatycznemu wykrywaniu i rekonfiguracji monitora? Chciałbym mieć możliwość przełączania przełącznika HDMI bez komputera.

Polecenie użyte do przywrócenia konfiguracji wielu monitorów:

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

wyjście xrandr przy regularnym użyciu:

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  

wyjście xrandr, gdy przełącznik HDMI jest przełączony na inne połączenie:

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  

Próbowałem jeszcze kilku rzeczy:

Po podłączeniu monitora znajdź modeline:

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

Następnie przy odłączonym monitorze:

$ 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

To pozwala mi aktywować wyświetlacz po rozłączeniu, co w innym przypadku zawiodłoby z powodu nieistniejącego trybu 1920x1080. Problem jednak pozostaje, jeśli przełączę przełącznik HDMI, wyświetlacz zostanie wyłączony, nawet jeśli ustawię go w trybie niestandardowym.

Oto zdarzenia udev podczas odłączania wyświetlacza za pomocą przełącznika HDMI:

$ 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

Oto zdarzenia udev podczas ponownego włączania wyświetlacza za pomocą przełącznika HDMI:

$ 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

Zakładam, że monitor jest wymieniony xrandrpo ponownym podłączeniu? Czy możesz opublikować dane wyjściowe, xrandrgdy konfiguracja jest taka, jak chcesz? możemy wtedy łatwo przywrócić go automatycznie po ponownym połączeniu. Jakie jest Twoje xrandrpolecenie „ ręcznego wyzwolenia ”.
Jacob Vlijm

Zaktualizowano wpis. Jednak nie chcę po prostu automatycznie przywracać konfiguracji, chcę, aby przede wszystkim jej nie pomieszano.
Grumbel,

Najprawdopodobniej jest to poza zasięgiem, chyba że znajdziesz sterownik grafiki, który to naprawia. Problem jest spowodowany tym, że komunikacja między sterownikiem a ekranem nie udaje się podczas połączenia, przeskakując do wartości domyślnych. Potrzebujesz jakiegoś działania, albo za pomocą klawisza skrótu, albo automatycznie. Wybierz, napraw to brudne lub wcale :)
Jacob Vlijm

@ Grumbel, Czy możesz dodać wynik sudo lshw -c displaydo pytania. Jeśli masz NVIDIA, wypróbuj odpowiedź w askubuntu.com/q/858798/26246
user.dz

Odpowiedzi:


2

To nie jest ostateczna odpowiedź, tylko wskaźnik we właściwym kierunku. W XFCE xfsettingsdprogram jest odpowiedzialny za obsługę RRScreenChangeNotifyzdarzenia i wyzwolenie przełącznika trybu, dokładna funkcja znajduje się w xfce4-settings-4.12.0/xfsettingsd/displays.clinii 77, funkcja jest wywoływana xfce_displays_helper_screen_on_event. Wyłączenie tej funkcji sprawi, że tryb nie będzie się zmieniać po podłączeniu nowego monitora.

Informacje debugowania można uzyskać za pomocą:

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

1
Dzieki za sugestie. Wyłączyłem obsługę RRScreenChangeNotify i naprawiłem wiele problemów w mojej konfiguracji, w tym problemy, w których monitory budzą się natychmiast po zawieszeniu.
Jim Paris,

0

W przypadku innych cynamonów i gnomów rozwiązanie można znaleźć tutaj :

Cynamon:

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

Gnom:

gsettings set org.gnome.settings-daemon.plugins.xrandr active false
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.