一些用戶避免安裝 Flatpak 應用程序的原因之一是大多數 Flatpak 應用程序不會根據當前系統主題更改其外觀。這使得應用程序在其他方面看起來不自然,而且設置很漂亮。

Flatpak 應用程序與系統主題不匹配

這是將 GTK 主題應用到 Flatpak 應用程序的官方方法: 將所需主題安裝為 flatpak..但是,只有少數 GTK 主題可以安裝為 Flatpak。

這意味著即使你找到了一個好的 GTK 主題,你的 Flatpak 應用程序也會使用默認的外觀。等一等!有一種解決方法。

本教程將向您展示如何讓您的 flatpak 應用程序了解外部 GTK 主題。

將 GTK 主題應用於 Flatpak 應用程序(中級)

在我們繼續之前,讓我們了解為什麼 flatpak 應用程序會這樣做。

因為 Flatpak 應用程序在“容器”中運行,如果不明確設置適當的權限,您將無法訪問主機文件系統、網絡或物理設備。做這個。

如前所述,這是一種解決方法,而不是完整的解決方案。 當您更改系統主題時,不要期望 Flatpak 應用程序的主題會自動更改。 但是,您可以使用一個命令為所有 Flatpak 應用程序更改它。

讓我們看看如何實現這一點。請注意,本教程需要熟悉 Linux 命令行,您可以在終端中找到自己的方式。

第 1 步:允許 Flatpak 應用訪問 GTK 主題位置

GTK 主題位於所有用戶的 /usr/share/themes 和特定用戶的 ~/.themes 中。

到達 授予所有 flatpak 包的權限 要訪問 ~ / .themes,請運行以下命令:

sudo flatpak override --filesystem=$HOME/.themes

請注意,您無法訪問/usr/share/themes。 Flatpack 文檔被列入黑名單..

您也可以在每個應用程序的基礎上執行此操作。您需要指定要更改主題的應用程序 ID。

sudo flatpak override org.gnome.Calculator --filesystem=$HOME/.themes

第 2 步:告訴您的 Flatpak 應用程序使用哪個主題

允許訪問 ~/.themes 是不夠的,因為這個目錄可能包含多個主題。要告訴 flatpak 使用哪個 GTK 主題,首先獲取所需主題的名稱,然後應用以下命令:

sudo flatpak override --env=GTK_THEME=my-theme

正如您在下面的屏幕截圖中看到的,有兩個可用的主題,Ant-Bloody 和 Orchis-dark。 複製並粘貼確切的主題名稱 使用上面的命令:

為所有 Flatpak 應用程序設置 GTK 主題

或者,對於單個應用程序,執行以下操作:

sudo flatpak override org.gnome.Calculator --env=GTK_THEME=my-theme

將 my-theme 替換為您要應用的主題的文件夾名稱(必須在 ~/.themes 中)。

第 3 步:運行 Flatpak 應用程序以測試主題更改

如果應用程序已經在運行,您需要關閉它並重新開始。您可以看到新啟動的應用程序正在使用之前指定的主題。

以下是上述步驟之前的 GNOME Calculator 和 GNOME Builder(Flatpak 版本)的屏幕截圖。

默認的 Adwaita 主題 Flatpak 應用

在上述步驟之後(使用 Canta GTK 主題):

以 canta dark 為主題的 Flatpak 應用程序

這更好,不是嗎?現在,您可以將其保留在此處,但最好提及撤消更改的步驟。

還原更改

您可以通過一次重置所有覆蓋來重置您的更改。請注意,這會重置先前明確設置的覆蓋。

sudo flatpak override --reset

或者,您可以在包級別重置權限。

sudo flatpak override --reset org.example.app

如果您之前使用過“flatpak override”來覆蓋 GTK_THEME 或特定 Flatpak 包的文件系統,重置它將幫助您再次設置它。

附加信息

常規 GTK 應用程序加載 gsettings 中指定的 GTK 主題。您可以通過運行以下命令來獲取當前應用程序的 GTK 主題:

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

要設置 GTK 主題,請運行以下命令:

gsettings set org.gnome.desktop.interface gtk-theme my-theme

要在 Flatpak 中執行上述操作,您需要運行以下命令以進入應用程序容器內的 shell 會話。

flatpak run --command=bash org.gnome.Calculator

在此會話中,執行上述命令。

gsettings set org.gnome.desktop.interface gtk-theme my-theme

但這對我不起作用,所以我依賴於我需要用於調試目的的 GTK_THEME 環境變量。 如果 gsettings 可以工作,請在評論中告訴我們。

我知道這不是一個自動化的解決方案,但至少我可以選擇使用一些命令來更改我的 Flatpak 應用程序的主題。通過這種方式,您可以將 Flatpak 應用程序與系統的其他部分集成。

我希望這有幫助。如果您遇到任何問題,請在評論中指出。

作者信息:本文由 FOSS 負責人 Hamza Algohary 貢獻,Abhishek Prakash 編輯。 Hamza 是一名計算機工程專業的學生,也是 Linux 和開源的愛好者。他還在為 Linux 桌面開發應用程序。你可以找到他的作品 他的 GitHub 個人資料..