Вопрос или проблема
Когда я начал использовать Ubuntu несколько лет назад, одной из первых вещей, которые я сделал, было конфигурирование моей установки для автоматического запуска набора приложений. Эти позиции были распределены между набором из 4 рабочих пространств. Запуск gnome-session-properties
для получения приложений, запускаемых при старте, показывает следующее:
- Clementine
- Firefox
- Proton Mail Bridge
- Signal
- Thunderbird Mail
При запуске все эти программы действительно запускаются. Однако, если я правильно помню, Thunderbird и Firefox больше не восстанавливались в позициях предыдущих сеансов, когда я начал использовать Ubuntu 20.04. Такое поведение сохраняется и в 22.04 (что я сейчас использую).
wmcrtl и сначала подтвердить, что используемый менеджер окон – это GNOME Shell. Затем я обнаружил, что ни один продукт Mozilla не указан, когда выполняется команда wmctrl -l
. Смотрите вывод ниже:
0x00a00006 3 рабочий стол Clementine
0x00c00004 0 рабочий стол Signal (5)
0x02400004 0 рабочий стол autodesk fusion 360 tutorial - YouTube - Chromium
0x02400015 5 рабочий стол SawStop Professional Digital - Chromium
0x02400016 0 рабочий стол Украденный пляж и черный рынок песка : Planet Money : NPR - Chromium
0x01800004 0 рабочий стол Bitwarden
0x03800010 0 рабочий стол Yubico Authenticator
0x03400019 0 рабочий стол Oracle VM VirtualBox Manager
0x03e002cb 2 рабочий стол darktable
0x03600019 0 рабочий стол Windows 10 VB [Выполняется] - Oracle VM VirtualBox
0x04000004 0 рабочий стол Joplin
Это так, несмотря на то, что 1 экземпляр Thunderbird работает на рабочем пространстве 0, и 5 экземпляров Firefox работают на 2 рабочих пространствах. Я подозреваю, что Firefox больше не запускается в позициях предыдущего сеанса, потому что программы больше не отображаются или не управляются GNOME Shell. Я проверил мануал wmctrl на manpages.ubuntu.com, но не нашел никакой опции, которая может найти и затем добавить окна, которые не управляются wmctrl. Таким образом, мой вопрос к askubuntu.com двоякий.
- Как мне найти окна и их идентификаторы, которые не управляются GNOME Shell?
- Как мне заставить окна, которые не управляются GNOME Shell, управляться GNOME Shell с помощью wmctrl?
- Как мне убедиться, что GNOME Shell будет продолжать управлять добавленными окнами после перезапуска сеанса?
Одно замечание: я пробовал использовать версию Firefox как из Snap Store, так и непосредственно от Mozilla, и результаты были одинаковыми. Поэтому я предполагаю, что эта проблема не связана с источником установочного пакета.
Спасибо,
Ответ или решение
Решение проблемы с управлением окнами в GNOME Shell
При использовании Ubuntu некоторые пользователи сталкиваются с проблемой, когда GNOME Shell не управляет всеми открытыми окнами приложений, что приводит к неупорядоченному размещению окон после перезагрузки. В частности, в вашем случае это проявляется в отсутствии управления окнами Firefox и Thunderbird, что вызывает дополнительные неудобства при работе с несколькими окнами. Давайте подробно рассмотрим, как можно решить данную проблему.
Шаг 1: Выявление окон, которые не управляются GNOME Shell
Для начала необходимо выяснить, какие окна не отображаются в системе управления окон. Вы уже использовали команду wmctrl -l
, которая показывает список всех открытых окон, доступных GNOME Shell. Однако, если некоторые окна отсутствуют в этом списке, вы можете использовать следующие методы для их обнаружения:
-
Использование
xwininfo
:
Эта команда позволяет получить информацию о конкретных окнах. Запустите её и кликните на окно, которое вас интересует:xwininfo
В результате вы получите ID окна и другую полезную информацию.
-
Использование
xprop
:
Эта команда отображает свойства окон. Кликните на окне и введите следующую команду:xprop
Обратите внимание на атрибуты, которые могут подсказать, управляется ли данное окно GNOME Shell.
Шаг 2: Принуждение к управлению окнами через wmctrl
Если вы хотите заставить конкретные окна управляться GNOME Shell с помощью wmctrl
, стоит отметить, что эта утилита в основном предназначена для управления окнами, которые уже под контролем управляющего окнами менеджера. Однако вы можете попробовать следующее:
-
Проверка параметров запуска приложения:
Убедитесь, что ваши приложения (Firefox, Thunderbird) запускаются с правильными аргументами. Иногда определенные параметры могут влиять на их поведение при старте. -
Запуск через оболочку:
Попробуйте запустить приложения через терминал с следующей командой:wmctrl -r "Имя окна" -b add,above
Это может помочь «пригласить» ваше окно под управление.
-
Автоматизация с помощью скрипта:
Вы можете создать скрипт, который будет автоматически расставлять окна после запуска:#!/bin/bash wmctrl -r "Mozilla Firefox" -e 0,10,10,800,600
Шаг 3: Автоматизация управления окнами при перезагрузке сессии
Чтобы GNOME Shell продолжал управление окнами, которые не были изначально связаны с ним во время перезапуска, используйте следующие стратегии:
-
Кастомизация конфигурации сессии:
В некоторых случаях поможет создание файла сессии, где вы сможете указать, как именно должны открываться приложения после перезагрузки. -
Использование GSettings:
Вы можете установить значение для GNOME Shell, чтобы он управлял указателем приложений:gsettings set org.gnome.mutter workspaces-only-on-screen true
-
Следите за обновлениями GNOME Shell:
Иногда такие проблемы могут возникнуть из-за ошибок в конкретной версии GNOME Shell. Убедитесь, что ваш софт обновлен до последней версии.
Заключение
Проблемы с управлением окон в GNOME Shell могут быть довольно неудобными, особенно при работе с несколькими приложениями. Выявление и исправление таких проблем требует предварительной диагностики и применения множества подходов. Следуйте указанным шагам, чтобы оптимизировать свои рабочие процессы и восстановить привычный порядок в управлении окнами на вашем рабочем столе Ubuntu.