Все об Arch Linux

Arch Linux будет тем, что вы из него сделаете!

xrandr для NVIDIA: разрешение, поворот, масштаб

Если после установки драйвера 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

Как добавить нестандартное разрешение через cvt?

Режимов вроде 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 не видит режимы или ломает экран?

Самая частая жалоба на свежей установке: 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) снимает большую часть таких сюрпризов.

Полезные ресурсы

Заключение

xrandr закрывает почти все задачи с разрешением, поворотом, расположением и underscan без правки конфигов на каждый раз. Рабочий порядок всегда один: узнать имя вывода через -q, при нехватке режима посчитать его через cvt, применить --output с --mode и --rate, а затем закрепить цепочку в ~/.xprofile или хуке udev.



Не получилось? Поможем настроить

Задай вопрос в чате — отвечаем быстро, по делу и без воды.

Читайте также

Комментарии

Загрузка…

Откроется GitHub: создайте новый issue с вашим комментарием (кнопка «Submit new issue»). После отправки обновите эту страницу — комментарий появится ниже.

Telegram Max