Вопрос или проблема
У меня есть четыре монитора. Один (1680×1050) подключён к встроенному графическому адаптеру Intel, а три (1440×900 и два 1920×1080) подключены к дискретному графическому адаптеру ATI. При определённых конфигурациях XRandR некоторые мониторы имеют обрезанную область отображения, так что, например, нижняя часть экрана не используется.
Я хотел бы использовать конфигурацию, как эта:
xrandr \
--output VGA-1 --mode 1440x900 --pos 780x1080 --rotate left \
--output HDMI2 --mode 1680x1050 --pos 0x30 --rotate normal \
--output HDMI-3 --mode 1920x1080 --pos 1680x1080 --rotate normal \
--output DVI-0 --mode 1920x1080 --pos 1680x0 --rotate normal
Но нижняя часть (ниже нижнего края правого нижнего экрана) левого нижнего экрана обрезана:
С другой стороны, эта конфигурация работает:
xrandr \
--output VGA-1 --mode 1440x900 --pos 780x1050 --rotate left \
--output HDMI2 --mode 1680x1050 --pos 0x0 --rotate normal \
--output HDMI-3 --mode 1920x1080 --pos 1680x1080 --rotate normal \
--output DVI-0 --mode 1920x1080 --pos 1680x0 --rotate normal
, как показано здесь:
Также эта конфигурация работает:
xrandr \
--output VGA-1 --mode 1440x900 --pos 780x0 --rotate left \
--output HDMI2 --mode 1680x1050 --pos 0x1440 --rotate normal \
--output HDMI-3 --mode 1920x1080 --pos 1680x1440 --rotate normal \
--output DVI-0 --mode 1920x1080 --pos 1680x360 --rotate normal
, как показано здесь:
Кроме того, следующая конфигурация работает
xrandr \
--output VGA-1 --mode 1440x900 --pos 780x1080 --rotate left \
--output HDMI2 --mode 1680x1050 --pos 0x30 --rotate normal \
--output HDMI-3 --mode 1920x1080 --pos 1680x1440 --rotate normal \
--output DVI-0 --mode 1920x1080 --pos 1680x0 --rotate normal
как показано здесь:
ОБНОВЛЕНИЕ:
Странно, но мне удалось добиться нужной расстановки командой:
xrandr \
--output VGA-1 --mode 1440x900 --pos 780x1080 --rotate left \
--output HDMI2 --mode 1680x1050 --pos 0x30 --rotate normal \
--output HDMI-3 --mode 1920x1080 --pos 1680x1440 --rotate normal \
--output DVI-0 --mode 1920x1080 --pos 1680x0 --rotate normal
xrandr \
--output HDMI2 --mode 1680x1050 --pos 0x30 --rotate normal \
--output DVI-0 --mode 1920x1080 --pos 1680x0 --rotate normal \
--output VGA-1 --mode 1440x900 --pos 780x1080 --rotate left \
--output HDMI-3 --mode 1920x1080 --pos 1680x1080 --rotate normal \
--primary
так что это работает на только что запущенном экземпляре Xorg, но я не имею представления, почему это работает. Кроме того, это решение кажется немного неуклюжим. Может кто-нибудь осветить меня по этому вопросу, пожалуйста?
Моя операционная система – Arch Linux, оконный менеджер – i3, а версия XRandR – 1.4.2. Файлы конфигурации Xorg содержат только разделы InputClass и Files.
Да, я могу полностью прояснить вам эту ситуацию и другие:
Ваш экран X11 (один большой прямоугольник) слишком мал. Обычно xrandr
автоматически изменяет его размер, чтобы вместить все мониторы, но, похоже, наталкивается на ошибку в вашей системе.
Графическое представление вашей настройки на вашем скриншоте также показывает эту проблему (прямоугольник за VGA-1 обрезан). Мониторы, показывающие области за пределами экрана X11, отображают мусор (или ничего) в этих областях.
Увеличьте его вручную с помощью переключателя --fb
. Ваша общая ширина, похоже, составляет HDMI2 + DVI-0, что составляет 3600 пикселей в ширину, а общая высота увеличена до максимума DVI-0 и вращаемого VGA-1, т.е. 1080 + 1440 = 2520.
xrandr --fb 3600x2520
Ответ или решение
Решение проблемы обрезки области отображения в XRandR при использовании многомониторных конфигураций
Проблема, с которой вы столкнулись в вашей системе с несколькими мониторами, связана с тем, что X11 не может правильно установить размеры экрана, что приводит к обрезке области отображения на некоторых мониторах. В вашей ситуации, несмотря на использование команд XRandR для установки разрешений и позиций мониторов, часть заднего плана нижнего левого экрана оказывается недоступной, что, безусловно, создает неприятности в работе.
Объяснение проблемы
Каждый раз, когда вы настраиваете несколько мониторов, X11 создает одно большое виртуальное пространство, которое должно охватывать все подключенные устройства отображения. В стандартных условиях XRandR автоматически определяет размеры этого пространства, однако в вашей конфигурации возникла проблема. Скорее всего, это связано с ошибкой или неправильной настройкой в вашей системе, что не позволяет X11 корректно вычислить размеры экрана.
Представление вашей конфигурации через XRandR демонстрирует это несоответствие: края виртуального экрана оказываются слишком узкими, и часть монитора не учитывается. В результате нижняя часть изображения на внутренних мониторах отображается как «мусор» или полностью пустая.
Решение проблемы
Для решения данной проблемы вам понадобится вручную задать размеры вашего виртуального экрана при помощи параметра --fb
в XRandR.
Основываясь на вашем описании конфигурации, необходимо учесть суммарную ширину и высоту всех мониторов:
-
Ширина:
HDMI2
– 1680 пикселейDVI-0
– 1920 пикселей- Сумма: 1680 + 1920 = 3600 пикселей
-
Высота:
- Высота экрана
DVI-0
(1920×1080) – 1080 пикселей - Высота экрана
VGA-1
(1440×900) в вертикальной ориентации после поворота – 1440 пикселей - Сумма: 1080 + 1440 = 2520 пикселей
- Высота экрана
Используйте следующую команду для задания размеров рамки экрана (framebuffer):
xrandr --fb 3600x2520
Дополнительные рекомендации
-
Порядок выполнения: Передает значения
--fb
необходимо выполнить эту команду перед другими командами XRandR для настройки разрешения. Это обеспечит корректное отображение всех подключенных мониторов без обрезки. -
Автозагрузка команд: Рассмотрите возможность добавления этих настроек в автоматический запуск вашей сессии X через файлы конфигурации i3 или .xinitrc, чтобы каждая новая сессия Xorg начиналась с правильной конфигурации.
-
Проверка настроек: После изменения настроек используйте
xrandr
для проверки текущих значений framebuffer и проявления всех подключенных мониторов.
Заключение
Описанная вами проблема является следствием некорректных настроек в системе и может быть устранена с помощью указания правильных значений для виртуального экрана. Метод, который успешно решает проблему, может показаться несколько неуклюжим, однако он позволяет обеспечить правильную работу всех ваших мониторов. Надеюсь, данное решение окажется полезным и поможет вам оптимально настроить рабочее пространство.