統一 Qt 和 GTK 應用程式的外觀
基於 Qt 和 GTK 的程序使用不同的圖形庫來渲染圖形化用戶界面,各自具有不同的主題、風格和圖標,所以觀感明顯有所不同。這篇文章將使你的 Qt 和 GTK 程序看起來更相似,以此獲得更加現代化、集成化的桌面體驗。
介紹[編輯 | 編輯原始碼]
要想在不同的圖形庫之間獲得相似的外觀,你通常需要修改以下內容:
- 主題——應用程式和組件等元素的自定義外觀。通常包含一套風格、圖標主題和顏色主題。
- 風格——組件的佈局和樣式。
- 圖標主題——全局圖標。
- 顏色主題——與風格相適應的全局顏色樣式。
你可以選擇下面的不同方法:
- 使用下面列出的,適用於各個圖形庫的工具分別修改 Qt 和 GTK 的主題,以選擇外觀相似的主題(樣式,顏色,圖標,光標,字體)。
- 使用特殊的主題引擎,該引擎作為中間人修改其他圖形庫的主題,以匹配您的主要圖形庫。
Qt 和 GTK 通用的主題[編輯 | 編輯原始碼]
下面列出了幾種主題,Qt 和 GTK 都可使用,並且風格統一。這些主題適配了 Qt 和 GTK 的主要版本。有了這些主題,你就可以在使用不同的圖形庫構建的應用程式之間得到相同的外觀了。
Breeze[編輯 | 編輯原始碼]
Breeze 是 KDE Plasma 的默認 Qt 主題。它可以通過適用於 Qt 5 的 breeze包,適用於 Qt 4 的 breeze-kde4AUR 以及適用於 GTK 2 和 GTK 3 的 breeze-gtk包 軟件包安裝。
安裝後,您可以使用GTK 配置工具更改 GTK 主題。
如果當前運行的是 KDE Plasma,請安裝 kde-gtk-config包,然後從命令行運行之;或者註銷後重新登錄,接着轉到系統設置 > 外觀 > 應用程式風格 > 配置 GNOME/GTK 應用程式風格…來配置 GTK 程序的主題。「系統設置」中設置的字體、圖標主題、光標和組件樣式將自動應用至 GTK,僅 GTK 主題需要用前面提到的 GTK 配置工具手動更改。
Adwaita[編輯 | 編輯原始碼]
Adwaita是 GNOME 默認的主題。GTK 3 版本包含在 gtk3包 軟件包中,而 GTK 2 版本包含在 gnome-themes-extra包 中。adwaita-qt是 Adwaita 主題的 Qt 移植版本。與模仿 GTK 2 主題的 #QGtkStyle 不同,它提供了與 GTK 3 Adwaita 相似的原生 Qt 樣式。可以通過適用於 Qt 4 的 adwaita-qt4AUR、適用於 Qt 5 的 adwaita-qt5包 和適用於 Qt 6 的 adwaita-qt6包 軟件包來安裝此主題。
要將 Qt 樣式設置為默認值:
- 對於 Qt 4,可以使用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#在KDE Plasma以外的環境下配置Qt5應用程式。
主題引擎[編輯 | 編輯原始碼]
主題引擎可以認為是一個簡單的 API,用於從一個或多個圖形庫轉譯主題(圖標除外)。這些引擎為進程添加額外的代碼,這種解決方案不如使用原生主題那樣優雅可行。
Kvantum[編輯 | 編輯原始碼]
Kvantum(kvantum包)是一個用於 Qt 5 的,基於 SVG 的可定製主題引擎,具有多種內置樣式,包含一些版本的流行 GTK 主題,例如 Adapta、Arc、Ambiance 和 Materia。
Kvantum 被視為一種風格而不是主題。要通過環境變量的方式為所有 Qt 應用設置 Kvantum,使用QT_STYLE_OVERRIDE=kvantum
主題配置[編輯 | 編輯原始碼]
要為 Kvantum 設置一個主題變體,如 KvLibadwaita,像這樣編輯配置文件:
/etc/xdg/Kvantum/kvantum.kvconfig(或 ~/.config/Kvantum/kvantum.kvconfig)
... theme=KvLibadwaita ...
QGtkStyle[編輯 | 編輯原始碼]
此 Qt 樣式使用 GTK 2 渲染所有組件以便於與 GNOME 和類似基於 GTK 的環境相協調。從 Qt 4.5 開始,此樣式包含在 Qt 中。它要求安裝 gtk2包 並進行配置。
這是 Cinnamon、GNOME 和 Xfce 中的默認 Qt 4 樣式,也是 Cinnamon、GNOME、MATE、LXDE 和 Xfce 中的默認 Qt 5 樣式。至於其他環境:
- 對於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 和 GTK 3。如果你的首選主題在將 Qt 配置為使用 GTK 2 後出現了不一致的渲染效果,請安裝 gtk-theme-switch2AUR,然後選擇一個主題。
QAdwaitaDecorations[編輯 | 編輯原始碼]
Qt 裝飾插件實現類似 GNOME Adwaita 的客戶端裝飾,適用於Qt 6 和 QT 5 平台。
安裝 qadwaitadecorations-qt5AUR 和 qadwaitadecorations-qt6包 軟件包。
可以通過設置環境變量 QT_WAYLAND_DECORATION=adwaita
開啟。
QWhiteSurGtkDecorations[編輯 | 編輯原始碼]
QWhiteSurGtkDecorations是一個 Qt 裝飾插件,可以在Gnome wayland上實現類似 GNOME WhiteSur-gtk 主題風格的客戶端裝飾,適用於Qt 6 和 QT 5 平台。
需要安裝 qwhitesurgtkdecorations-qt5AUR 和 qwhitesurgtkdecorations-qt6包 軟件包。
可以通過設置環境變量 QT_WAYLAND_DECORATION=whitesur-gtk
啟用它。
Tips and tricks[編輯 | 編輯原始碼]
在Qt應用程式中使用GTK圖標主題[編輯 | 編輯原始碼]
如果您正在運行Plasma,請安裝kde-gtk-config包,然後在系統設置 > 應用程式風格 > 應用樣式 > 配置GNOME/GTK應用樣式下選擇圖標主題。
如果您使用的是GNOME,請首先檢查是否安裝了dconf-editor包。
然後,運行dconf-editor
,然後在org> gnome > desktop > interface 下查找icon-theme
鍵,並將其更改為您的首選圖標主題。
如果您使用的不是GNOME,例如,如果您使用的是i3-wm包,請首先安裝dconf-editor包。
然後,運行dconf-editor
,然後在 org > gnome > desktop> interface下查找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應用也有不匹配的窗口裝飾外觀[編輯 | 編輯原始碼]
安裝 qadwaitadecorations-qt5AUR 和 qadwaitadecorations-qt6AUR,並設置以下環境變量environment variable:export QT_WAYLAND_DECORATION=adwaita
。
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桌面的其他部分)
Dolphin主題與Nautilus匹配效果不佳[編輯 | 編輯原始碼]
參考 arch:Dolphin#Mismatched_folder_view_background_colors 小節以解決顏色奇怪的問題