GNOME Shell не управляет всеми открытыми окнами. Как это исправить?

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

Когда я начал использовать 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 двоякий.

  1. Как мне найти окна и их идентификаторы, которые не управляются GNOME Shell?
  2. Как мне заставить окна, которые не управляются GNOME Shell, управляться GNOME Shell с помощью wmctrl?
  3. Как мне убедиться, что GNOME Shell будет продолжать управлять добавленными окнами после перезапуска сеанса?

Одно замечание: я пробовал использовать версию Firefox как из Snap Store, так и непосредственно от Mozilla, и результаты были одинаковыми. Поэтому я предполагаю, что эта проблема не связана с источником установочного пакета.

Спасибо,

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

Решение проблемы с управлением окнами в GNOME Shell

При использовании Ubuntu некоторые пользователи сталкиваются с проблемой, когда GNOME Shell не управляет всеми открытыми окнами приложений, что приводит к неупорядоченному размещению окон после перезагрузки. В частности, в вашем случае это проявляется в отсутствии управления окнами Firefox и Thunderbird, что вызывает дополнительные неудобства при работе с несколькими окнами. Давайте подробно рассмотрим, как можно решить данную проблему.

Шаг 1: Выявление окон, которые не управляются GNOME Shell

Для начала необходимо выяснить, какие окна не отображаются в системе управления окон. Вы уже использовали команду wmctrl -l, которая показывает список всех открытых окон, доступных GNOME Shell. Однако, если некоторые окна отсутствуют в этом списке, вы можете использовать следующие методы для их обнаружения:

  1. Использование xwininfo:
    Эта команда позволяет получить информацию о конкретных окнах. Запустите её и кликните на окно, которое вас интересует:

    xwininfo

    В результате вы получите ID окна и другую полезную информацию.

  2. Использование xprop:
    Эта команда отображает свойства окон. Кликните на окне и введите следующую команду:

    xprop

    Обратите внимание на атрибуты, которые могут подсказать, управляется ли данное окно GNOME Shell.

Шаг 2: Принуждение к управлению окнами через wmctrl

Если вы хотите заставить конкретные окна управляться GNOME Shell с помощью wmctrl, стоит отметить, что эта утилита в основном предназначена для управления окнами, которые уже под контролем управляющего окнами менеджера. Однако вы можете попробовать следующее:

  1. Проверка параметров запуска приложения:
    Убедитесь, что ваши приложения (Firefox, Thunderbird) запускаются с правильными аргументами. Иногда определенные параметры могут влиять на их поведение при старте.

  2. Запуск через оболочку:
    Попробуйте запустить приложения через терминал с следующей командой:

    wmctrl -r "Имя окна" -b add,above

    Это может помочь «пригласить» ваше окно под управление.

  3. Автоматизация с помощью скрипта:
    Вы можете создать скрипт, который будет автоматически расставлять окна после запуска:

    #!/bin/bash
    wmctrl -r "Mozilla Firefox" -e 0,10,10,800,600

Шаг 3: Автоматизация управления окнами при перезагрузке сессии

Чтобы GNOME Shell продолжал управление окнами, которые не были изначально связаны с ним во время перезапуска, используйте следующие стратегии:

  1. Кастомизация конфигурации сессии:
    В некоторых случаях поможет создание файла сессии, где вы сможете указать, как именно должны открываться приложения после перезагрузки.

  2. Использование GSettings:
    Вы можете установить значение для GNOME Shell, чтобы он управлял указателем приложений:

    gsettings set org.gnome.mutter workspaces-only-on-screen true
  3. Следите за обновлениями GNOME Shell:
    Иногда такие проблемы могут возникнуть из-за ошибок в конкретной версии GNOME Shell. Убедитесь, что ваш софт обновлен до последней версии.

Заключение

Проблемы с управлением окон в GNOME Shell могут быть довольно неудобными, особенно при работе с несколькими приложениями. Выявление и исправление таких проблем требует предварительной диагностики и применения множества подходов. Следуйте указанным шагам, чтобы оптимизировать свои рабочие процессы и восстановить привычный порядок в управлении окнами на вашем рабочем столе Ubuntu.

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

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