修復 Ubuntu 24.04 中 Flatpak 應用不遵循 GTK 主題的問題

如果某個 Flatpak 應用程式開啟時使用的是 Adwaita 主題,而 Ubuntu 24.04 的其他部分使用的是 Yaru 主題,那麼你桌面上安裝的主題檔案可能沒有問題。 Flatpak 在沙盒環境中運作應用,因此程式不會自動讀取宿主機上的所有主題檔案。通常的解決方法是確保 Flatpak 運行時能夠存取所選主題,並且桌面設定服務能夠傳遞當前選擇的主題。

本指南從簡單的檢查入手,逐步深入到針對性的故障排除。它主要適用於 GTK 3 應用程式。 GTK 4 和 libadwaita 應用程式可能遵循不同的樣式規則,因此在「檔案」或其他 GTK 3 應用程式中有效的樣式主題並不能保證適用於所有 Flatpak 視窗。

首先你需要知道什麼

GTK主題控制使用 GTK(用於建立圖形介面的工具包)的應用程式中按鈕和選單等介面元素的外觀。 Flatpak運行時提供沙盒應用程式使用的共享庫。沙盒將應用程式的檔案系統與宿主系統隔離。因此,宿主主題檔案(例如位於 `/etc/flatpak/` 等位置的檔案)/usr/share/themes不會簡單地複製到每個 Flatpak 檔案中。

Flatpak 支援 GTK 3 主題的方法是創建一個以主題命名的擴展,通常遵循 `<theme-name>` 標籤org.gtk.Gtk3theme.ThemeName。如果擴充功能存在於應用程式執行時的已設定遠端目錄中,Flatpak 可以將其與應用程式一起安裝,或在更新期間安裝。桌面環境也必須公開活動設定:X11 使用 XSettings,而 Wayland 使用設定入口網站。設定入口網站是一種桌面服務,它允許沙盒應用程式對選定的桌面功能和首選項進行受控存取。

Ubuntu 預設的 Yaru 主題已安裝在主機上,但這並不能證明每個應用程式和運行時都有對應的 Flatpak 主題擴充。可用性可能取決於主題名稱、配置的 Flatpak 遠端倉庫、運行時分支和工具包。 Flatpak 文件中提到,當某個主題或設定介面不可用時,Adwaita 將作為備用主題。

步驟 1:確認主機主題和會話

首先檢查主題是否已應用於普通桌面應用程式。開啟「設定」→「外觀」,記下所選樣式,然後開啟一個預先安裝的 GTK 應用程式。如果宿主應用程式也顯示異常,請先修復桌面外觀,然後再變更 Flatpak 設定。

您可以透過終端命令查看 GTK 主題名稱:

gsettings get org.gnome.desktop.interface gtk-theme

結果是一個引號的名稱,例如 ` 'Yaru'<name>`。請記錄拼字和大小寫。 Flatpak 會將主機選擇的 GTK 主題名稱與副檔名進行比對;搜尋名稱相似但不同的主題可能無法解決不符的問題。 Ubuntu 的 Yaru 專案將 Yaru 列為 Ubuntu 的預設 GTK 主題套件。

此外,也要確定您的會話是 Wayland 還是 X11。在登入畫面上,選擇您的用戶,然後使用齒輪選單(如有);會話名稱通常會顯示在那裡。這一點很重要,因為它們的設定路徑不同:Wayland 依賴 Portal,而 X11 使用 XSettings。 Ubuntu 24.04 的預設 GNOME 會話通常使用 Wayland,但使用者可以選擇其他會話。

步驟 2:更新 Flatpak 並檢查主題擴展可用性

執行 Flatpak 常規更新,以便刷新已安裝的應用程式、運行時和可用擴充功能:

flatpak update

確認更改前,請先查看建議的變更。接下來,在已設定的遠端伺服器上搜尋與您記錄的主題名稱相符的擴充功能。例如,對於 Yaru 主題,請嘗試:

flatpak search org.gtk.Gtk3theme.Yaru

如果搜尋結果包含符合的擴充程序,請記下顯示的準確應用程式 ID 和遠端位址。僅當 Flatpak 尚未安裝該擴充功能時才進行安裝。請務必使用顯示的 ID 和遠端位址:

flatpak install REMOTE EXTENSION_ID

請將兩個大寫佔位符替換為實際值。請勿從無關的主題或運行時分支複製猜測的擴充 ID。某些擴展版本可能不適用於特定運行時;在這種情況下,即使宿主程式使用的是 Yaru,應用程式也可以繼續使用 Adwaita。

Flatpak 的桌面整合文件指出,如果遠端目錄中存在匹配的 GTK 主題擴展,則會在應用程式安裝或更新期間自動安裝這些擴展。因此,如果擴充功能可用但應用程式未安裝,則更新應用程式即可解決問題。由於遠端目錄和軟體包會發生變化,搜尋結果可能會有所不同,因此請以本地 Flatpak 的輸出結果為準,而不是依賴軟體包名稱。

步驟 3:重新啟動應用程式並重新整理桌面設定服務

請徹底關閉受影響的應用程序,包括所有後台實例,然後重新開啟。正在運行的進程可能會保留啟動時讀取的外觀設定。

如果您使用 Wayland,並且多個 GTK Flatpak 仍然忽略所選樣式,請檢查 GTK portal 後端是否已安裝:

dpkg -l xdg-desktop-portal xdg-desktop-portal-gtk

查看軟體包清單中是否已安裝。 Flatpak 文件明確指出xdg-desktop-portal-gtk它是 GTK 主題和字體所必需的。如果缺少該軟體包,請從官方歸檔安裝 Ubuntu 軟體包:

sudo apt update
sudo apt install xdg-desktop-portal-gtk

首先儲存已開啟應用程式中的工作。然後登出並重新登錄,這樣可以乾淨地重啟用戶會話及其入口網站服務。對於初學者來說,這通常是最清晰明了的選擇。進階使用者可以透過終端機使用 `npm run restart` 指令重新啟動使用者服務systemctl --user restart xdg-desktop-portal.service xdg-desktop-portal-gtk.service,但服務名稱和啟動行為可能會因安裝而異。如果該指令報告某個單元未載入,請使用登出操作,而不是重複重新啟動服務。

步驟 4:檢查應用程式是否支援該主題

重新開啟同一個 Flatpak 文件,並將其按鈕、選單和視窗內容與從 Ubuntu 軟體包安裝的 GTK 應用程式進行比較。如果只有一個 Flatpak 檔案存在差異,則問題可能出在該應用程式的工具包、運行時或實作上。例如,某些 GTK 4 應用程式使用 libadwaita,它有意遵循 GNOME 的設計規範,並且不像舊版 GTK 3 應用程式那樣支援任意 GTK 主題。此外,GTK 3 的 Flatpak 擴充功能也無法變更 Qt 應用程式的樣式。

當應用程式使用較新的運行時環境且存在 GTK 3 主題擴充時,桌面設定通常應自動套用。如果未自動套用,請使用下列指令檢查應用程式的執行環境:

flatpak info APP_ID

替換APP_ID為應用程式的實際 ID。輸出結果有助於您確定執行時間環境和分支,以便在聯絡應用程式維護者時進行報表。但它本身並不能證明應用程式是否遵循 GTK 主題首選項。

避免常見錯誤

  • 不要將授予廣泛的主機檔案系統存取權限作為首要解決方案。 Flatpak文件指出,暴露主機主題文件會削弱沙盒機制並降低可移植性。建議使用維護良好的主題擴充和可用的桌面整合方案。
  • 不要以為使用 APT 安裝主題後,它會被安裝到每個 Flatpak 專案中。 APT會更改主機。 Flatpak 運作時仍需要相容的擴充或受支援的設定路徑。
  • 不要將深色模式與 GTK 主題混為一談。桌面配色方案首選項和完整的 GTK 主題是相關但不同的設定。應用程式及其運行時必須支援相關的首選項。
  • 請勿重置所有 GNOME 設定或刪除主題資料夾。這些操作可能會移除無關的首選項,並且不會添加缺少的 Flatpak 擴充。
  • 不要將環境變數覆蓋作為通用解決方案。不同的工具包和應用程式對環境變數的覆蓋範圍可能有所不同,並且可能會掩蓋實際缺少的擴充功能或門戶問題。

驗證結果

更新或安裝匹配的擴充功能並重新啟動會話或應用程式後,請確認以下三點:主機仍會報告預期的 GTK 主題名稱;相關的主題擴充功能出現在 Flatpak 的已安裝應用程式中;以及受影響應用程式的 GTK 控制項現在顯示正常。您可以使用以下命令列出已安裝的 Flatpak:

flatpak list --app

如果宿主主題正確,但該擴充功能在應用程式運行時不可用,且只有一個應用程式的視覺效果有所不同,則此限制可能是應用程式本身的問題,而非 Ubuntu 主題損壞。提交報告時,請提供 Flatpak 應用程式 ID、運行時分支、會話類型、主題名稱以及相關的入口網站軟體包狀態。這將有助於維護人員區分軟體包缺失和桌面設定問題。

官方參考資料

留下評論

建立一個 PipeWire 輸出切換腳本,用於行動活動音訊

建立一個 PipeWire 輸出切換腳本,用於行動活動音訊

使用 pactl 腳本在指定的 PipeWire 輸出之間切換 Debian 音頻,腳本會更新預設接收器並重新路由正在播放的串流。

恢復 Ubuntu 24.04 上的藍牙耳機麥克風輸入

恢復 Ubuntu 24.04 上的藍牙耳機麥克風輸入

選擇正確的輸入來源,使用免持音訊設定文件,並檢查 Ubuntu 的 PipeWire 路由,即可使您的藍牙耳機麥克風正常運作。

修復 Ubuntu 24.04 中 Flatpak 應用不遵循 GTK 主題的問題

修復 Ubuntu 24.04 中 Flatpak 應用不遵循 GTK 主題的問題

了解為什麼 Flatpak 應用可能會忽略 Ubuntu 24.04 GTK 主題,並按照安全步驟檢查主題擴充、刷新 Flatpak 應用程式以及診斷入口網站問題。

How to Dual-Boot Ubuntu 24.04 and Windows 11 With BitLocker Enabled

How to Dual-Boot Ubuntu 24.04 and Windows 11 With BitLocker Enabled

Install Ubuntu 24.04 alongside Windows 11 with BitLocker safely. Compare separate-drive and shared-drive paths, recovery keys, partitioning, and boot checks.

如何解決 Ubuntu 核心更新後 Nvidia 驅動程式無法載入的問題

如何解決 Ubuntu 核心更新後 Nvidia 驅動程式無法載入的問題

診斷 Ubuntu 核心更新後 NVIDIA 驅動程式故障。檢查 DKMS 和安全啟動,重建匹配的模組,註冊 MOK,並驗證修復效果。

如何修復 Ubuntu 24.04 系統睡眠後 Wi-Fi 斷開連線的問題

如何修復 Ubuntu 24.04 系統睡眠後 Wi-Fi 斷開連線的問題

修復 Ubuntu 24.04 系統掛起後 Wi-Fi 斷開的問題,檢查 NetworkManager、無線電模組、更新、省電模式和驅動程序,然後驗證每次恢復操作。

修復 Ubuntu GNOME 中 Tracker-Miner-3 導致的 CPU 使用率過高問題

修復 Ubuntu GNOME 中 Tracker-Miner-3 導致的 CPU 使用率過高問題

了解為什麼 tracker-miner-fs-3 在 Ubuntu GNOME 中佔用大量 CPU,以及如何檢查索引、排除資料夾、更新 Ubuntu 或安全地重建搜尋索引。

修正在 UEFI 上安裝 Debian 後出現的「找不到可啟動裝置」錯誤

修正在 UEFI 上安裝 Debian 後出現的「找不到可啟動裝置」錯誤

透過檢查啟動模式、EFI 系統分割區、GRUB 檔案和韌體啟動順序來修復 Debian 的 UEFI 啟動錯誤,而無需先重新安裝 Debian。

解決 Windows 11 更新錯誤 0x800f0922

解決 Windows 11 更新錯誤 0x800f0922

遇到 Windows 11 更新錯誤 0x800f0922?了解已驗證的有效解決方法,快速解決此常見問題。逐步指南,幫助您輕鬆完成更新,告別煩惱。

如何修復 Windows 11 系統還原錯誤 0x80070005

如何修復 Windows 11 系統還原錯誤 0x80070005

遇到 Windows 11 系統還原錯誤 0x80070005 ?我們提供經過驗證的分步解決方案,幫助您輕鬆修復訪問被拒絕問題,並順利恢復系統。無需任何技術知識!