Если после установки драйвера NVIDIA твой монитор остался в 1024×768, а в списке режимов нет нужного 2560×1440, — тебе поможет xrandr. Он пересобирает вывод X-сервера на лету: меняет разрешение, частоту, поворот, расположение экранов и масштаб. Ниже — рабочие команды для типичных сценариев, включая нестандартные разрешения, телевизоры с overscan и восстановление настроек после перезагрузки.
Начинай всегда с xrandr --query (сокращённо -q) — команда печатает дерево: под именем интерфейса (DP-1, HDMI-1-1, eDP-1, DP-2) перечислены доступные разрешения с частотами, а рядом с текущей помечено *.
xrandr -q
DP-1 connected primary 2560x1440+0+0 (normal left inverted right x axis y axis) 597mm x 336mm
2560x1440 60.00*+ 59.93
1920x1080 60.00
1280x1024 75.02
HDMI-1-1 disconnected (normal left inverted right x axis y axis)
eDP-1 connected 1920x1080+2560+0 (normal left inverted right x axis y axis) 344mm x 194mm
1920x1080 60.00*
Имя вывода нужно указывать в любой команде --output, поэтому переименовывай его в разы, а не копируй из интерфейса. У встроенной панели ноутбука префикс eDP-, у DisplayPort — DP-, у HDMI — HDMI-1-1 или HDMI-1-2 (второй индекс появляется при двух портах). Если нужен ноутбук, где встроенный экран — основной, а внешний справа, добавь первичный экран и привязку:
xrandr --output eDP-1 --primary --right-of HDMI-1-1
Ключи --left-of, --right-of, --above, --below, --same-as задают взаимное расположение. --same-as HDMI-1-1 дублирует картинку на два экрана — удобно для проектора.
Базовый набор из трёх опций: --output (имя вывода), --mode (разрешение), --rate (частота в герцах).
xrandr --output DP-1 --mode 1920x1080 --rate 120
Если указанной частоты нет в списке режимов, xrandr вернёт ошибку BadMatch или invalid mode и оставит экран как был. Частота необязательна: без --rate xrandr возьмёт максимальную для этого разрешения. Чтобы временно отключить вывод, укажи --auto вместо --mode, а чтобы выключить совсем — --off.
Многопользовательский ноутбук часто поднимает два разных X-сервера. Если xrandr ругается на Server is active и просит DISPLAY, значит команда ушла не в тот сокет — проверь переменную окружения:
echo $DISPLAY
xrandr -q | head -5
Режимов вроде 1680×1050 или 1600×1024 в списке часто нет, хотя матрица их поддерживает. Считай режим утилитой cvt (пакет xorg-x11-apps) и добавь его двумя командами: --newmode создаёт модель, --addmode регистрирует её в выводе.
cvt 1680 1050 60
# Modeline "1680x1050_60.00" 146.25 1680 1784 1968 2256 1050 1053 1058 1068 -hsync +vsync
xrandr --newmode "1680x1050_60.00" 146.25 1680 1784 1968 2256 1050 1053 1058 1068 -hsync +vsync
xrandr --addmode DP-1 "1680x1050_60.00"
xrandr --output DP-1 --mode "1680x1050_60.00"
Первое число после имени — тактовая частота в МГц, дальше идут шесть чисел тайминга и синхросигнал. Всё, что после Modeline, копируется дословно. Режим живёт только в текущей сессии: чтобы он появлялся после каждого входа, допиши обе строки в ~/.xrandr (для файла нужен скрипт на bash) или в ~/.xprofile, а сам файл подключи в ~/.xinitrc:
# в ~/.xinitrc, перед запуском оконного менеджра
[ -f "$HOME/.xprofile" ] && . "$HOME/.xprofile"
Если cvt не собирается, а Arch-система не ставит пакеты, отсчитай значения вручную — формула простая, но ошибиться легко, и тогда картинка рассыплется на артефакты.
Поворот делается одной опцией: --rotate принимает normal, left, right, inverted.
xrandr --output eDP-1 --rotate left
Чтобы вернуть альбомную ориентацию, достаточно --rotate normal — это же значение, которое xrandr показывает в квадратных скобках в выводе -q.
Портретный режим удобен для чтения, но тачскрин продолжит «чувствовать» координаты в альбомной сетке, и нажатия будут уезжать на соседний край. У тачскрина есть собственный --transform с матрицей 2×2 в шестизначном формате, где первые два числа задают масштаб по осям, а два последних — сдвиг в шестнадцатых долях экрана:
# повернуть ввод на 90° влево
xrandr --output eDP-1 --input eDP-1 --transform 0 -1 1 0 0 0
Ориентацию удобнее посчитать в интерактивном режиме: запусти xinput list, найди ID тачскрина и открой xinput set-prop <ID> "Coordinate Transformation Matrix" 0 -1 1 0 0 0. Подробнее про логику матриц — в документации ArchWiki по Xrandr.
У ТВ и projector часто включён overscan: края кадра уходят за пределы панели, и по периметру появляется чёрная рамка. Настройка называется underscan, и в xrandr её делает --scale, который принимает дробь — во сколько раз кадр меньше рабочей области.
xrandr --output HDMI-1-1 --mode 1920x1080 --rate 60 --scale 1.05x1.05
Значение меньше единицы (например 0.95x1) увеличивает картинку и срезает чёрные поля, значение больше единицы добавляет поля. Отдельная опция --fb задаёт размер фреймбуфера и применяется к настольному режиму сжатия в X-сервере: --fb 1920x1080.
На NVIDIA --scale ведёт себя капризно: картинка может разъезжаться после смены режима, а с включённым ForceFullCompositionPipeline underscan иногда работает точнее. Драйвер 570 умеет работать с 240-герцевыми панелями, о нём — в отдельном материале про мониторы 240 Гц.
Самая частая жалоба на свежей установке: xrandr показывает вывод, но список режимов в нём беднее, чем в nvidia-settings. Причина в том, что список мета-режимов формируется на старте X-сервера из MetaModes в конфиге, и без записи в секцию Screen перечень пустеет. Лечится пересборкой мета-режима:
nvidia-xconfig --xconfigorg > /etc/X11/xorg.conf
nvidia-xconfig
После перезагрузки проверь, что режимы появились. Если вместо полного списка xrandr показывает единственный 1920x1080 или 1024x768, выход лежит в ветке, а в самой X-конфигурации проверь секцию Screen — в ней должны совпадать Virtual и DefaultDepth.
Второй сценарий: разрешение применяется, но чёрный экран, иконка пропала, картинка мигает. Откатись на предыдущий режим горячими клавишами Ctrl+Alt+F3 в tty и выполни команду вручную. Третий: --rate вызывает BadMatch — сначала попробуй --mode без частоты, а затем с --preferred для разъяснения, какой режим X считает предпочтительным.
Правильный порядок: сохранить модель, потом --newmode и --addmode, и только в конце переключение --output. Порядок важен — попытка включить несуществующий --mode завершится ошибкой, и весь скрипт упадёт.
Добавь в ~/.xprofile (исполняется bash при входе в сессию):
xrandr --newmode "2560x1440_75.00" 312.25 2560 2680 2880 2880 1440 1444 1448 1481 -hsync +vsync
xrandr --addmode DP-1 "2560x1440_75.00"
xrandr --output DP-1 --mode "2560x1440_75.00" --rate 75
xrandr --output eDP-1 --primary --left-of DP-1
Для ноутбука с док-станцией удобнее завязать настройку на появление интерфейса, а не на вход в систему. Скрипт с проверкой имени вывода подходит как hook-скрипт NetworkManager, который запускает nm-applet при активации проводного профиля, или как правило udev, срабатывающее при подключении HDMI-устройства:
#!/usr/bin/env bash
case "$(xrandr -q | grep ' connected' | grep -o '^[A-Z0-9-]*')" in
*HDMI-1-1*) xrandr --output HDMI-1-1 --mode 1920x1080 --rate 60 --scale 1.05x1.05 ;;
esac
Быстрый способ без терминала — сохранить раскладку в графическом редакторе arandr, получить готовый скрипт и положить его в автозапуск диспетчера сессии. Если команду «съедает» композитор, посмотри логи: в разборе ошибок Xorg с NVIDIA разбираются сообщения, по которым видно, что режим не применился, хотя xrandr отчитался об успехе.
Почему после перезагрузки разрешение снова 1024×768?
Модель живёт в памяти X-сервера. Добавь --newmode и --addmode в ~/.xprofile либо заведи файл ~/.xrandr и подключи его из ~/.xinitrc.
xrandr: Failed to get size of gamma for output default
Вывод default не указывает на реальный интерфейс. Укажи конкретное имя (DP-1, HDMI-1-1) вместо default, и проверь, что не запущено второй X-сервер.
Можно ли менять частоту выше 60 Гц на ноутбучной панели?
Только если панель в списке отдаёт такой режим. Встроенная матрица почти всегда ограничена, и попытка выставить чужой --rate закончится BadMatch — тогда оставляй 60 Гц.
Как откатить всё разом к исходному состоянию?
Выполни xrandr --output DP-1 --auto --rate auto для каждого вывода, а при полном сбросе верни xrandr --output DP-1 --off --output eDP-1 --auto.
Команда отработала, но изображение не изменилось?
Проверь, что окна не перекрыли xrandr в порядке вызова: вызов должен идти после инициализации драйвера видеокарты. Перезапуск графической сессии (startx вместо startplasma/startxfce4) снимает большую часть таких сюрпризов.
--transform и --fb.xorg.conf, мета-режимы, ForceFullCompositionPipeline.xrandr закрывает почти все задачи с разрешением, поворотом, расположением и underscan без правки конфигов на каждый раз. Рабочий порядок всегда один: узнать имя вывода через -q, при нехватке режима посчитать его через cvt, применить --output с --mode и --rate, а затем закрепить цепочку в ~/.xprofile или хуке udev.
Задай вопрос в чате — отвечаем быстро, по делу и без воды.
Комментарии