Flatpak-Apps sehen fehl am Platz aus? So wenden Sie GTK-Designs auf Flatpak-Anwendungen an

Einer der Gründe, warum einige Benutzer die Installation von Flatpak-Apps vermeiden, ist, dass die meisten Flatpak-Apps ihr Aussehen nicht gemäß dem aktuellen Systemdesign ändern. Dadurch wirken die Anwendungen in Ihrem ansonsten schönen Setup fehl am Platz.

Flatpak-Apps passen nicht zum Systemdesign

Der offizielle Weg, GTK-Designs auf Flatpak-Apps anzuwenden, ist durch das gewünschte Theme als Flatpak installieren. Allerdings gibt es nur wenige GTK-Themes, die als Flatpak installiert werden können.

Das bedeutet, dass Ihre Flatpak-Anwendungen immer noch ihre Standarddarstellung verwenden, wenn Sie ein schönes GTK-Theme gefunden haben. Aber warte! Es gibt einen Workaround.

In diesem Tutorial werde ich Ihnen eine Möglichkeit vorstellen, Flatpak-Apps auf externe GTK-Themen aufmerksam zu machen.

Anwenden von GTK-Themen auf Flatpak-Anwendungen (Mittelstufe)

Bevor wir fortfahren, wollen wir verstehen, warum Flatpak-Apps dieses Verhalten haben.

Flatpak-Apps werden in einem “Container” ausgeführt, sodass sie keinen Zugriff auf das Host-Dateisystem, das Netzwerk oder die physischen Geräte haben, ohne explizit die entsprechende Berechtigung festzulegen, und genau das werden wir tun.

Wie ich bereits sagte, ist dies ein Workaround, keine fehlerfreie Lösung. Erwarten Sie nicht, dass die Designs von Flatpak-Apps automatisch geändert werden, wenn Sie das Systemdesign ändern. Sie können es jedoch für alle Flatpak-Apps in einem einzigen Befehl ändern.

Mal sehen, wie man das erreicht. Bitte beachten Sie, dass dieses Tutorial erfordert, dass Sie mit der Linux-Befehlszeile etwas vertraut sind und sich im Terminal zurechtfinden.

Schritt 1: Flatpak-Apps Zugriff auf den Standort von GTK-Themes gewähren

GTK-Themes befinden sich in /usr/share/themes für alle Benutzer und in ~/.themes für einen bestimmten Benutzer.

Zu allen Flatpak-Paketen die Erlaubnis geben Um auf ~/.themes zuzugreifen, führen Sie den folgenden Befehl aus:

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

Beachten Sie, dass Sie keinen Zugriff auf /usr/share/themes gewähren können, da gemäß Flatpak-Dokumentation, sie sind schwarz gelistet.

Alternative, können Sie dies auch pro Anwendungsbasis tun. Sie müssen die Anwendungs-ID angeben, für die Sie das Design ändern möchten.

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

Schritt 2: Teilen Sie Flatpak-Apps mit, welches Thema verwendet werden soll

Der Zugriff auf ~/.themes reicht nicht aus, da dieses Verzeichnis mehrere Themen enthalten kann. Um flatpak mitzuteilen, welches GTK-Theme verwendet werden soll, rufen Sie zuerst den Namen des gewünschten Themas ab und wenden Sie dann den folgenden Befehl an:

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

Wie Sie im Screenshot unten sehen können, stehen zwei Themen zur Verfügung, Ant-Bloody und Orchis-dark. Kopiere den genauen Theme-Namen und füge ihn ein im obigen Befehl:

Legen Sie GTK-Themen für alle Flatpak-Apps fest

Führen Sie alternativ für eine individuelle Anwendung Folgendes aus:

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

und ersetzen Sie my-theme durch den Ordnernamen des Themes, das Sie anwenden möchten (und es muss sich in ~/.themes befinden).

Schritt 3: Testen Sie die Theme-Änderung, indem Sie eine Flatpak-App ausführen

Wenn die Anwendung bereits ausgeführt wurde, müssen Sie close und starte es erneut. Sie werden sehen, dass die neu gestartete Anwendung das zuvor angegebene Design verwendet.

Hier ist ein Screenshot des GNOME-Rechners und des GNOME-Builders (Flatpak-Version) vor den obigen Schritten:

Flatpak-Anwendungen mit Standard-Adwaita-Theme

Und nach den obigen Schritten (mit Canta GTK-Thema):

Flatpak-Anwendungen mit Canta Dark-Thema

Das ist besser, oder? Nun, ich könnte Sie hier lassen, aber es wäre angebracht, die Schritte zum Zurücksetzen der Änderungen zu erwähnen.

Machen Sie die Änderungen rückgängig

Sie können die Änderungen zurücksetzen, indem Sie alle Überschreibungen auf einmal zurücksetzen. Bitte beachten Sie, dass dadurch alle vorherigen Überschreibungen zurückgesetzt werden, die Sie explizit festgelegt hatten.

sudo flatpak override --reset

Alternativ können Sie die Berechtigungen auch auf Paketebene zurücksetzen:

sudo flatpak override --reset org.example.app

Wenn Sie zuvor GTK_THEME oder das Dateisystem für ein bestimmtes Flatpak-Paket mit „flatpak override“ überschrieben haben, hilft Ihnen das Zurücksetzen dabei, es erneut einzustellen.

Zusätzliche Information

Normale GTK-Anwendungen laden das von gsettings angegebene GTK-Design. Sie können den folgenden Befehl ausführen, um die aktuell angewendeten GTK-Designs abzurufen:

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

Und um das GTK-Thema festzulegen, führen Sie Folgendes aus:

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

Um dies mit Flatpak zu tun, müssen Sie eine Shell-Sitzung in den Container der gewünschten Anwendung eingeben, indem Sie Folgendes ausführen:

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

Führen Sie in dieser Sitzung den obigen Befehl aus:

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

Aber das hat bei mir nicht funktioniert, also habe ich auf die Umgebungsvariable GTK_THEME zurückgegriffen, die für Debugging-Zwecke verwendet werden soll. Wenn Sie es geschafft haben, gsettings zum Laufen zu bringen, dann sagen Sie es mir in den Kommentaren.

Ich weiß, dass es keine automatisierte Lösung ist, aber zumindest gibt es Ihnen die Möglichkeit, die Themen für die Flatpak-Anwendungen mit ein paar Befehlen zu ändern. Auf diese Weise können Sie die Flatpak-Anwendung in den Rest des Systems integrieren.

Ich hoffe, das hat dir geholfen. Wenn Sie Probleme haben, erwähnen Sie diese bitte in den Kommentaren.

Autoreninfo: Dieser Artikel wurde von Hamza Algohary, dem Leser von It’s FOSS, beigesteuert und von Abhishek Prakash bearbeitet. Hamza ist ein Student der Computertechnik und ein Linux- und Open-Source-Enthusiast. Er entwickelt auch Apps für Linux-Desktops. Sie finden seine Arbeit auf sein GitHub-Profil.