快轉到主要內容

透過Kvantum解決QT程式在GNOME桌面醜爆的問題

· 民國115年丙午年
·
切換繁體/簡體
分類 Linux系統 Linux使用技巧
標籤 GNOME Flatpak KDE Plasma
目錄

全域修改Linux桌面的QT程式主題,美化一下醜陋的圖示。

如果在GTK寫成的Linux桌面環境安裝QT寫的程式,主題外觀往往會非常難看,風格不統一。

用QT寫的著名程式有PyQT、KDE系列APP、Dolphin、Krita、VLC、OBS Studio、KeePassXC、qBittorrent、Qt Creator等等。

如下圖,在GNOME桌面安裝Dolphin檔案管理器,圖示變得很醜!

在Ubuntu 24.04的GNOME 46桌面執行QT程式

但是QT程式在KDE Plasma桌面看起來一切正常!

同理,在XFCE、Cinnamon、Mate桌面安裝QT程式也會遇到醜爆的問題。

理由是在GTK桌面執行QT程式,連結到libQt5Core.solibQt6Core.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-themes

2. 安裝qt6ct與qt5ct
#

這是調整Kvantum主題的前端。非必要,只是這個工具可以方便自訂Kvantum內容,包括自訂QT程式要使用的圖示主題。

Ubuntu安裝以下套件:

sudo apt install qt6ct qt5ct

3. 準備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-theme

4. 全域修改QT程式主題
#

  1. 為了讓所有程式使用Kvantum主題,應設定環境變數QT_STYLE_OVERRIDE=kvantum,但是我這裡要用qt6ct調整,故設定QT_QPA_PLATFORMTHEME=qt6ct,然後它就會套用Kvantum主題。

  2. 不同桌面有不同設定方法,雖然Kvantum文件建議放~/.bashrc,但我得用/etc/environment才有效果。編輯這個檔案:

sudo vim /etc/environment
  1. 加入以下環境變數。這裡得要注意,因為Ubuntu 24.04收的KDE程式多半還是QT5寫的,因此要視情況將qt6ct改成qt5ct。QT6程式依然可以吃到qt5ct的主題設定。
export QT_QPA_PLATFORMTHEME=qt5ct
  1. 開啟Kvantum Manager,選取儲存庫主題目錄下的KvLibadwaita安裝

  2. 設定目前的主題為KvLibadwaita。設定檔會儲存到~/.config/Kvantum/

  3. 安裝Kvantum主題可能會在一些QT程式點選選單的時候出現礙眼的tooltip提示框。在Kvantum → Sizes & Delay將其設定為999

  4. 然後再開啟qt6ct或qt5ct,選取主題為Kvantum。

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

  6. 重開機,新的QT主題應該就會自動套用了。通常是KDE自家開發的APP有效,但其他用QT寫的程式則不一定。

5. 給Flatpak格式的QT程式套用主題
#

  1. 給Flatpak設定全域環境變數,QT_QPA_PLATFORMTHEME無效,要用QT_STYLE_OVERRIDE
flatpak --user override --env=QT_STYLE_OVERRIDE=kvantum
  1. 允許Flatpak程式讀取Kvantum的主題目錄
flatpak --user override --filesystem=xdg-config/Kvantum:ro
  1. 安裝Flatpak版的Kvantum,QT5和QT6的都安裝
flatpak install org.kde.KStyle.Kvantum

6. 解決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

參考資料
#

相關文章


此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。

(留言板載入中)這是Giscus留言板,需要Github帳號才能留言。支援Markdown語法,若要上傳圖片請善用外部圖床。您的留言會在Github Discussions向所有人公開。

Click here to edit your comments.

(留言板載入中)這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用外部圖床網站。