Если приложение Flatpak запускается с темой Adwaita, в то время как остальная часть Ubuntu 24.04 использует Yaru, возможно, файлы тем, установленные на вашем рабочем столе, работают нормально. Flatpak запускает приложения в изолированной среде, поэтому программа не считывает автоматически каждый файл темы хоста. Обычно решение заключается в том, чтобы убедиться, что выбранная тема доступна среде выполнения Flatpak и что служба настроек рабочего стола может передавать активный выбор.
Данное руководство начинается с простых проверок и переходит к целенаправленному устранению неполадок. Оно в основном применимо к приложениям GTK 3. Приложения GTK 4 и libadwaita могут использовать другие правила оформления, поэтому тема, работающая в меню «Файлы» или другом приложении GTK 3, не гарантирует, что она будет применяться ко всем окнам Flatpak.
Что вам нужно знать в первую очередь
Тема GTK управляет внешним видом элементов интерфейса, таких как кнопки и меню, в приложениях, использующих GTK — набор инструментов для создания графических интерфейсов. Среда выполнения Flatpak предоставляет общие библиотеки, используемые изолированным приложением. В изолированной среде файловая система приложения отделена от хост-системы. В результате файлы темы хост-системы, расположенные в таких местах, как, например, , /usr/share/themesне просто копируются в каждый Flatpak.
В Flatpak для тем GTK 3 поддерживается подход с использованием расширения, названного в честь темы, обычно следующего за `<head>` org.gtk.Gtk3theme.ThemeName. Если это расширение существует в настроенном удаленном репозитории среды выполнения приложения, Flatpak может установить его вместе с приложением или во время обновления. Рабочий стол также должен предоставлять доступ к активной настройке: в X11 используется XSettings, а в Wayland — портал настроек. Портал — это служба рабочего стола, которая предоставляет изолированным приложениям контролируемый доступ к выбранным функциям и настройкам рабочего стола.
В Ubuntu по умолчанию установлена тема Yaru, но сам по себе этот факт не доказывает наличие соответствующего расширения темы Flatpak для каждого приложения и среды выполнения. Доступность может зависеть от названия темы, настроенного удаленного репозитория Flatpak, ветки среды выполнения и инструментария. В документации Flatpak тема Adwaita используется в качестве резервного варианта, если тема или интерфейс настроек недоступны.
Шаг 1: Подтвердите тему оформления и сессию организатора.
Сначала проверьте, применяется ли тема к обычным настольным приложениям. Откройте «Настройки» → «Внешний вид» , обратите внимание на выбранный стиль и откройте предустановленное GTK-приложение. Если и основные приложения выглядят некорректно, исправьте внешний вид рабочего стола, прежде чем изменять настройки Flatpak.
Вы можете проверить название темы GTK в терминале с помощью следующей команды:
gsettings get org.gnome.desktop.interface gtk-theme
В результате получается имя в кавычках, например 'Yaru', . Запишите написание и регистр букв. Flatpak сопоставляет выбранное хостом имя темы GTK с расширением; поиск похожей, но по-другому названной темы может не устранить несоответствие. В документации проекта Yaru от Ubuntu указано, что Yaru является набором тем GTK по умолчанию в Ubuntu.
Также определите, используется ли в вашей сессии Wayland или X11. На экране входа в систему выберите своего пользователя и воспользуйтесь меню с изображением шестеренки, если оно доступно; обычно там отображается имя сессии. Это важно, потому что путь к настройкам различается: Wayland использует портал, а X11 — XSettings. В Ubuntu 24.04 по умолчанию используется сессия GNOME, обычно Wayland, но пользователи могут выбрать другую сессию.
Шаг 2: Обновите Flatpak и проверьте доступность расширений темы.
Выполните общее обновление Flatpak, чтобы обновить установленные приложения, среды выполнения и доступные расширения:
flatpak update
Перед подтверждением ознакомьтесь с предложенными изменениями. Затем выполните поиск в настроенных пультах дистанционного управления расширений, соответствующих записанному вами названию темы. Для выбора темы Yaru попробуйте следующее:
flatpak search org.gtk.Gtk3theme.Yaru
Если в результате поиска будет найдено соответствующее расширение, запишите точный идентификатор приложения и адрес удаленного доступа. Устанавливайте его только в том случае, если Flatpak еще его не установил. Используйте идентификатор и адрес удаленного доступа точно так, как они отображаются:
flatpak install REMOTE EXTENSION_ID
Замените оба написанных заглавными буквами заполнителя фактическими значениями. Не копируйте предполагаемый идентификатор расширения из несвязанной темы или ветки среды выполнения. Некоторые сборки расширений могут быть недоступны для данной среды выполнения; в этом случае приложение может продолжать использовать Adwaita, даже если на хосте установлена Yaru.
В документации Flatpak по интеграции с рабочим столом указано, что соответствующие расширения тем GTK автоматически устанавливаются во время установки или обновления приложения, если они присутствуют в удаленном репозитории. Поэтому, если расширение доступно, но отсутствует, достаточно обновить приложение. Результаты поиска могут меняться в зависимости от удаленных репозиториев и пакетов, поэтому рассматривайте локальный вывод Flatpak как текущую проверку, а не как предположение о названии пакета.
Шаг 3: Перезапустите приложение и обновите службу настроек рабочего стола.
Полностью закройте затронутое приложение, включая все фоновые экземпляры, а затем откройте его снова. Запущенный процесс может сохранить настройки внешнего вида, считанные при запуске.
Если вы используете Wayland, и несколько GTK Flatpak-пакетов по-прежнему игнорируют выбранный стиль, проверьте, установлен ли бэкенд GTK-портала:
dpkg -l xdg-desktop-portal xdg-desktop-portal-gtk
Проверьте статус установки в списке пакетов. В документации Flatpak указано, xdg-desktop-portal-gtkчто он необходим для тем и шрифтов GTK. Если он отсутствует, установите пакет Ubuntu из официального архива:
sudo apt update
sudo apt install xdg-desktop-portal-gtk
Сначала сохраните работу в открытых приложениях. Затем выйдите из системы и войдите снова, что корректно перезапустит сессию пользователя и его портальные службы. Обычно это самый понятный вариант для новичков. Опытные пользователи могут перезапустить свои пользовательские службы из Терминала с помощью команды `cd` systemctl --user restart xdg-desktop-portal.service xdg-desktop-portal-gtk.service, но имена служб и поведение активации могут отличаться в зависимости от установки. Если эта команда сообщает, что модуль не загружен, используйте выход из системы вместо многократного перезапуска служб.
Шаг 4: Проверьте, поддерживает ли приложение данную тему оформления.
Откройте тот же Flatpak и сравните его кнопки, меню и содержимое окна с приложением GTK, установленным из пакетов Ubuntu. Если отличается только один Flatpak, проблема может быть связана с инструментарием, средой выполнения или реализацией этого приложения. Например, некоторые приложения GTK 4 используют libadwaita, которая намеренно следует дизайнерским соглашениям GNOME и не поддерживает произвольные темы GTK так же, как это делают более старые приложения GTK 3. Расширения Flatpak для GTK 3 также не будут изменять стиль приложения Qt.
Если приложение использует современную среду выполнения и установлено расширение темы GTK 3, настройки рабочего стола обычно должны применяться автоматически. Если этого не происходит, проверьте среду выполнения приложения с помощью:
flatpak info APP_ID
Замените APP_IDна фактический идентификатор приложения. Полученные данные помогут вам определить среду выполнения и ветку, о которых следует сообщить, если вы свяжетесь с разработчиком приложения. Однако это само по себе не доказывает, учитывает ли приложение настройки тем оформления GTK.
Распространенные ошибки, которых следует избегать.
- Не следует предоставлять широкий доступ к файловой системе хоста в качестве первого решения. В документации Flatpak отмечается, что предоставление доступа к файлам тем оформления хоста может ослабить песочницу и снизить переносимость. Предпочтительнее использовать поддерживаемое расширение тем оформления и работающую интеграцию с рабочим столом.
- Не следует предполагать, что установка темы с помощью APT автоматически устанавливает её в каждый Flatpak. APT меняет хост. Среде выполнения Flatpak по-прежнему требуется совместимое расширение или поддерживаемый путь к настройкам.
- Не следует путать темный режим с темой GTK. Настройки цветовой схемы рабочего стола и полная тема GTK — это связанные, но разные параметры. Приложение и среда его выполнения должны поддерживать соответствующие настройки.
- Не следует сбрасывать все настройки GNOME или удалять папки с темами. Такие действия могут удалить несвязанные параметры и не добавят отсутствующее расширение Flatpak.
- Не следует использовать переопределение переменных среды в качестве универсального решения. Переопределение может различаться в зависимости от набора инструментов и приложения и может скрывать фактическое отсутствие расширения или проблему с порталом.
Проверьте результат
После обновления или установки соответствующего расширения и перезапуска сессии или приложения подтвердите три вещи: хост по-прежнему сообщает ожидаемое имя темы GTK; соответствующее расширение темы отображается в списке установленных приложений Flatpak; и элементы управления GTK в затронутом приложении теперь выглядят ожидаемым образом. Вы можете просмотреть список установленных Flatpak с помощью команды:
flatpak list --app
Если тема оформления указана правильно, но расширение недоступно для среды выполнения приложения, и визуально отличается только одно приложение, то ограничение может быть специфичным для приложения, а не связано с неработающей темой Ubuntu. При составлении отчета укажите идентификатор приложения Flatpak, ветку среды выполнения, тип сессии, название темы и соответствующий статус пакета на портале. Это позволит сопровождающим проекта получить подробную информацию, необходимую для различения проблемы с упаковкой от проблемы с настройками рабочего стола.
Официальные ссылки