GTK 主题在 Qt 启动应用程序上无法正常工作

MrM*_*ros 6 themes gtk autostart qt 20.04

设置

当 Qt 应用程序(KeePassXC、AntiMicroX)自动启动(通过自动启动)时,不应用 GTK 主题。

  • 所有应用程序都是通过标准apt包安装的(我知道快照主题问题)。
  • 我在 Ubuntu 上20.04,我使用 Yaru dark gtk 主题。
  • 要将 GTK 主题应用到 Qt 应用程序上,我执行了以下操作:
    • 安装qt5-style-pluginsapt 软件包(及其所有依赖项)
    • 添加了一行/etc/environmentQT_QPA_PLATFORMTHEME=gtk2
    • 如果我手动启动应用程序,这可以正常工作

额外的摆弄表明,在冷启动时,主题永远不会正确应用,但是,在重新启动时,它有时确实有效。

问题

  • 如何确保深色 gtk 应用程序主题得到正确使用?

  • 我假设当自动启动发生时,某些设置未加载,因此会损坏。这些应用程序是否需要等待某种“服务” ?

  • 我应该尝试增加延迟吗?

MrM*_*ros 2

是什么让它发挥作用

向自动启动桌面文件添加了 1 秒启动延迟(在 中~/.config/autostart/):

[Desktop Entry]
...
X-GNOME-Autostart-Delay=1
Run Code Online (Sandbox Code Playgroud)

这使得应用程序在登录后 X 会话正确初始化后启动。不需要其他任何东西(除了初始设置之外)。

笔记

  • QT 配置工具(在qt5ctapt 包中提供)是可行的,但不是必需的。

    • 如果安装,它会添加一个 X 会话配置/etc/X11/Xsession.d/99qt5ct,如果未设置,则将其QT_QPA_PLATFORMTHEME设置为qt5ct
    • 它支持更广泛的 Qt 主题配置。我用了最少的~/.config/qt5ct/qt5ct.conf
    [Appearance]
    icon_theme=Numix-Circle
    standard_dialogs=gtk2
    style=gtk2
    
    Run Code Online (Sandbox Code Playgroud)
  • 为了调试应用程序的环境,可以使用此 shell 命令检查(注意,我使用 Fish 而不是 bash):strings /proc/(pidof keepassxc)/environ | grep QT

  • 要调查环境变量的设置位置,可以使用以下命令:

    # system wide - this was quick
    grep QT_QPA_PLATFORMTHEME --recursive /etc/*
    # per user - this was super slow on my system (*khm* steam *khm*)
    grep QT_QPA_PLATFORMTHEME --recursive ~/*
    
    Run Code Online (Sandbox Code Playgroud)
  • 资料来源: