У меня есть три настройки монитора (xorg.conf, сгенерированный с помощью amdcccle: http://pastebin.com/gWSVEyLa), работающий на Arch Linux с Xmonad в качестве моего оконного менеджера. Физически есть HDTV слева, хороший монитор Dell в центре и повернутый монитор справа. Поскольку мой HDTV имеет только один вход HDMI, я использую переключатель 4 входа, 2 выхода с некоторыми другими устройствами. Мой HDTV не всегда подключен, что приводит к отключению этого раздела моего виртуального рабочего стола. Это вызывает много неприятностей:
- Раздражающее мерцание экрана из-за события горячего подключения драйвера (которое в основном выполняется xrandr --auto).
- Изменяется физический порядок экрана (hdtv становится третьим монитором вместо первого), из-за чего мои сочетания клавиш для фокусировки на экране оказываются неверными. Я сделал это не проблема с моей конфигурации xmonad, но привязки все еще изменяются, когда обнаружены только два монитора.
- Если я запускаю свой компьютер без подключенного HDTV, этот раздел моего виртуального рабочего стола будет недоступен до тех пор, пока он не подключится к событию hotplug или я не запустлю xrandr, чтобы включить его.
- Окна из рабочей области на отключенном мониторе перемещаются в другие рабочие области на видимых мониторах. По сути, это означает, что любые окна, которые отображались на моем HDTV, будут отображаться случайным образом, что бессмысленно из-за того, как Xmonad обрабатывает рабочие пространства.
- Я не могу перевести один или два монитора в режим ожидания dpms или выключить дисплей вручную с помощью
xrandr --off
потому что остальные будут в шоке . Например, если я просто смотрю что-то на своем телевизоре, я не обязательно хочу, чтобы другие два монитора были включены, но я хочу, чтобы их положение окна оставалось нетронутым.
Когда я переключаю входы на переключателе HDMI или включаю / выключаю его, или физически отсоединяю кабели, мой видеодрайвер интерпретирует это как отключение моего монитора, и он удаляется с моего виртуального рабочего стола. Я хочу, чтобы X всегда действовал так, как если бы все эти три монитора были подключены, а не отвечал на события горячего подключения монитора. Здорово, что Linux способен работать с полностью автоматической конфигурацией xorg, но я хочу эту точную настройку все время, пока не поменяю свое оборудование. События горячего подключения выглядят так в моих журналах xorg:
When disconnected:
[ 1684.459] (II) fglrx(0): Hot-plug event occurs on device: 1:0:0
[ 1684.459] (II) fglrx(0): EDID vendor "DEL", prod id 40993
+-- 3 lines: [ 1684.459] (II) fglrx(0): Using hsync ranges from config file-----------------------------------------------------------------------------------------------------
+-- 11 lines: [ 1684.459] (II) fglrx(0): Modeline "1600x1200"x0.0 162.00 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync (75.0 kHz eP)----------------------------------
[ 1684.468] (II) fglrx(0): xdl_xs113_atiddxDisplayScreenEnableDisplays
[ 1684.468] (II) fglrx(0): User Preference Output DFP1 using refresh rate 60.0 Hz.
[ 1684.537] (II) fglrx(0): User Preference Output DFP10 using refresh rate 60.0 Hz.
When reconnected:
[ 1694.077] (II) fglrx(0): Hot-plug event occurs on device: 1:0:0
[ 1694.210] (II) fglrx(0): EDID vendor "DEL", prod id 40993
+-- 3 lines: [ 1694.210] (II) fglrx(0): Using hsync ranges from config file-----------------------------------------------------------------------------------------------------
+-- 9 lines: [ 1694.210] (II) fglrx(0): Modeline "1600x1200"x0.0 162.00 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync (75.0 kHz eP)----------------------------------
[ 1694.219] (II) fglrx(0): xdl_xs113_atiddxDisplayScreenEnableDisplays
[ 1694.219] (II) fglrx(0): User Preference Output DFP1 using refresh rate 60.0 Hz.
[ 1694.288] (II) fglrx(0): User Preference Output DFP9 using refresh rate 60.0 Hz.
[ 1694.359] (II) fglrx(0): User Preference Output DFP10 using refresh rate 60.0 Hz.
Меня действительно не волнует горячее подключение, потому что я использую Xmonad и предпочел бы всегда выводить данные на эти три устройства, независимо от того, считаются они подключенными или нет. Возможно, есть какой-то способ настроить видеодрайвер, чтобы он делал то, что я хочу, но я не уверен, что опция существует и пока не нашла полезной информации, поэтому я спрашиваю здесь. Если бы это работало правильно, выходные данные этих двух команд были бы идентичны и не вызывали бы ничего визуально кроме выключения / включения HDTV:
$ xrandr | grep 'DFP.* connected'
DFP1 connected 2560x1600+1920+0 (normal left inverted right x axis y axis) 641mm x 401mm
DFP9 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 708mm x 398mm
DFP10 connected 1200x1600+4480+0 left (normal left inverted right x axis y axis) 367mm x 275mm
$ xrandr --verbose --output 'DFP9' --off
screen 0: 3760x1600 994x423 mm 96.08dpi
crtc 0: 2560x1600 60.0 +0+0 "DFP1"
crtc 2: 1600x1200 60.0 +2560+0 "DFP10"
$ xrandr | grep 'DFP.* connected'
DFP1 connected 2560x1600+0+0 (normal left inverted right x axis y axis) 641mm x 401mm
DFP9 connected (normal left inverted right x axis y axis)
DFP10 connected 1200x1600+2560+0 left (normal left inverted right x axis y axis) 367mm x 275mm
$ xrandr --verbose --output 'DFP9' --preferred --pos 0x0 --output 'DFP1' --preferred --pos 1920x0 --output DFP10 --preferred --pos 4480x0
screen 0: 5680x1600 1501x423 mm 96.08dpi
crtc 0: 2560x1600 60.0 +1920+0 "DFP1"
crtc 1: 1920x1080 60.0 +0+0 "DFP9"
crtc 2: 1600x1200 60.0 +4480+0 "DFP10"
$ xrandr | grep 'DFP.* connected'
DFP1 connected 2560x1600+1920+0 (normal left inverted right x axis y axis) 641mm x 401mm
DFP9 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 708mm x 398mm
DFP10 connected 1200x1600+4480+0 left (normal left inverted right x axis y axis) 367mm x 275mm