Множественные мониторы и беспорядок с несколькими рабочими пространствами в 24.04

Вопрос или проблема

У меня есть настольная установка с 3 мониторами, и я активно использую несколько рабочих пространств, где организую открытые программы/окна по личным или рабочим интересам и так далее; в каждом рабочем пространстве самые важные вещи находятся на среднем мониторе, а другие на одном из боковых. Если я перезагружаю машину и открываю те же программы, система “запоминает” рабочее пространство и монитор всех окон. Если один из мониторов отключён, система перенастраивает окна отключенного монитора на другие 2, и если монитор подключается снова, система восстанавливает прежнюю 3-мониторную компоновку (вроде как, но нормально).

Я недавно установил свежий Ubuntu 24.04 (Gnome, Wayland, карта Nvidia и проприетарный драйвер), и в большинстве случаев поведение при отключении/подключении любого монитора такое же, как и раньше, но нередко случается, что всё просто забывается. ВСЕ окна из ВСЕХ рабочих пространств перемещаются в первое рабочее пространство и на средний монитор, и мне приходится заново всё организовывать. Вы можете представить, как это раздражает.

РЕДАКТИРОВАТЬ: моя конфигурация Настройки -> Многозадачность:

– Рабочие пространства: “Фиксированное количество: 5”
– Мульти-монитор: “Рабочие пространства на всех дисплеях”
– Переключение приложений: “Включать приложения из всех рабочих пространств” и “Включать приложения со всех мониторов”

Мой первый вопрос: где хранится информация об организации окон? Может быть, я смогу создать сценарий для размещения “известных” программ/окон.

Второй вопрос: где находится код для управления этой организацией? Может быть, я могу помочь в решении этой проблемы.

Ответ или решение

Вопрос: Проблемы с разметкой многомониторной и многозадачной среды в Ubuntu 24.04

При работе с многомониторной системой и использованием нескольких рабочих пространств в Ubuntu 24.04 возникают проблемы. Ваша ситуация описывает сценарий, когда после отключения и повторного подключения одного из мониторов ваша система иногда не запоминает предыдущие позиции окон. Все окна из всех рабочих пространств перемещаются на первый рабочий экран, и вам приходится вручную возвращать всё на свои места. Это, бесспорно, вызывает неудобства.

Ответ:

Где хранится информация о расположении окон?

В системе Ubuntu (особенно в версиях на базе GNOME и Wayland) информация о размещении окон обычно не сохраняется таким образом, чтобы пользователь мог её напрямую редактировать или восстанавливать после перезагрузки или отключения монитора. Это связано с тем, что Wayland и руководители окон в GNOME ориентированы на динамическое управление окнами, вместо привязки их к фиксированным позициям.

Однако GNOME пытается восстановить расположение окон при изменении конфигурации мониторов. Эти данные обычно хранятся в сессии GNOME, но могут теряться при сбое или при сложных изменениях в структуре окон.

Как можно автоматизировать настройку окон?

Можно использовать скрипты для автоматизации процесса расположения окон. Одним из инструментов является devilspie2, который позволяет создавать правила для размещения окон в определённых позициях и на конкретных рабочих столах. Также, использование wmctrl может быть полезным для управления окнами через сценарии оболочки.

Создание скриптов может включать в себя такие шаги:

  1. Определение окон: Использование xprop и wmctrl для получения информации об открытых окнах.
  2. Создание правил: Согласование своих потребностей с функциональностью devilspie2, чтобы при запуске системы или изменении конфигурации монитора окна автоматически перемещались в требуемое положение.
  3. Использование автозапуска: Размещайте ваш скрипт в автозапускаемых приложениях так, чтобы он активировался при запуске системы или изменении сетапа мониторов.

Где находится код, управляющий расположением окон?

Источник ваших проблем может лежать в интеграции GNOME с Wayland или в драйвере вашей видеокарты (Nvidia, в вашем случае). Код, который управляет непосредственно размещением окон, разбросан между композитором окон (Mutter для GNOME) и самим GNOME Shell.

Если вы хотите внести вклад в решение проблемы, исходный код GNOME и Mutter доступен на GitLab. Исследование и корректировка в этих репозиториях требует глубокого понимания C и работы оконных композиторев:

  1. Исходный код GNOME и Mutter: можно найти на GitLab GNOME.
  2. Взаимодействие с сообществом: создайте обращение (issue) в репозитории или обсуждайте ваше решение на форумах разработчиков GNOME.

ЗАКЛЮЧЕНИЕ:

Работа в сложных многомониторных средах требует корректной конфигурации и понимания внутренних аспектов системы. Вы можете улучшить свой опыт, автоматизируя процессы с помощью существующих инструментов или предлагая изменения в исходном коде GNOME.

Оптимизация этих аспектов позволит не только решить вашу проблему, но и сделать вклад в улучшение мультизадачности в будущих версиях Ubuntu.

Оцените материал
Добавить комментарий

Капча загружается...