xrandr (Русский)

Состояние перевода:
На этой странице представлен перевод статьи
xrandr
. Дата последней синхронизации: 2 июня 2025. Вы можете
помочь
синхронизировать перевод, если в английской версии произошли
изменения
.
Ссылки по теме
Xorg (Русский)
xrandr(1)
— это официальная утилита для работы с
X11
-расширением
RandR
(
Resize and Rotate
). Она позволяет задать размер, ориентацию или отражение выходов, связанных с экраном X11. Для получения информации о настройке вывода изображения сразу на несколько мониторов смотрите статью
Multihead
.
Установка
Установите
пакет
xorg-xrandr
.
Графические фронтенды
ARandR
— Простой визуальный фронтенд для XRandR. Положения мониторов относительно друг друга отображаются графически и могут быть изменены перетаскиванием.
https://christian.amsuess.com/tools/arandr/
||
arandr
LXRandR
— Инструмент для управления разрешением экрана и положением монитора для LXDE. Также работает в
Openbox
.
https://github.com/lxde/lxrandr
|| GTK 2:
lxrandr
, GTK 3:
lxrandr-gtk3
[
ссылка недействительна
: replaced by
lxrandr
]
Консольные фронтенды
autorandr
— Автоматический выбор конфигурации дисплея в зависимости от подключенных устройств.
https://github.com/phillipberndt/autorandr
||
autorandr
xlayoutdisplay
— Обнаружение и упорядочивание дисплеев. Обрабатывает: состояние крышки ноутбука, максимальные доступные частоты обновления, вычисление и применение фактического DPI. Лучше всего использовать в .xinitrc, тогда его можно будет вызывать при подключении/отключении мониторов или закрытии крышки ноутбука.
https://github.com/alex-courtis/xlayoutdisplay
||
xlayoutdisplay
AUR
Тестирование настроек
Если запустить команду
xrandr
без дополнительных параметров, то она покажет все доступные видеовыходы (
VGA-1
,
HDMI-1
и.т.д.) и выведет доступные видеорежимы, отметив текущий символом
*
, а рекомендуемый — символом
+
.
xrandr
Screen 0: minimum 320 x 200, current 3200 x 1080, maximum 8192 x 8192
VGA-1 disconnected (normal left inverted right x axis y axis)
HDMI-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 531mm x 299mm
   1920x1080     59.93 +  60.00*   50.00    59.94
   1920x1080i    60.00    50.00    59.94
   1680x1050     59.88
…
Примечание
Если нужный вам видеорежим отсутствует в этом списке, смотрите раздел
#Добавление новых видеорежимов
.
Вы можете использовать
xrandr
для установки разрешения на нужном выходе (режим работы с этим разрешением должен присутствовать в списке выше):
$ xrandr --output HDMI-1 --mode 1920x1080
Если в списке присутствуют несколько режимов с одинаковым разрешением, но разной частотой, то необходимо в параметрах так же указывать нужную частоту
--rate
, либо её можно задать потом отдельно. Например:
$ xrandr --output HDMI-1 --mode 1920x1080 --rate 60
Параметр
--auto
включит выход, если он выключен, и выставит рекомендуемое (максимальное) разрешение:
$ xrandr --output HDMI-1 --auto
Можно указывать несколько выходов в одной команде, например, выключить
HDMI-1
и включить
HDMI-2
с рекомендуемым разрешением:
$ xrandr --output HDMI-1 --off --output HDMI-2 --auto
Примечание
Изменения внесённые
xrandr
не запоминаются
после окончания X сессии.
xrandr
имеет большое количество параметров - читайте
xrandr(1)
.
Настройка
xrandr
сам по себе является простым интерфейсом для конфигурации RandR и не имеет собственных файлов конфигурации. Тем не менее существует множество способов задать нужные параметры:
Настроить расширение RandR можно через
файлы настроек X
, подробнее в разделе
Multihead#RandR
. Этот метод позволяет создать только статическую конфигурацию.
Для динамической конфигурации можно выполнять команды
xrandr
после запуска X-сервера; смотрите раздел
Автозапуск#Запуск Xorg
. Недостаток этого способа в том, что команды выполняются относительно поздно и поэтому, например, не влияют на
экранный менеджер
при его наличии.
Можно привязать скрипты, запускающие
xrandr
, к определённым событиям (например, подключению внешнего монитора); подробнее об этом в статьях
udev (Русский)
и
acpid (Русский)
. В разделе
#Скрипты
есть несколько примеров.
Совет
Некоторые экранные менеджеры позволяют использовать скрипты запуска, которые выполняются в момент запуска X. Например, для
SDDM
это
/usr/share/sddm/scripts/Xsetup
. Создание этих скриптов требует права суперпользователя, но они будут запущены раньше чем xprofile.
Скрипты
Переключение внешнего монитора
Этот скрипт переключается между внешним (указанным в переменной
$extern
) и внутренним (указанным в переменной
$intern
) дисплеями, оставляя только один из дисплеев включенным.
В момент запуска скрипта внутренний дисплей должен быть подключен (что всегда верно для ноутбука).
#!/bin/sh
intern=LVDS1
extern=VGA1

if xrandr | grep "$extern disconnected"; then
    xrandr --output "$extern" --off --output "$intern" --auto
else
    xrandr --output "$intern" --off --output "$extern" --auto
fi
Примечание
Чтобы оставлять внутренний дисплей включенным при подключении внешнего, в блоке else замените команду на
xrandr --output "$intern" --primary --auto --output "$extern" --right-of "$intern" --auto
.
Управление несколькими мониторами
mons
AUR
— это POSIX-скрипт для лёгкого управления двумя и более мониторами.
Он позволяет быстро включать часто используемые режимы вроде дублирования или расширения экрана, а также настроить положение мониторов относительно друг друга. Подробнее в описании на GitHub:
mons
.
xrasengan
Если используемый вами видеодрайвер завершает работу Xorg при отсутствии подключенных видеовыходов (что случается с некоторыми мониторами DisplayPort, которые после перехода в режим ожидания начинают считаться отключенными), можно использовать такое обходное решение для принудительного включения видеовыходов:
declare -i count=2
declare -i seconds=1

while ((count)); do
    xrandr >/dev/null
    sleep $seconds
    ((count--))
done
xrasengan
AUR
— обёртка над xrandr, в которой есть это обходное решение.
$ xrasengan --force -on DisplayPort-0 -off HDMI-0
С опцией
--force
xrasengan
будет обновлять статус всех подключенных выводов до отключения HDMI-0, что позволяет избежать завершения работы X, вызванного отсутствием активных видеовыходов.
Для принудительной перезагрузки текущих настроек
xrasengan
предоставляет опцию
--try-reload-active-layout
, которая использует
--force
и
unxrandr
из пакета
arandr
для составления команды:
$ xrasengan --try-reload-active-layout
Это можно использовать в юните systemd или назначить сочетание клавиш, чтобы избежать пустого экрана при пробуждении мониторов DisplayPort.
Настройка с помощью arandr
arandr
позволяет изменить относительные положения мониторов перетаскиванием, изменить разрешение и сохранить скрипт, запускающий
xrandr
для восстановления настроек. По умолчанию при нажатии
Сохранить как
программа предложит сохранить скрипт в
~/.screenlayout/
. Затем его можно добавить в
автозапуск
. Иногда могут возникать проблемы из-за того, что скрипт arandr запускается слишком рано после входа в систему, так что добавьте
sleep
по необходимости.
Решение проблем
Мерцание экрана
Для некоторых ЖК-мониторов (например, Samsung 2343NW, Acer XB280HK и Iiyama ProLite XUB3490WQSU-B1) можно использовать команду
cvt -r
для расчёта стандартизированных modeline с уменьшенным периодом обратного хода (blanking), что позволяет использовать более высокочастотные сигналы.
Например: внешний монитор ProLite XUB3490WQSU-B1, подключенный к ноутбуку Dell через адаптер Thunderbolt-HDMI 2.0, использующий частоту обновления 59,97 Гц с проблемой мерцания:
Расчёт modeline с параметром
-r
для желаемого разрешения 3440x1440 даёт:
$ cvt -r 3440 1440
# 3440x1440 59.97 Hz (CVT) hsync: 88.82 kHz; pclk: 319.75 MHz
Modeline "3440x1440R"  319.75  3440 3488 3520 3600  1440 1443 1453 1481 +hsync -vsync
Теперь можно создать новый видеорежим с этими параметрами:
$ xrandr --newmode "3440x1440R"  319.75  3440 3488 3520 3600  1440 1443 1453 1481 +hsync -vsync
И добавить его в список доступных режимов для нужного видеовыхода:
$ xrandr --addmode DP1 3440x1440R
Добавление новых видеорежимов
Иногда из-за ошибок в оборудовании или драйверах xrandr может не определять правильный набор доступных разрешений монитора. Например, отдаваемый монитором EDID может содержать неверную информацию. Исправление этого на низком уровне описано в разделе
Kernel mode setting (Русский)#Принудительный режим и EDID
. В данном разделе описывается решение проблемы на более высоком уровне с помощью добавления нового видеорежима через xrandr. Аналогичную процедуру можно использовать для добавления новых частот обновления экрана, которые не определились автоматически.
Для начала запускаем
gtf
или
cvt
чтобы получить
Modeline
с нужными нам параметрами:
$ cvt 1280 1024
# 1280x1024 59.89 Hz (CVT 1.31M4) hsync: 63.67 kHz; pclk: 109.00 MHz
Modeline "1280x1024_60.00"  109.00  1280 1368 1496 1712  1024 1027 1034 1063 -hsync +vsync
Совет
Если после применения modeline экран перестаёт работать, попробуйте снизить частоту обновления (например, 30 или 45 вместо 60), указав её третьим аргументом:
cvt 2560 1440 45
.
Примечание
При использовании видеодрайвера Intel (
xf86-video-intel
) он может вывести рекомендуемое разрешение и его параметры в
/var/log/Xorg.0.log
— сперва попробуйте указанные там параметры, если они отличаются от вывода
gtf
или
cvt
. Пример вывода в журнале и использования этих параметров в xrandr:
[    45.063] (II) intel(0): clock: 241.5 MHz   Image Size:  597 x 336 mm
[    45.063] (II) intel(0): h_active: 2560  h_sync: 2600  h_sync_end 2632 h_blank_end 2720 h_border: 0
[    45.063] (II) intel(0): v_active: 1440  v_sync: 1443  v_sync_end 1448 v_blanking: 1481 v_border: 0
$ xrandr --newmode "2560x1440" 241.50 2560 2600 2632 2720 1440 1443 1448 1481 -hsync +vsync
Пример для драйвера AMDGPU (
xf86-video-amdgpu
):
[    95.798] (II) AMDGPU(0): Printing DDC gathered Modelines:
[    95.798] (II) AMDGPU(0): Modeline "1920x1080"x0.0  148.50  1920 2008 2052 2200  1080 1084 1089 1125 +hsync +vsync (67.5 kHz eP)
$ xrandr --newmode "1920x1080"x0.0  148.50  1920 2008 2052 2200  1080 1084 1089 1125 +hsync +vsync
Теперь можно создать новый режим для xrandr (без слова
Modeline
в начале):
$ xrandr --newmode "1280x1024_60.00"  109.00  1280 1368 1496 1712  1024 1027 1034 1063 -hsync +vsync
Совет
Некоторые программы плохо работают с видеорежимами, имеющими «_60.00» в названии; смотрите
[1]
.
После создания видеорежим нужно добавить для нужного выхода, указав их названия:
$ xrandr --addmode VGA1 1280x1024_60.00
После этого можно его использовать:
$ xrandr --output VGA1 --mode 1280x1024_60.00
Изменения действуют только в текущем сеансе X и сбросятся при перезапуске. Сделать их постоянными можно как описано в разделе
#Настройка
или
#Постоянное добавление новых видеорежимов
.
Если вы не уверены, что созданный вами видеорежим является правильным, можно добавить
sleep 5
и команду для перехода в гарантированно рабочий видеорежим на случай потери видеосигнала, например:
$ xrandr --output VGA1 --mode 1280x1024_60.00 && sleep 5 && xrandr --newmode "1024x768-safe" 65.00 1024 1048 1184 1344 768 771 777 806 -HSync -VSync && xrandr --addmode VGA1 1024x768-safe && xrandr --output VGA1 --mode 1024x768-safe
Не забудьте заменить
VGA1
на название нужного вам видеовыхода.
EDID checksum is invalid
Если предыдущий метод приводит к ошибке
*ERROR* EDID checksum is invalid
, смотрите
Kernel mode setting (Русский)#Принудительный режим и EDID
и
[2]
.
Или
xrandr --addmode
может выдать ошибку
X Error of failed request: BadMatch
. Пользователям NVIDIA стоит прочитать раздел
NVIDIA/Решение проблем#xrandr BadMatch
.
BadMatch
также может означать проблемы с EDID checksum. Для проверки запустите X с более подробным журналом (например,
startx -- -logverbose 6
) и изучите файл журнала Xorg на наличие ошибок, связанных с EDID.
Изменение разрешения отменяется
Если вы используете
GNOME
и у монитора нет EDID, описанная выше процедура может не работать: после команды
xrandr --output
монитор просто моргнёт и ничего не поменяется.
Попробуйте поиграться с настройками в файле
~/.config/monitors.xml
или вообще удалить его, а затем перезагрузитесь.
Подробнее в
этом посте
.
Постоянное добавление новых видеорежимов
После того как нашли нужный режим с помощью
xrandr
, его можно добавить в
/etc/X11/xorg.conf.d/*
:
/etc/X11/xorg.conf.d/10-monitor.conf
Section "Monitor"
    Identifier "VGA1"
    Modeline "1280x1024_60.00"  109.00  1280 1368 1496 1712  1024 1027 1034 1063 -hsync +vsync
    Option "PreferredMode" "1280x1024_60.00"
EndSection

Section "Screen"
    Identifier "Screen0"
    Monitor "VGA1"
    DefaultDepth 24
    SubSection "Display"
        Modes "1280x1024_60.00"
    EndSubSection
EndSection

Section "Device"
    Identifier "Device0"
    Driver "intel"
EndSection
Замените драйвер
intel
на нужный, например
nvidia
. После перезапуска X-сервера у вас должна появиться возможность выбрать новый видеорежим.
Если это не работает, попробуйте удалить секции Screen и Device и оставить только секцию Monitor.
[3]
Разрешение оказалось ниже, чем хотелось бы
Совет
Сначала попробуйте метод, описанный в разделе
#Добавление новых видеорежимов
.
Если ваша видеокарта распознаётся, но разрешение ниже ожидаемого, попробуйте сделать следующее.
Пример: видеокарты на основе ATI X1550 и два ЖК-монитора DELL 2408 (разрешение экрана до 1920х1200) и Samsung 206BW (до 1680x1050). При первом входе в систему после установки, разрешение по умолчанию 1152x864. XRandR не перечисляет разрешения выше 1152x864. Вы можете попробовать отредактировать /etc/X11/xorg.conf.d/*, добавить раздел о виртуальном экране, выйти из системы, войти в систему, и посмотреть, поможет ли это. Если нет, то читайте дальше.
/etc/X11/xorg.conf.d/10-monitor.conf
Section "Screen"
        ...
        SubSection "Display"
                Virtual 3600 1200
        EndSubSection
EndSection
О цифрах: DELL слева и Samsung справа. Таким образом, виртуальная ширина суммы обоих ЖК шириной 3600 = 1920 + 1680; Высота, - максимальная из них, что максимум (1200,1050) = 1200. Если поставить один LCD выше другого, используйте этот расчет: (максимум (ширина 1, ширина 2), высота 1 + высота 2).
Установка разрешения в файле .xinitrc не работает
Некоторым драйверам
DDX
(например
xf86-video-intel
) может понадобиться некоторые время для определения подключенных устройств и их видеорежимов, и до этого момента xrandr может работать некорректно. Возможные решения:
Подождать пару секунд перед выполнением xrandr:
~/.xinitrc
...
{ sleep 2; xrandr
параметры
} &
...
Благодаря
&
ожидание происходит в фоновом режиме и не блокирует дальнейшую загрузку. Если это нежелательно (например, конфигурация вашего оконного менеджера зависит от правильных параметров монитора), можно выполнить команды без их переноса в фоновый режим:
~/.xinitrc
...
sleep 2
xrandr
параметры
...
Установить видеорежим позже при запуске среды рабочего стола — смотрите документацию вашей среды или вашего оконного менеджера.
Перейти на драйвер modesetting. Проще всего сделать это удалением драйвера DDX, специфичного для вашего оборудования. В случае с
xf86-video-intel
его удаление может решить и другие проблемы, описанные в разделе
Intel graphics (Русский)#Установка
.
Исправление вылетов развёртки с помощью свойства underscan
Телевизоры используют
вылеты развёртки
(overscan) для скрытия технических областей изображения и присутствующих там искажений. Однако для цифровых интерфейсов и ЖК-дисплеев это не имеет смысла и приводит к излишней обрезке краёв изображения.
Если на вашем телевизоре изображение с компьютера оказалось обрезано, в первую очередь поищите отключение overscan где-то в настройках телевизора. Если такой настройки не нашлось, можно компенсировать обрезку с помощью свойств
underscan
, если они доступны на вашем видеовыходе (посмотреть список доступных свойств можно командой
xrandr --prop
). Они добавят чёрную границу вокруг изображения, которую будет обрезать телевизор, не затрагивая само изображение. Подберите значения параметров
underscan vborder
и
underscan hborder
, подходящие для вашего телевизора.
$ xrandr --output HDMI-0 --set underscan on --set "underscan vborder" 25 --set "underscan hborder" 40
Исправление вылетов развёртки с помощью --transform
Если underscan недоступен, можно использовать
xrandr --transform
a,b,c,d,e,f,g,h,i
для применения матрицы, изменяющей размеры вывода. Подробнее о том, как она работает, в документации:
xrandr(1) § RandR_version_1.3_options
.
Пример с горизонтальным масштабированием
0.8
, вертикальным масштабированием
1.04
и смещением изображения на 35 пикселей вправо и 19 пикселей вниз:
$ xrandr --output HDMI1 --transform 0.80,0,-35,0,1.04,-19,0,0,1
Отключение фантомного монитора
Иногда видеодрайвер может обнаружить «фантомные» выходы. Чтобы они не мешались, их можно отключить такой командой (вместо
VGA1
укажите имя проблемного выхода):
$ xrandr --output VGA1 --off
Чтобы сделать изменение постоянным, можно добавить это в настройки Xorg:
/etc/X11/xorg.conf.d/10-monitor.conf
Section "Monitor"
    Identifier "VGA1"
    Option "Ignore" "true"
EndSection
Артефакты чересстрочности на AOC G2590PX
Если вы видите очень заметные
артефакты чересстрочной развёртки
(сетку или решётку) при движении на экране, причиной этого может быть низкая частота обновления экрана. Переключение на более высокую частоту обновления (от 60 Гц до 119,98 Гц и, возможно, даже выше) может помочь уменьшить этот эффект.
Пример вывода xrandr для монитора, подключенного через HDMI:
HDMI-1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 544mm x 303mm
   1920x1080     60.00 + 119.98*   99.93    50.00    59.94
Хотя 60 Гц отмечена как рекомендуемая частота, на ней артефакты сильно бросаются в глаза. Переключение на 119.98 делает артефакты менее заметными:
$ xrandr --output HDMI-1 --mode 1920x1080 --rate 119.98
Смотрите также
https://wiki.ubuntu.com/X/Config/Resolution
Debian Wiki - RandR 1.2 tutorial
Xorg RandR 1.2 на ThinkWiki
Obtaining modelines from Windows program PowerStrip