Настройка дисплеев xrandr'ом
Вступление
Для ноутбуков, иметь внешний видеовыход - привычное дело. И большинство видеокарт для настольных систем тоже имеют как минимум два. Для эффективного использования более одного монитора можно изменить параметры для каждого по отдельности.
Мой случай
Есть ноутбук с VGA-выходом. Дома стоит монитор, который может 1680х1050@60Hz, а на работе 1280х1024@72Hz. По умолчанию, xorg запускался, стараясь вывести сигнал на все возможные выходы. При этом драйвер radeon искал компромисс между разными разрешениями мониторов и экрана ноутбука. И если один из них работал только в режиме 1024х768, то остальные получали такую же картинку. Поиск в Интернет подсказал использовать xrandr для настройки.
Начальные условия
- 01:05.0 VGA compatible controller [0300]: ATI Technologies Inc RS690M [Radeon X1200 Series] [1002:791f]
- xorg-server-1.5.1-alt2
- xorg-drv-radeon-6.9.0-alt3
- графический режим запускается хотя бы на одном мониторе
Реализация
Заставить xorg скриптом переключать к нужному видеовыходу картинку максимального разрешения. При этом приходится отключать другой видеовыход, чтоб драйвер не пробовал искать компромисс.
TODO: Привязать скрипты к функциональным кнопкам.
Для начала я определил, как называются видеовыходы (обозначены полужирным шрифтом):
#xrandr Screen 0: minimum 320 x 200, current 1280 x 800, maximum 1680 x 1600 VGA-0 connected (normal left inverted right x axis y axis) 1680x1050 60.0 + 60.0 <... cut ...> 720x400 70.1 LVDS connected 1280x800+0+0 (normal left inverted right x axis y axis) 0mm x 0mm 1280x800 60.0*+ <... cut ...> 640x480 59.9 HDMI-0 disconnected (normal left inverted right x axis y axis)
Затем был создан первый скрипт, который:
- Отключал экран ноутбука (LVDS)
- Переключал монитор (VGA-0) в наилучший режим
#!/bin/bash xrandr --output LVDS --off xrandr --output VGA-0 --auto
Второй скрипт, позволял переключаться обратно на экран ноутбука:
#!/bin/bash xrandr --output VGA-0 --off xrandr --output LVDS --auto
Третий, включал оба выхода ( VGA-0 и LVDS ) в режиме дублирования, при этом использовалось "минимальное общее" разрешение
#!/bin/bash xrandr --output LVDS --off xrandr --output VGA-0 --off xrandr --output LVDS --mode 1024x768 xrandr --output VGA-0 --mode 1024x768
TODO: Найти устройство с HDMI и попробовать выводить сигнал на него.