Làm thế nào để tắt cấu hình tự động màn hình?


14

Tôi đang chạy Ubuntu 16.04 (chi nhánh dev), XFCE làm môi trường máy tính để bàn.

Máy tính của tôi được kết nối với hai màn hình. Một qua cáp VGA thông thường và cái còn lại được kết nối với Bộ chuyển đổi HDMI. Thiết lập đó hoạt động tốt, nhưng mỗi khi tôi tạm thời thay đổi Bộ chuyển đổi HDMI sang một kết nối HDMI khác, Xorg phát hiện ra rằng màn hình đã bị ngắt kết nối và cấu hình lại Xorg để chỉ sử dụng một màn hình duy nhất, chuyển lại Bộ chuyển đổi HDMI sang máy tính của tôi không kích hoạt lại màn hình kép sử dụng một trong hai, tôi phải tự kích hoạt nó vớixrandr

Làm thế nào tôi có thể ngăn chặn loại phát hiện và cấu hình lại màn hình tự động này xảy ra? Tôi muốn có thể chuyển đổi Bộ chuyển đổi HDMI mà không cần máy tính làm bất cứ điều gì.

Lệnh được sử dụng để khôi phục thiết lập đa màn hình:

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

đầu ra xrandr khi sử dụng thường xuyên:

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  

đầu ra xrandr khi bộ chuyển đổi HDMI được chuyển sang một kết nối khác:

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  

Một số điều nữa tôi đã thử:

Với màn hình được kết nối, tìm ra modeline:

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

Sau đó, với màn hình bị ngắt kết nối:

$ 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

Điều này cho phép tôi kích hoạt màn hình khi bị ngắt kết nối, điều này sẽ thất bại do chế độ không tồn tại 1920x1080. Tuy nhiên, vấn đề vẫn còn, nếu tôi chuyển đổi Bộ chuyển đổi HDMI, màn hình sẽ bị tắt, ngay cả khi tôi đặt nó ở chế độ tùy chỉnh.

Đây là các sự kiện udev khi ngắt kết nối màn hình với Bộ chuyển đổi 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

Đây là các sự kiện udev khi bật lại màn hình bằng Bộ chuyển đổi 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

Tôi giả sử màn hình được liệt kê trong xrandrkhi kết nối lại? Bạn có thể đăng kết quả đầu ra xrandrkhi thiết lập như bạn muốn không? sau đó chúng ta có thể dễ dàng làm cho nó khôi phục tự động khi kết nối lại. Ngoài ra, xrandrlệnh của bạn để " kích hoạt thủ công " là gì.
Jacob Vlijm

Cập nhật bài viết. Tuy nhiên tôi không muốn tự động khôi phục cấu hình, tôi muốn nó không bị rối ở nơi đầu tiên.
Grumbel

Điều đó rất có thể nằm ngoài tầm với, trừ khi bạn tìm thấy trình điều khiển đồ họa sửa nó. Vấn đề được gây ra bởi thực tế là giao tiếp giữa trình điều khiển và màn hình của bạn không kết nối được, nhảy đến mặc định. Bạn cần một số loại hành động, bằng phím tắt hoặc tự động. Hãy lựa chọn, sửa nó bẩn hay không hoàn toàn :)
Jacob Vlijm

@Grumbel, bạn có thể thêm đầu ra của sudo lshw -c displaycâu hỏi không. Nếu bạn có nvidia, hãy thử câu trả lời trong Askubfox.com/q/858798/26246
user.dz

Câu trả lời:


2

Đây không phải là một câu trả lời cuối cùng, chỉ là một con trỏ đi đúng hướng. Trên XFCE, xfsettingsdchương trình chịu trách nhiệm xử lý RRScreenChangeNotifysự kiện và kích hoạt công tắc chế độ, chức năng chính xác có thể được tìm thấy trong xfce4-settings-4.12.0/xfsettingsd/displays.cdòng 77, chức năng được gọi xfce_displays_helper_screen_on_event. Vô hiệu hóa chức năng sẽ làm cho chế độ không còn thay đổi khi màn hình mới kết nối.

Thông tin gỡ lỗi có thể được lấy bằng:

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

1
Cám ơn vì sự gợi ý. Tôi đã vô hiệu hóa việc xử lý RRScreenChangeNotify và nó đã khắc phục rất nhiều vấn đề trong thiết lập của tôi, bao gồm cả các sự cố trong đó màn hình sẽ thức dậy ngay sau khi tạm dừng.
Jim Paris

0

Đối với Cinnamon và Gnome khác, một giải pháp có thể được tìm thấy ở đây :

Quế:

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

Gnome:

gsettings set org.gnome.settings-daemon.plugins.xrandr active false
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.