Wenn eine Flatpak-Anwendung mit Adwaita geöffnet wird, während der Rest von Ubuntu 24.04 Yaru verwendet, sind die auf Ihrem Desktop installierten Designdateien möglicherweise in Ordnung. Flatpak führt Anwendungen in einer Sandbox aus, daher liest ein Programm nicht automatisch alle Designdateien des Hostsystems. Die Lösung besteht üblicherweise darin, sicherzustellen, dass das ausgewählte Design für die Flatpak-Laufzeitumgebung verfügbar ist und der Desktop-Einstellungsdienst die aktive Auswahl übermitteln kann.
Diese Anleitung beginnt mit einfachen Prüfungen und geht dann zur gezielten Fehlerbehebung über. Sie gilt primär für GTK-3-Anwendungen. GTK-4- und libadwaita-Anwendungen können anderen Gestaltungsregeln folgen, daher ist nicht garantiert, dass ein Design, das in der Dateien-App oder einer anderen GTK-3-Anwendung funktioniert, in jedem Flatpak-Fenster anwendbar ist.
Was Sie zuerst wissen müssen
Ein GTK-Theme steuert das Erscheinungsbild von Oberflächenelementen wie Schaltflächen und Menüs in Anwendungen, die GTK verwenden – ein Toolkit zur Erstellung grafischer Oberflächen. Eine Flatpak-Laufzeitumgebung stellt gemeinsam genutzte Bibliotheken bereit, die von einer in einer Sandbox ausgeführten Anwendung verwendet werden. Die Sandbox trennt das Dateisystem der Anwendung vom Hostsystem. Daher werden die Theme-Dateien des Hostsystems, die sich beispielsweise in bestimmten Verzeichnissen befinden, /usr/share/themesnicht einfach in jedes Flatpak kopiert.
Flatpak unterstützt für GTK-3-Themes eine Erweiterung, die nach dem Theme benannt ist, üblicherweise gefolgt von `.tk` org.gtk.Gtk3theme.ThemeName. Existiert diese Erweiterung im konfigurierten Remote-Verzeichnis der App-Laufzeitumgebung, kann Flatpak sie zusammen mit der App oder bei einem Update installieren. Der Desktop muss außerdem die aktive Einstellung bereitstellen: Unter X11 kommt XSettings zum Einsatz, unter Wayland das Einstellungsportal. Ein Portal ist ein Desktop-Dienst, der in einer Sandbox ausgeführten Apps kontrollierten Zugriff auf ausgewählte Desktop-Funktionen und -Einstellungen ermöglicht.
Das Standard-Yaru-Theme von Ubuntu ist auf dem Host installiert. Dies allein beweist jedoch nicht, dass für jede Anwendung und Laufzeitumgebung eine entsprechende Flatpak-Theme-Erweiterung verfügbar ist. Die Verfügbarkeit kann vom Theme-Namen, dem konfigurierten Flatpak-Remote, dem Laufzeit-Branch und dem Toolkit abhängen. Flatpak dokumentiert Adwaita als Fallback, falls ein Theme oder eine Einstellungsoberfläche nicht verfügbar ist.
Schritt 1: Bestätigen Sie das Host-Theme und die Sitzung.
Prüfen Sie zunächst, ob das Design auf normale Desktop-Anwendungen angewendet wird. Öffnen Sie Einstellungen → Darstellung , notieren Sie sich den ausgewählten Stil und öffnen Sie eine vorinstallierte GTK-Anwendung. Falls auch Host-Anwendungen fehlerhaft dargestellt werden, korrigieren Sie die Desktop-Darstellung, bevor Sie die Flatpak-Einstellungen ändern.
Den Namen des GTK-Themes können Sie im Terminal mit folgendem Befehl anzeigen:
gsettings get org.gnome.desktop.interface gtk-theme
Das Ergebnis ist ein Name in Anführungszeichen, zum Beispiel „.txt“ 'Yaru'. Notieren Sie sich die Schreibweise und Groß-/Kleinschreibung. Flatpak ordnet den vom Host ausgewählten GTK-Theme-Namen einer Dateiendung zu; die Suche nach einem ähnlichen, aber anders benannten Theme behebt das Problem möglicherweise nicht. Das Yaru-Projekt von Ubuntu dokumentiert Yaru als die standardmäßige GTK-Theme-Suite von Ubuntu.
Prüfen Sie außerdem, ob Ihre Sitzung Wayland oder X11 ist. Wählen Sie auf dem Anmeldebildschirm Ihren Benutzer aus und verwenden Sie gegebenenfalls das Zahnradmenü; der Sitzungsname wird dort normalerweise angezeigt. Dies ist wichtig, da sich die Pfade zu den Einstellungen unterscheiden: Wayland verwendet ein Portal, während X11 XSettings nutzt. Die Standard-GNOME-Sitzung von Ubuntu 24.04 verwendet üblicherweise Wayland, Benutzer können jedoch eine andere Sitzung auswählen.
Schritt 2: Flatpak aktualisieren und Verfügbarkeit der Theme-Erweiterung prüfen
Führen Sie ein allgemeines Flatpak-Update durch, damit installierte Anwendungen, Laufzeitumgebungen und verfügbare Erweiterungen aktualisiert werden:
flatpak update
Überprüfen Sie die vorgeschlagenen Änderungen, bevor Sie sie bestätigen. Suchen Sie anschließend in den konfigurierten Fernbedienungen nach Erweiterungen, die dem von Ihnen notierten Themennamen entsprechen. Für eine Yaru-Auswahl versuchen Sie Folgendes:
flatpak search org.gtk.Gtk3theme.Yaru
Wenn die Suche eine passende Erweiterung liefert, notieren Sie sich die genaue Anwendungs-ID und den angezeigten Remote-Namen. Installieren Sie die Erweiterung nur, wenn sie nicht bereits von Flatpak installiert wurde. Verwenden Sie die ID und den Remote-Namen exakt wie angezeigt.
flatpak install REMOTE EXTENSION_ID
Ersetzen Sie die beiden großgeschriebenen Platzhalter durch die tatsächlichen Werte. Kopieren Sie keine vermutete Erweiterungs-ID aus einem nicht zugehörigen Theme oder Runtime-Branch. Einige Erweiterungs-Builds sind möglicherweise für eine bestimmte Runtime nicht verfügbar; in diesem Fall kann die App Adwaita weiterhin verwenden, auch wenn auf dem Host Yaru installiert ist.
Laut Flatpaks eigener Dokumentation zur Desktop-Integration werden passende GTK-Theme-Erweiterungen bei der Installation oder Aktualisierung einer App automatisch installiert, sofern sie im Remote-Repository vorhanden sind. Wenn die Erweiterung also verfügbar, aber nicht vorhanden ist, kann ein App-Update ausreichen. Da die Suchergebnisse je nach Remote-Repository und Paket variieren können, sollten Sie Ihre lokale Flatpak-Ausgabe als aktuelle Prüfgrundlage verwenden und nicht von einem Paketnamen ausgehen.
Schritt 3: Starten Sie die App neu und aktualisieren Sie den Desktop-Einstellungsdienst.
Schließen Sie die betroffene App vollständig, einschließlich aller Hintergrundprozesse, und öffnen Sie sie anschließend erneut. Ein laufender Prozess behält möglicherweise die beim Start gelesenen Darstellungseinstellungen bei.
Falls Sie Wayland verwenden und mehrere GTK Flatpaks den ausgewählten Stil weiterhin ignorieren, überprüfen Sie, ob das GTK-Portal-Backend installiert ist:
dpkg -l xdg-desktop-portal xdg-desktop-portal-gtk
Prüfen Sie den Installationsstatus in der Paketliste. Die Flatpak-Dokumentation weist ausdrücklich darauf hin, xdg-desktop-portal-gtkdass es für GTK-Themes und -Schriftarten erforderlich ist. Falls es fehlt, installieren Sie das Ubuntu-Paket aus dem offiziellen Archiv.
sudo apt update
sudo apt install xdg-desktop-portal-gtk
Speichern Sie zunächst Ihre Arbeit in geöffneten Anwendungen. Melden Sie sich anschließend ab und wieder an. Dadurch werden die Benutzersitzung und die zugehörigen Portaldienste sauber neu gestartet. Dies ist in der Regel die einfachste Vorgehensweise für Anfänger. Fortgeschrittene Benutzer können ihre Benutzerdienste über das Terminal mit dem Befehl `startup` neu starten. Beachten Sie systemctl --user restart xdg-desktop-portal.service xdg-desktop-portal-gtk.servicejedoch, dass Dienstnamen und Aktivierungsverhalten je nach Installation variieren können. Meldet der Befehl, dass eine Einheit nicht geladen ist, melden Sie sich ab, anstatt die Dienste wiederholt neu zu starten.
Schritt 4: Prüfen Sie, ob die Anwendung das Design unterstützt.
Öffnen Sie dasselbe Flatpak erneut und vergleichen Sie dessen Schaltflächen, Menüs und Fensterinhalte mit einer GTK-Anwendung, die über die Ubuntu-Pakete installiert wurde. Wenn nur ein Flatpak Unterschiede aufweist, liegt das Problem möglicherweise am Toolkit, der Laufzeitumgebung oder der Implementierung dieser Anwendung. Beispielsweise verwenden einige GTK-4-Anwendungen libadwaita, das bewusst den Designkonventionen von GNOME folgt und im Gegensatz zu älteren GTK-3-Anwendungen keine beliebigen GTK-Themes unterstützt. Flatpak-Erweiterungen für GTK 3 können das Design einer Qt-Anwendung ebenfalls nicht verändern.
Wenn eine App eine aktuelle Laufzeitumgebung verwendet und eine GTK-3-Theme-Erweiterung vorhanden ist, sollte die Desktop-Einstellung normalerweise automatisch angewendet werden. Falls dies nicht der Fall ist, überprüfen Sie die Laufzeitumgebung der App mit folgendem Befehl:
flatpak info APP_ID
Ersetzen Sie dies APP_IDdurch die tatsächliche App-ID. Die Ausgabe hilft Ihnen, die Laufzeitumgebung und den entsprechenden Branch zu identifizieren, falls Sie den App-Entwickler kontaktieren. Sie beweist jedoch nicht, ob die Anwendung die GTK-Theme-Einstellungen berücksichtigt.
Häufige Fehler, die man vermeiden sollte
- Gewähren Sie nicht als erste Lösung einen umfassenden Zugriff auf das Host-Dateisystem. Die Flatpak-Dokumentation weist darauf hin, dass die Freigabe von Host-Theme-Dateien die Sandbox schwächen und die Portabilität beeinträchtigen kann. Bevorzugen Sie eine gepflegte Theme-Erweiterung und eine funktionierende Desktop-Integration.
- Gehen Sie nicht davon aus, dass die Installation eines Themes mit APT dieses automatisch in jedem Flatpak-Paket installiert. APT ändert den Host. Die Flatpak-Laufzeitumgebung benötigt weiterhin eine kompatible Erweiterung oder einen unterstützten Einstellungspfad.
- Verwechseln Sie den Dunkelmodus nicht mit einem GTK-Theme. Die Farbschema-Einstellungen des Desktops und ein vollständiges GTK-Theme sind zwar verwandt, aber dennoch unterschiedliche Einstellungen. Die Anwendung und ihre Laufzeitumgebung müssen die jeweilige Einstellung unterstützen.
- Setzen Sie nicht alle GNOME-Einstellungen zurück und löschen Sie keine Designordner. Dadurch können nicht benötigte Einstellungen entfernt und fehlende Flatpak-Erweiterungen nicht hinzugefügt werden.
- Verwenden Sie Umgebungsvariablenüberschreibungen nicht als Universallösung. Eine Überschreibung kann je nach Toolkit und Anwendung variieren und das eigentliche Problem mit der fehlenden Erweiterung oder dem Portal verschleiern.
Ergebnis überprüfen
Nach dem Aktualisieren oder Installieren der passenden Erweiterung und dem Neustart der Sitzung oder App überprüfen Sie bitte drei Dinge: Der Host meldet weiterhin den erwarteten GTK-Theme-Namen; die entsprechende Theme-Erweiterung wird in den installierten Flatpak-Anwendungen angezeigt; und die GTK-Steuerelemente der betroffenen App entsprechen nun dem erwarteten Erscheinungsbild. Sie können die installierten Flatpaks mit folgendem Befehl auflisten:
flatpak list --app
Wenn das Host-Theme korrekt ist, die Erweiterung für die Laufzeitumgebung der App nicht verfügbar ist und nur eine Anwendung optisch anders aussieht, liegt die Einschränkung möglicherweise an der jeweiligen App und nicht an einem fehlerhaften Ubuntu-Theme. Geben Sie bei der Meldung die Flatpak-App-ID, den Laufzeitzweig, den Sitzungstyp, den Theme-Namen und den relevanten Portal-Paketstatus an. Dies liefert den Maintainern die notwendigen Informationen, um eine Paketierungslücke von einem Problem mit den Desktop-Einstellungen zu unterscheiden.
Offizielle Referenzen