Тема GTK не работает должным образом в запускаемых приложениях Qt

Когда приложение Qt (KeePassXC, AntiMicroX) запускается автоматически (через автозапуск), тема GTK не применяется.

  • Все приложения устанавливаются с помощью стандартных пакетов apt (I мне известно о проблемах с привязкой тем).
  • Я использую Ubuntu 20.04 , я использую темную тему Yaru gtk.
  • Чтобы применить тему GTK к приложениям Qt, я сделал следующее:
    • Установлен пакет qt5-style-plugins apt (со всеми его зависимостями)
    • Добавлена ​​строка в / etc / environment : QT_QPA_PLATFORMTHEME = gtk2
    • это работает правильно, если я запускаю приложения вручную

Autostarted KeepassXC and AntimicroX with broken theme, manually started clocks with proper theming

Как я могу гарантировать, что темная тема приложения gtk используется правильно?

Я бы предположил, что при автозапуске некоторые настройки не загружаются, отсюда и поломка. Есть ли какая-то «служба» , которую эти приложения должны будут ждать? Стоит ли пытаться добавить задержку?

3
задан 14 December 2020 в 16:57

1 ответ

За счет чего это работает

Добавлена ​​задержка запуска на 1 секунду для файлов автозапуска на рабочем столе (в ~/.config/autostart/):

[Desktop Entry]
...
X-GNOME-Autostart-Delay=1

При этом приложения запускались после X сеанс правильно инициализировался после входа в систему. Больше ничего не требовалось (кроме первоначальной настройки).

Примечания

  • Инструмент настройки QT (поставляется в пакете qt5ct apt) можно использовать, но не обязательно.

    • Если он установлен, он добавляет конфигурацию сеанса X /etc/X11/Xsession.d/99qt5ct, которая устанавливает для QT_QPA_PLATFORMTHEME значение qt5ct, если оно не установлено.
    • Это обеспечивает более широкую настройку тем оформления Qt. Я использовал минимальный ~/.config/qt5ct/qt5ct.conf:
    [Внешний вид]
    icon_theme = Numix-круг
    стандартные_диалоги=gtk2
    стиль=gtk2
    
  • Для отладки env приложений можно проверить с помощью этой команды оболочки (обратите внимание, я использую fish, а не bash): strings /proc/(pidof keepassxc)/environ | grep QT

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

    # для всей системы — это было быстро
    grep QT_QPA_PLATFORMTHEME --рекурсивный /etc/*
    # на пользователя - в моей системе это было очень медленно (*khm* steam *khm*)
    grep QT_QPA_PLATFORMTHEME --рекурсивный ~/*
    
  • Источники:

2
ответ дан 15 December 2020 в 20:54

Другие вопросы по тегам:

Похожие вопросы: