Вопрос или проблема
У меня есть настольная установка с 3 мониторами, и я активно использую несколько рабочих пространств, где организую открытые программы/окна по личным или рабочим интересам и так далее; в каждом рабочем пространстве самое важное остается на среднем мониторе, а остальные вещи переходят на один из боковых мониторов. Если я перезагружаю компьютер и открываю те же программы, система ‘запоминает’ рабочее пространство и монитор всех окон. Если один из мониторов отключен, система перераспределяет окна отключенного монитора на другие 2, и если монитор снова подключен, система снова организует прежнюю трехмониторную схему (что-то вроде этого, но все равно).
Недавно я установил свежую Ubuntu 24.04 (Gnome, Wayland, Nvidia карта и проприетарный драйвер), и чаще всего поведение расположения при отключении/подключении любого монитора такое же, как и раньше, но иногда случается, что система просто забывает все. ВСЕ окна ВСЕХ рабочих пространств перемещаются в первое рабочее пространство и на средний монитор, и мне приходится все организовывать с нуля снова. Вы можете представить, насколько это раздражает.
РЕДАКТИРОВАНИЕ: моя конфигурация Настройки -> Многозадачность:
- Рабочие пространства: “Фиксированное число: 5”
- Мультимонитор: “Рабочие пространства на всех дисплеях”
- Переключение приложений: “Включить приложения из всех рабочих пространств” и “Включить приложения со всех мониторов”
Мой первый вопрос: где хранится информация о расположении окон? Возможно, я могу ‘скриптизировать’ расположение ‘известных’ программ/окон.
Второй вопрос: где находится код для управления этим расположением? Возможно, я могу внести свой вклад в решение этой проблемы. Я пытался переместить свои мониторы в другое расположение в приложении Настройки -> Дисплеи, но это не решило проблему.
Ответ или решение
Вопрос, который вы подняли относительно поведения окон в многомониторной и многопространственной среде Ubuntu 24.04, весьма актуален для многих пользователей, сталкивающихся с подобными проблемами. Давайте разберёмся, где могут быть корни этой проблемы и что можно предпринять.
Где хранится информация о расположении окон?
-
Конфигурационные файлы и сессии: Обычно информация о сессиях и размещении окон в Linux может храниться в различных конфигурационных файлах, зависящих от окна менеджера и настроек сессий. В случае GNOME и Wayland, этот процесс может быть несколько нетривиальным из-за постоянной эволюции интерфейсов. В Ubuntu и GNOME информация о доступных сеансах может храниться в файлах конфигурации в директории
~/.config/
. Также стоит обратить внимание на менеджеры сеансов, такие какGnome-session
, которые могут управлять запоминанием состояний отдельных сеансов. -
Состояние диспетчера окон: GNOME по умолчанию не сохраняет состояния окон между сеансами, так как это считается устаревшей практикой, тем не менее сторонние утилиты могут помочь в решении этой проблемы, например,
Devil's Pie
илиDevilspie2
, которые позволяют описывать правила для автоматического позиционирования окон.
Где находится код для управления окном?
-
Исходный код GNOME и Wayland: Если вы хотите внести свой вклад в улучшение функциональности, вам стоит начать с изучения исходного кода GNOME и Wayland. Репозитории для GNOME доступны на GNOME GitLab, а для Wayland – на freedesktop.org.
-
Комьюнити и процессы развития: Рассмотрите возможность взаимодействия с сообществом разработчиков Ubuntu и GNOME. Часто именно обсуждения в mailing lists или форумах помогают ускорить поиск решения, ведь вы можете не быть единственным, кто сталкивается с этой проблемой.
Возможные решения и утилиты
-
Скриптование и автоматизация: Если проблема состоит в некорректном перераспределении окон, вы можете исследовать инструменты, такие как
wmctrl
илиxrandr
, для Wayland аналогов меньше, но такие утилиты, какsway
, могут предоставить некоторую функциональность. Scripts, которые используют API GNOME, такие какgjs
(GNOME JavaScript bindings), также могут помочь. -
Прикладные изменения и настройки: Попробуйте использовать расширения для GNOME Shell, такие как
Workspace Indicator
илиMulti Monitors Add-On
, которые могут предложить улучшенное управление рабочими пространствами.
Ваше желание внести вклад в решение проблемы замечательно и может принести пользу многим пользователям в будущем. Если у вас есть навыки программирования, рассмотрите возможность участия в разработке откроенного ПО.