четверг, 30 января 2014 г.

Linux устанавливаем нужное разрешение экрана

Если быстро погуглить, то стандартные команды для изменения разрешения монитора на то, которого нет в перечне, но точно поддерживается, это:
xrandr
смотрим что в перечне есть, если нужное есть, то
xrandr --output CRT2 --mode 1680x1050
где CRT2 меняете на своё устройство вывода
Но обычно нужного разрешения нет, а надо добавить.
Тогда запускаем для LCD с 2004 года выпуска:
cvt 1680 1050 60
где 1680x1050 нужное нам разрешение 60 частота, или для ЭЛТ:
gtf 1680 1050 60
Основное отличие между cvt и gtf в частоте (для ЭЛТ обычно rate больше 60, а остальное технические отличия которые гуглятся). Получаем Modeline, который можно добавить к перечню поддерживаемых разрешений:
xrandr --newmode "1680x1050_60.00"  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync
И заканчиваем установкой нужного разрешения и добавлением скрипта в автозапуск:
xrandr --output CRT2 --mode 1680x1050_60.00
Но не всегда так гладко, бывают и ошибки.

По тексту ошибки понять причину не смог. Но когда искал, вышел на параметр Virtual в xorg.conf. В моем случая стоит старая видеокарта ATI, драйвера для которой не обновляют. Мне нужно установить 1680x1050 для монитора NEC, а такого разрешения в перечне нет. Максимальное разрешение которое доступно для настройки стандартными средствами системы 1600x1200, а xrandr выдает такое Screen 0: minimum 320 x 200, current 1440 x 900, maximum 1600 x 1600. Далее нашел как увеличить максимум с 1600x1600. В /etc/X11/xorg.conf  в секции Screen подсекции Display надо добавить строку Virtual 3200 1600
Section "Screen"
Identifier "Default Screen"
DefaultDepth 24
SubSection "Display"
Depth 24
Virtual 3200 1600
EndSubSection
EndSection
После внесения изменений и перезагрузки максимум увеличился на указанные значения. С помощью вышеперечисленных команд xrandr разрешение добавилось успешно и его можно было установить. Больше информации можно найти здесь. Про Virtual смотрим секцию "Setting resolution changes in xorg.conf -- resolution lower than expected" , как добавить в постоянную загрузку "Setting xrandr changes persistently". И еще здесь интересное есть.
   Про использование xrandr здесь. Из статьи, есть LCD монитор 1280x800 и CRT1 телевизор 1280x768. Дублирование изображения монитора на телевизор с меньшей высотой (800 - 768 = 32 пикселя разница):
xrandr --output CRT1 --mode 1280x768 --pos 0x16
--pos 0x16 - обрезает 16 пикселей сверху и снизу
Расширение изображения рабочего стола с монитора LCD 800 на телевизор CRT1 768 по вертикали (800 + 768 = 1568): 
xrandr --fb 1280x1568 --output CRT1 --mode 1280x768 --pos 0x800
Отключить устройство:
xrandr --output CRT1 --off
Если приложение изменило разрешение и не вернуло назад, возврат на максимально допустимое:
xrandr -s 0
xrandr -s 1 — соответственно второе разрешение и т.д.

Комментариев нет:

Отправка комментария