设置
当 Qt 应用程序(KeePassXC、AntiMicroX)自动启动(通过自动启动)时,不会应用 GTK 主题。
- 所有应用程序都是通过标准
apt
包安装的(我知道 snap 主题问题)。 - 我在 Ubuntu 上
20.04
,我使用 Yaru 深色 gtk 主题。 - 要将 GTK 主题应用到 Qt 应用程序上,我执行以下操作:
- 安装
qt5-style-plugins
apt 包(及其所有依赖项) - 添加了一行到
/etc/environment
:QT_QPA_PLATFORMTHEME=gtk2
- 如果我手动启动应用程序,这将正常工作
- 安装
进一步的调整表明,在冷启动时主题从未得到正确应用,但是,在重新启动时,它有时确实有效。
问题
我如何确保深色 gtk 应用程序主题得到正确使用?
我认为当自动启动发生时,某些设置未加载,因此出现故障。是否有某种“服务”那些应用程序需要等待?
我应该尝试增加延迟吗?
答案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
:
[Appearance] icon_theme=Numix-Circle standard_dialogs=gtk2 style=gtk2
- 如果已安装,它会添加一个 X 会话配置
为了调试应用程序的环境,可以使用此 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 ~/*
资料来源:
- 此问题下的评论
- 如何确定环境变量来自哪里?
- 如何延迟启动特定程序?
答案2
在 Xubuntu 20.04 LTS 上
首先,使用以下工具安装 Qt5 配置工具
$ sudo apt install qt5ct
/etc/X11/Xsession.d/56xubuntu-session
然后,通过在前面插入井号来注释掉以下行:
sudo nano /etc/X11/Xsession.d/56xubuntu-session
# QT5 apps to use GTK style
#export QT_QPA_PLATFORMTHEME=gtk2
现在,注销并重新登录。使用Menu
→ Settings
→所做的更改Qt5 Settings
将立即生效。