![配置 Qt 暗模式](https://linux22.com/image/227255/%E9%85%8D%E7%BD%AE%20Qt%20%E6%9A%97%E6%A8%A1%E5%BC%8F.png)
从 Fedora 37 升级到 39 后,当从配置为暗模式的 gnome shell 会话启动 Qt 应用程序(例如 vlc)时,它们不再以暗模式呈现。
显然,Qt 应用程序应该在 Fedora 39 中默认以暗模式呈现,根据https://jgrulich.cz/2023/08/22/qt-theming-in-fedora-workstation/- 但在我的系统上他们没有。
Gtk 应用程序(例如 Gnome shell 设置)以暗模式呈现,Gnome shell 配置如下:
$ gsettings get org.gnome.desktop.interface color-scheme
'prefer-dark'
Fedora 升级、自动删除等后,将安装以下 adwaita 软件包:
$ rpm -qa | grep adwaita
adwaita-cursor-theme-45.0-1.fc39.noarch
adwaita-icon-theme-45.0-1.fc39.noarch
qadwaitadecorations-qt6-0.1.3-2.fc39.x86_64
qadwaitadecorations-qt5-0.1.3-2.fc39.x86_64
libadwaita-1.4.2-2.fc39.x86_64
adwaita-gtk2-theme-3.28-17.fc39.x86_64
我怎样才能进一步调试这个?
如何修复 Qt 应用程序的 Gnome shell 暗模式集成?
或者,默认情况下如何为所有 Qt 应用程序配置暗模式?
答案1
在 Fedora 39 上,还有 adwaita-qt6/adwaita-qt5 软件包可用于为 Qt 应用程序提供 Gnome shell 样式。然而,adwaita-qt 项目未维护QT_STYLE_OVERRIDE=Adwaita-Dark
这表明,即通过某种作品强制使用深色 adwaita 主题,但深色模式不完整,例如菜单栏仍然是浅色的。
解决方法是安装kvantum
主题“引擎”,其默认主题为暗模式风格。
因此,以下内容足以在深色模式下运行 vlc:
$ export QT_STYLE_OVERRIDE=kvantum
$ vlc
或者
$ QT_STYLE_OVERRIDE=kvantum vlc
注意:与 Qt4 不同,Qt5 及以上版本无法通过 中的某些点文件配置样式$HOME
,而必须工作与环境变量。
不幸的是,kvantum 的默认设置也不是完美的。例如,vlc 和 okular 中的普通面板标签是灰色背景上的黑色字体,例如播放时间和剩余时间 - 这当然使它们难以阅读。
另一个部分解决方法是使用自定义调色板安装qt5ct
和配置 Qt Fusion 样式,即配色方案“较暗”:
$ QT_QPA_PLATFORMTHEME=qt5ct qt5ct
这样:
$ head -n 6 ~/.config/qt5ct/qt5ct.conf
[Appearance]
color_scheme_path=/usr/share/qt5ct/colors/darker.conf
custom_palette=true
standard_dialogs=default
style=Fusion
同样,为了让 Qt 程序真正使用所有这些,必须设置一个环境变量。QT_QPA_PLATFORMTHEME
不过,这一次是。
例子:
$ QT_QPA_PLATFORMTHEME=qt5ct vlc
这为 vlc 带来了更好的暗模式样式,即播放时间/剩余时间标签现在也显示为深灰色背景上的白色文本,并且不再有任何故障。
但是,在 okular 等 KDE 程序上,此解决方法无效。这意味着 okular 只是使用其默认的灯光模式样式,并且没有任何更改。