7
июнь
2021
11:52

Как сменить разрешение дисплея из командной строки Linux

7 июнь 2021 11:52

Если разрешение изображения на экране не соответствует паспортному разрешению дисплея, можно изменить разрешение при помощи командной строки.

На работе на ПК с операционной системой Linux Mint 19.3 имею широкоформатный дисплей с разрешением 1366 на 768 пикселей. Однажды загрузил компьютер с отключенным дисплеем и установилось разрешение 1024 на 768. Каким-то образом, это разрешение запомнилось и изображение стало растянутым.

Запуск диагностики основного дисплея:

xrandr -d :0 -q

Screen 0: minimum 8 x 8, current 1024 x 768, maximum 32767 x 32767
VGA1 connected primary 1024x768+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
1024x768 60.00*
800x600 60.32 56.25
848x480 60.00
640x480 59.94

Как видно, разрешение 1024x768 выбрано системой, помечено символом звёздочка*.

Решение проблемы

  1. Узнать модель дисплея (наклейка на задней крышке) - по модели установить максимально поддерживаемое разрешение.
    В данном случае 1366 на 768 px при частоте обновления 60 Гц.

  2. Выполнить команду cvt с параметрами, соответствующими разрешению и частоте обновления:

cvt 1366 768 60

В моём случае было выведено следующее:

# 1368x768 59.88 Hz (CVT) hsync: 47.79 kHz; pclk: 85.25 MHz
Modeline "1368x768_60.00" 85.25 1368 1440 1576 1784 768 771 781 798 -hsync +vsync

  1. Надо взять строчку и подать на вход xrandr, чтобы создать новый режим:

    xrandr --newmode "1368x768_60.00"   85.25  1368 1440 1576 1784  768 771 781 798 -hsync +vsync

  2. Узнать название дисплея - выводится командой xrandr:

    xrandr -d :0 -q

в моём случае VGA1

  1. Добавить дисплею новый, ранее созданный режим:

xrandr --addmode VGA1 1368x768_60.00

  1. Наконец, выполнил команду для изменения разрешение изображения (перевода дисплея в новый режим "1368x768_60.00"):

sudo xrandr --output VGA1 --mode 1368x768_60.00

Дисплей может мигать и погаснуть. Если все пошло хорошо, изображение станет выбранного разрешения.

Если нужно, выполнить восстановление разрешения на 1024x768:
несколько раз нажимаем Enter и вводим в командную строку следующую команду

sudo xrandr --output VGA1 --mode 1024x768

Если нужно, повторяем смену режима дисплея:

xrandr --output VGA1 --mode 1368x768_60.00

нажать "Enter"

Ввод пароля sudo каждый раз не требуется.


Дополнение для монитора с разрешением 1280x1024:

cvt 1280 1024 60
xrandr --newmode "1280x1024_60.00"   109.00  1280 1368 1496 1712  1024 1027 1034 1063 -hsync +vsync
xrandr --addmode VGA-1 1280x1024_60.00
sudo xrandr --output VGA-1 --mode 1280x1024_60.00

Дополнение от 29.12.2023: Для установки разрешения дисплеев и созранения shell - скрипта для смены разрешений можно использовать программу arandr:
sudo apt install arandr
arandr

Постоянная установка разрешения дисплея при входе в Linux

Я прописал следующие три команды в исполнимый файл.

Вначале создал пустой файл в домашней папке

nano resolution.sh

И вставил в него 4 строки текста:

#!/bin/bash
xrandr --newmode "1368x768_60" 85.25 1368 1440 1576 1784 768 771 781 798 -hsync +vsync
xrandr --addmode VGA1 1368x768_60
xrandr --output VGA1 --mode 1368x768_60

Сохранил файл.

Такой же файл, но для монитора 1280x1024 прилагаю:
resolution.sh.zip

Дал права - выполнение только от текущего пользователя (владельца).

sudo chmod 700 resolution.sh

Добавил в автозагрузку (у меня оболочка LXQT):
Пуск - Параметры - Настройки LXQT - Настройки сеанса - Autostart - Add
sh /home/vladimir/resolution.sh.
Подтвердил и закрыл окно.

Другой вариант - добавить команды в файл в домашнем каталоге пользователя .xinitrc:

export GNOME_SHELL_SESSION_MODE=ubuntu
export XDG_CURRENT_DESKTOP=ubuntu:GNOME
export XDG_DATA_DIRS=/usr/share/openbox:/usr/local/share/:/usr/share/


xrandr --newmode "1280x1024_60.00" 109.00 1280 1368 1496 1712 1024 1027 1034 1063 -hsync +vsync
xrandr --addmode VGA-1 1280x1024_60.00
xrandr --output VGA-1 --mode 1280x1024_60.00

Вышел и вошел в систему, чтобы проверить. При входе дисплей мигнул и правильное разрешение дисплея применилось.
Также, командный файл resolution.sh можно запускать из окна Терминала.

Случай HDMI подключения и нескольких мониторов

В отличие от рассмотренного выше подключения через VGA-кабель, при использовании нескольких мониторов, подключенных через интерфейсы HDMI, синтаксис команды другой:

xrandr --newmode DVI-I-1 mode_name1 ...
xrandr --newmode DVI-I-2 mode_name2 ...
xrandr --addmode DVI-I-1 mode_name1
xrandr --addmode DVI-I-2 mode_name2
xrandr --output DVI-I-1 --mode mode_name1
xrandr --output DVI-I-2 --mode mode_name1

Названия интерфейсов мониторов можно получить при помощи той же команды

xrandr -q

Добавление: командные файлы shell для изменения разрешения, сразу для нескольких мониторов, можно подготовить с помощью графической утилиты arandr (установка: sudo apt install arandr). Название arandr расшифровывает как "Another XRandR GUI" (GUI-утилита установки XRandR).

Добавление: для окружения рабочего стола LXQT (в ОС Lubuntu, спине Fedora Linux или в установленная самостоятельно оболочке) - есть графическая утилита lxqt-config-monitor доступная в меню "Параметры" - "Настройки LXQT" - "Настройки монитора". С её помощью можно менять разрешение и частоты обновления экранов мониторов и сохранять настройки в "профиль" (файл настройки). Однако, профили разрешения экрана в LXQT не подлежат редактированию из командной строки. Утилита **lxqt-config-monitor** модифицирует текстовые файлы:
./.config/autostart/lxqt-config-monitor-autostart.desktop
./.config/lxqt/lxqt-config-monitor.conf

Перечисленные здесь файлы настроек используются при запуске сессии LxQT из файла ~/.xinitrc , из которого вызывается скрипт exec startlxqt.


Источники:



Похожие публикации