配置 Qt 暗模式

配置 Qt 暗模式

从 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 只是使用其默认的灯光模式样式,并且没有任何更改。

相关内容