全域修改Linux桌面的QT程式主題,美化一下醜陋的圖示。
如果在GTK寫成的Linux桌面環境安裝QT寫的程式,主題外觀往往會非常難看,風格不統一。
用QT寫的著名程式有PyQT、KDE系列APP、Dolphin、Krita、VLC、OBS Studio、KeePassXC、qBittorrent、Qt Creator等等。
如下圖,在GNOME桌面安裝Dolphin檔案管理器,圖示變得很醜!
但是QT程式在KDE Plasma桌面看起來一切正常!
同理,在XFCE、Cinnamon、Mate桌面安裝QT程式也會遇到醜爆的問題。
理由是在GTK桌面執行QT程式,連結到libQt5Core.so或libQt6Core.so的QT程式會自動使用QGtk3Style適應主題,使用內建的Fusion主題。但是這個主題還停留在十幾年前的QT4風格,導致視覺上與現在新版GTK4格格不入。
這可不行呀,很多好用程式都QT寫的,GTK根本沒有替代品,卻因為這種因素讓它外觀變得其貌不揚!
根據Arch Wiki羅列的解決方案,比較好的方式,是透過第三方主題引擎修改QT程式的外觀,讓它好看一點。
這個程式就是:Kvantum
Kvantum設計上是用來修改QT程式的主題引擎,適用於KDE Plasma與LXQT桌面,但也能在GTK寫成的桌面使用。
修改之後QT程式就會變的好看一點。
1. 安裝Kvantum Manager#
依照Github指示安裝。
目前Ubuntu 24.04的套件庫只有收錄QT5的套件,因此要修改QT6的程式,需要使用papirus的PPA:
sudo add-apt-repository ppa:papirus/papirus
sudo apt update然後安裝Kvantum Manager。qt6-style-kvantum-themes 似乎在Ubuntu 24.04還沒建置?但不裝也沒關係。
sudo apt install qt6-style-kvantum qt6-style-kvantum-themes qt5-style-kvantum qt5-style-kvantum-themes2. 安裝qt6ct與qt5ct#
這是調整Kvantum主題的前端。非必要,只是這個工具可以方便自訂Kvantum內容,包括自訂QT程式要使用的圖示主題。
Ubuntu安裝以下套件:
sudo apt install qt6ct qt5ct3. 準備QT主題包#
我得說,Kvantum內建的主題,大部分還是醜爆,沒比QGtkStyle好到哪去。
Github和KDE Store有很多人分享自製的Kvantum主題。我裝的是這個:KvLibadwaita,讓QT模擬GNOME的Libadwaita風格,雖然看上去還是怪怪的。在Github儲存庫點選下載.zip,然後解壓縮。
另外還要處理圖示包的問題。看是要讓QT程式使用GNOME的Adwaita,或者讓它使用KDE Breeze。Ubuntu的Yaru也可以善加利用。所以安裝以下套件:
sudo apt install adwaita-icon-theme breeze yaru-theme4. 全域修改QT程式主題#
為了讓所有程式使用Kvantum主題,應設定環境變數
QT_STYLE_OVERRIDE=kvantum,但是我這裡要用qt6ct調整,故設定QT_QPA_PLATFORMTHEME=qt6ct,然後它就會套用Kvantum主題。不同桌面有不同設定方法,雖然Kvantum文件建議放
~/.bashrc,但我得用/etc/environment才有效果。編輯這個檔案:
sudo vim /etc/environment- 加入以下環境變數。這裡得要注意,因為Ubuntu 24.04收的KDE程式多半還是QT5寫的,因此要視情況將
qt6ct改成qt5ct。QT6程式依然可以吃到qt5ct的主題設定。
export QT_QPA_PLATFORMTHEME=qt5ct開啟Kvantum Manager,選取儲存庫主題目錄下的
KvLibadwaita安裝
設定目前的主題為KvLibadwaita。設定檔會儲存到
~/.config/Kvantum/。
安裝Kvantum主題可能會在一些QT程式點選選單的時候出現礙眼的tooltip提示框。在Kvantum → Sizes & Delay將其設定為999
然後再開啟qt6ct或qt5ct,選取主題為Kvantum。

設定要用的圖示包,例如Adwaita

重開機,新的QT主題應該就會自動套用了。通常是KDE自家開發的APP有效,但其他用QT寫的程式則不一定。
5. 給Flatpak格式的QT程式套用主題#
- 給Flatpak設定全域環境變數,
QT_QPA_PLATFORMTHEME無效,要用QT_STYLE_OVERRIDE
flatpak --user override --env=QT_STYLE_OVERRIDE=kvantum- 允許Flatpak程式讀取Kvantum的主題目錄
flatpak --user override --filesystem=xdg-config/Kvantum:ro- 安裝Flatpak版的Kvantum,QT5和QT6的都安裝
flatpak install org.kde.KStyle.Kvantum6. 解決Wayland的QT程式視窗無陰影問題#
如果QT程式跑在Wayland下,會出現視窗標題欄陰影缺失的問題,導致無法辨認視窗前後關係。
這是GNOME的Wayland合成器導致的問題,直到GNOME 46都還不肯實現server side window decoration,所以QT的「視窗標題欄」不會套用GNOME主題。
暫時的解決方法是強迫所有QT程式以XWayland模式執行,才可以正常繪製。
在/etc/envrionment加入這個環境變數,讓QT優先使用X11,不行的話再用Wayland後端:
export QT_QPA_PLATFORM="xcb;wayland"這樣視窗陰影就會回來。
或者,使用QAdwaitaDecorations提供的主題來解決。安裝後設定這個環境變數
export QT_WAYLAND_DECORATION=adwaita

