Uniform look for Qt and GTK applications (简体中文)
基于 Qt 和 GTK 的程序使用不同的工具包来渲染图形化用户界面,各自带有不同的主题、风格和图标,所以观感就明显有所不同。这篇文章将帮助你体验让你的 Qt 和 GTK 程序看起来更现代化、集成化的桌面。
介绍
要想在不同的工具包之间获得相似的外观,你很可能需要修改以下内容:
- 主题 - 包含一套风格、图标主题和颜色主题。
- 风格 - 图形布置,观感。
- 图标主题 - 一套整体的图标。
- 颜色主题 - 一套连接风格的整体配色。
你可以有多种选择:
- 使用下面列出的每个工具箱中的工具分别修改 Qt 和 GTK 的样式,以选择外观相似的主题(样式,颜色,图标,光标,字体)。
- 使用特殊的主题引擎,该引擎将对其他图形工具箱的修改作为中介,以匹配您的主要工具箱。
Qt和GTK的样式
There are widget style sets available for the purpose of integration, where builds are written and provided for both Qt and GTK, all major versions included. With these, you can have one look for all applications regardless of the toolkit they had been written with.
Breeze
Breeze是KDE Plasma的默认Qt样式。它可以与Qt5的breeze,Qt4的breeze-kde4AUR以及GTK 2和GTK 3的breeze-gtk软件包一起安装。
安装后,您可以挑选GTK配置工具更改GTK主题。
如果当前运行的是KDE Plasma,请安装kde-gtk-config并从命令行运行它,或转到“系统设置>应用程序样式>GNOME应用程序样式(GTK)”进行GTK程序的样式配置。在GTK样式配置模块之外的“系统设置”中设置的字体,图标主题,光标和小部件样式将仅影响Qt。应该使用前面提到的模块手动设置GTK设置。
Adwaita
Adwaita是默认的GNOME主题。GTK 3版本包含在gtk3软件包中,而GTK 2版本包含在gnome-themes-extra中。 adwaita-qt是Adwaita主题的Qt接口。与模仿GTK 2主题的#QGtkStyle不同,它提供了本机Qt样式,使其看起来像GTK 3 Adwaita。可以分别安装Qt 4 adwaita-qt4AUR和Qt5adwaita-qtAUR版本的软件包。
要将Qt样式设置为默认值:
- 对于Qt4,可以使用Qt配置(
qtconfig-qt4
)启用它,在外观>GUI样式中选择adwaita。或者,编辑/etc/xdg/Trolltech.conf
(系统范围)或~/.config/Trolltech.conf
(用户特定)文件:
~/.config/Trolltech.conf
... [Qt] style=adwaita ...
- 对于Qt 5,可以通过启用以下环境变量:
QT_STYLE_OVERRIDE=adwaita
。或者,使用qt5ct软件包。更多详细说明,参考Qt#Configuration of Qt5 apps under environments other than KDE Plasma。
Kvantum
Kvantum(kvantum-qt5)是用于Qt5的可定制的基于SVG的主题引擎,具有多种内置样式,包括一些流行的GTK主题的版本,例如Adapta,Arc,Ambiance和Materia。
主题引擎
主题引擎可以认为是从一个或多个工具翻译主题(图标除外)很小的API层。这些引擎为进程添加额外的代码,这种解决方案不是非常精致更多为本来风格优化。
QGtkStyle
此Qt样式使用GTK 2渲染所有组件以便于与GNOME和类似基于GTK的环境相协调。从Qt 4.5开始,此样式包含在Qt中。它要求安装gtk2并进行配置。
这是Cinnamon,GNOME和Xfce中的默认Qt4样式,也是Cinnamon,GNOME,MATE,LXDE和Xfce中的默认Qt5样式。在其他环境中:
- For Qt4, it can be enabled with Qt Configuration (
qtconfig-qt4
), choose GTK under Appearance > GUI Style. Alternatively, edit the/etc/xdg/Trolltech.conf
(system-wide) or~/.config/Trolltech.conf
(user-specific) file: - 对于Qt4,可以使用Qt配置(
qtconfig-qt4
)启用它,在外观>GUI样式 下选择GTK。或者,编辑/etc/xdg/Trolltech.conf
(系统范围)或~/.config/Trolltech.conf
(用户特定)文件:
~/.config/Trolltech.conf
... [Qt] style=GTK+ ...
- 对于Qt 5,可以通过安装qt5-stylepluginsAUR并设置以下环境变量来启用它:
QT_QPA_PLATFORMTHEME=gtk2
为了完全统一,请确保配置的GTK主题同时支持GTK 2和GTK3。如果将Qt配置为使用GTK2后导致首选主题渲染不一致,请安装gtk-theme-switch2AUR,然后选择一个主题。
QGnomePlatform
Qt 5 平台主题适用于 Qt 应用程序的 GNOME 外观设置。它可以与 qgnomeplatformAUR 软件包一起安装,也可以与开发版本的 qgnomeplatform-gitAUR 软件包一起安装。它本身不提供 Qt 样式,而是需要同时支持 Qt 和 GTK 样式。
从 3.20 版开始,此平台主题已在 GNOME 中自动启用。对于其他系统,可以通过设置以下环境变量来启用它:QT_QPA_PLATFORMTHEME=qgnomeplatform
.。
Tips and tricks
在Qt应用程序中使用GTK图标主题
如果您正在运行Plasma,请安装kde-gtk-config,然后在系统设置 > 应用程序风格 > 应用样式 > 配置GNOME/GTK应用样式下选择图标主题。
如果您使用的是GNOME,请首先检查是否安装了dconf-editor。
然后,运行dconf-editor
,然后在组织 > gnome > 桌面 > 界面 下查找icon-theme
键,并将其更改为您的首选图标主题。
如果您使用的不是GNOME,例如,如果您使用的是i3-wm,请首先安装dconf-editor。
然后,运行dconf-editor
,然后在 组织 > gnome > 桌面 > 界面下查找icon-theme
键,并将其更改为您的图标主题。
由于您使用的不是GNOME,因此可能需要在个人的配置文件中设置DESKTOP_SESSION
的值。 为此,请在终端中执行以下代码,然后重新启动系统。
$ echo 'export DESKTOP_SESSION=gnome' >> /etc/profile
或者
将export DESKTOP_SESSION=gnome
设置在~/.xinitrc
中的某个位置,或者在Xprofile中使用一个Display manager。
$ awk -F= '/icon-theme/ {print $2}' ~/.gtkrc-2.0
添加标题栏和框架到KDE Plasma下的GTK3应用程序
要使Gnome/GTK应用程序显示KDE/Plasma的标题栏和框架,请安装gtk3-nocsd-gitAUR并重新启动窗口管理器以加载更新的库路径。
您还可以使用它运行Gtk应用程序:
$ gtk3-nocsd gedit
在KDE Plasma下改善GTK应用程序的亚像素渲染
See Font configuration#LCD filter.
一致的文件对话框
为了具有相同的文件对话框,可以使用XDG Portal。
安装 xdg-desktop-portal和xdg-desktop-portal-kde,并在环境变量environment variable中设置GTK_USE_PORTAL=1
。
问题解决
主题不作用于GTK程序
如果你安装的风格或主题引擎在某些GTK程序不能显示,很可能你的GTK设置文件因某些原因不能被加载。你可以检查你的系统找到那些文件作如下设置:
export | grep gtk
通常那些文件设置在 ~/.gtkrc (GTK1), ~/.gtkrc2.0 或 ~/.gtkrc2.0-kde (GTK2)
新版gtk-qt-engine 使用 ~/.gtkrc2.0-kde 和 ~/.kde/env/gtk-qt-engine.rc.sh 设置输出变量 如果你最近移除了gtk-qt-engine然后试图设置GTK主题,你必有要移除 ~/.kde/env/gtk-qt-engine.rc.sh 然后重启。这样做会使GTK外观使用标准的设置 ~/.gtkrc2.0来代替 ~/.gtkrc2.0-kde
系统升级后GTK应用程序不使用svg(breeze)图标
尝试运行下面命令来解决问题:
# gdk-pixbuf-query-loaders --update-cache
Flatpak Qt应用程序不使用Gnome Adwaita黑暗主题
如果将主题切换为Adwaita-dark后,Flatpak Qt应用程序仍使用精简版,请安装所需的KStyle:
# flatpak install flathub org.kde.KStyle.Adwaita
即使在设置Qt主题后,在GNOME Wayland上运行的Qt应用也有不匹配的窗口装饰外观
为了有一个匹配的窗口装饰外观,您必须安装qgnomeplatformAUR,并设置以下环境变量environment variable:QT_QPA_PLATFORMTHEME='gnome'
。
GTK 应用程序不能完全使用 KDE 系统设置
为了进一步整合 GTK 应用程序上的 Plasma 设置,可能需要安装 gnome-settings-daemon、gsettings-desktop-schemas 和 gsettings-qt,这将为 GTK 提供适当的 Qt 绑定。
安装kde-gtk-config后,没有“系统设置>应用程序样式> GTK”菜单
使用kde-gtk-config时,可以选择lxappearance之类的GTK configuration tools来配置GTK 2和GTK 3样式。
即使它来自LXDE项目,它也是与桌面无关的(它不需要LXDE桌面的其他部分)