Вопрос или проблема
Я хочу зеркалировать два дисплея (ноутбук и левый дисплей) и расширить третий (правый дисплей).
Если это неясно, я нашел существенно эквивалентный вопрос на Как “наложить”/клонировать дисплеи в GNOME Wayland, который включает несколько полезных изображений, показывающих, что два дисплея зеркалируются, а один расширяется.
К сожалению, единственный ответ заключался в том, чтобы попробовать что-то ручное. Под Xorg это легко сделать с помощью xrandr
, поэтому я разочарован тем, что не нахожу простого решения в Wayland / Ubuntu 22.04.
Я нашел “ручное” и довольно некрасивое решение, но надеюсь, что есть и другой способ. В конечном итоге я опубликую подробное ручное решение, если не будет лучших вариантов. В кратце, я многократно сохранял ~/.config/monitors.xml
, меняя конфигурацию, выяснял, какая конфигурация активна и как зеркалировать два дисплея, редактировал один <logicalmonitor>
, чтобы он содержал два <monitor>
экземпляра, которые зеркалируются, и перезагружал систему.
Я в офисе и делаю это снова, поэтому вот (болезненный) процесс, который работает как обхідное решение. Сначала создайте дельты для нахождения конфигурации, которую нужно редактировать (мой monitors.xml
имел 8 конфигураций, поэтому было не легко заметить, что редактировать). Чтобы облегчить задачу, желательно разместить основной монитор в правильном месте. В противном случае легко случайно удалить <primary>yes</primary>
, что нарушит обходное решение.
cd ~/.config
cp monitors.xml monitors.xml.before
gnome-control-center # перемещаем дисплей и применяем изменения
diff monitors.xml monitors.xml.before # чтобы подтвердить/найти изменения
Как только вы успешно внесли изменения в <configuration>
, вы можете посмотреть на дельты, чтобы определить, какой блок <configuration>
нужно редактировать. Имейте в виду, что большинство инструментов diff
не имеют опыта работы с xml, поэтому вы можете увидеть, как дельта начинается и останавливается посреди xml блоков (<x>...</logicalconfiguration></configuration><configuration><logicalconfiguration>
вместо <configuration><logicalconfiguration><x>...</logicalconfiguration></configuration>
)
Редактируйте следующим образом:
- Откройте ~/.config/monitors.xml
- Найдите раздел, который был отредактирован
- Обратите внимание на смещения секций
<logicalmonitor>
и используйте эту информацию, чтобы найти неправильно размещенный монитор. В моем случае у меня есть два дисплея, где я хочу, чтобы они были (на<x>0</x>
/<y>0</y>
и на<x>1980</x>
/<y>0</y>
) и третий, который находится не в том месте (на<x>3840</x>
/<y>830</y>
) - Вырежьте весь раздел
<logicalmonitor>...</logicalmonitor>
, который находится не в том месте, и вставьте его в второй документ (чтобы удалить его изmonitors.xml
и оставить доступным для следующего шага) - Скопируйте только секцию
<monitor>...</monitor>
из второго документа - Вставьте содержимое, скопированное в пункте 5, прямо перед или после существующей строки
<monitor>...</monitor>
в разделе, который вы хотите зеркалировать. - Подтвердите, что один (и только один) из разделов
<logicalmonitor>
содержит<primary>yes</primary>
. - Создайте резервную копию
monitors.xml
, так как ошибка приведет к удалению файла Gnome, что приведет к потере всех других конфигураций (если это ноутбук и вы используете несколько внешних дисплеев). - Перезагрузите компьютер, войдите в Gnome и, надеюсь, вы увидите вашу новую конфигурацию.
Примечание: вы можете вставить в раздел с <primary>yes</primary>
и зеркалировать основной дисплей. Если вы вырезаете из раздела, содержащего это, вам также необходимо скопировать/вставить его. Эта строка идет после <scale>1</scale>
(или какой бы ни была ваша шкала) и перед первым <monitor>
в разделе <logicalmonitor>
.
Ответ или решение
Как отразить два дисплея и расширить третий с помощью Wayland
Введение
С переходом к графической системе Wayland в Linux, пользователи, ранее привычные к Xorg и инструменту xrandr
, сталкиваются с необходимостью поиска альтернативных решений для настройки многодисплейных конфигураций. В данной статье мы рассмотрим метод, при котором два дисплея (ноутбук и левый монитор) будут зеркалиться, а третий монитор (правый) будет расширением рабочего стола.
Настройка дисплеев в Wayland
-
Открытие настроек дисплея:
Для начала откройтеgnome-control-center
, если у вас установлен GNOME. Это можно сделать через командную строку, введя следующую команду:gnome-control-center
-
Выбор дисплеев:
Перейдите в раздел «Дисплеи». Здесь вы увидите все подключенные устройства. Обратите внимание на то, что Wayland не поддерживает такие возможности, как «зеркалирование» (mirroring) дисплеев через графический интерфейс по умолчанию, как это было сxrandr
в Xorg. Поэтому нам придется использовать некоторые обходные методы. -
Настройка
monitors.xml
:
После того как вы произвели изменения в конфигурации дисплеев, сохраните их в файл конфигурацииmonitors.xml
, который можно найти по пути:~/.config/monitors.xml
Этот файл хранит последнюю конфигурацию ваших дисплеев. Для эффективной работы с ним рекомендуется создать резервную копию перед внесением изменений:
cp ~/.config/monitors.xml ~/.config/monitors.xml.bak
-
Изменение конфигурации:
Для того чтобы отразить два дисплея, выполните следующие шаги:- Откройте файл
monitors.xml
в текстовом редакторе. - Найдите блок
<configuration>
, связанный с вашей конфигурацией. - Выделите
<logicalmonitor>
для левого дисплея и копируйте его содержимое. - Вставьте скопированный блок в рядом стоящий
<logicalmonitor>
, представляющий ваш ноутбук, тем самым создавая отражение (мирроринг) дисплеев.
- Откройте файл
-
Обратите внимание на основной дисплей:
Важно убедиться, что только один из<logicalmonitor>
содержит<primary>yes</primary>
. Это указывает на то, какой дисплей будет основным для обмена данными и размещения панелей задач. -
Сохранение и перезагрузка:
Сохраните файл и перезагрузите систему для применения изменений. При входе в GNOME вы должны увидеть новое отображение с отражением на двух дисплеях и расширением на третьем.
Заключение
Методы настройки дисплеев в среде Wayland могут показаться сложными по сравнению с устоявшимися подходами в Xorg. Хотя данный процесс требует некоторого времени и понимания, он также демонстрирует гибкость системы Linux и её настройки под потребности пользователя. Если вы столкнётесь с любыми трудностями, не стесняйтесь делиться своими находками и пытаться улучшить процесс с помощью сообщества.