Und ich gehe davon aus, dass "gsettings" nicht in libgtk fest codiert ist.
Dies ist eine schlechte Annahme, da GSettings der primäre Konfigurationsspeicher für die meisten GNOME-Programme ist und tatsächlich zum Abrufen des Themennamens in GTK 3 unter Wayland verwendet wird. Insbesondere verwendet gdkdisplay-wayland gtk-theme
im org.gnome.desktop.interface
Schema.
Bei X11 verwendet GTK jedoch das XSETTINGS-Protokoll, bei dem ein separater DE-spezifischer Dämon von jedem beliebigen Ort aus verschiedene Einstellungen erhält und sie mithilfe des Auswahlmechanismus von X11 in einem Standardformat erneut veröffentlicht.
Beim Starten jedes Client, der das Einstellungsfenster durch Aufrufen von XGetSelectionOwner () für die Auswahl von _XSETTINGS_S [N] identifizieren soll, und im Einstellungsfenster eine Benachrichtigung durch Aufrufen von XSelectInput () mit einer Maske von StructureNotifyMask | PropertyChangeMask auswählen.
[…] Der Client kann dann den Inhalt der Eigenschaft _XSETTINGS_SETTINGS aus dem Einstellungsfenster lesen und gemäß den Informationen im Abschnitt "_XSETTINGS_SETTINGS-Format" dieses Dokuments interpretieren
Da Sie MATE verwenden, mate-settings-daemon
ist der XSETTINGS-Anbieter. Es liest org.mate.interface
aus GSettings und veröffentlicht den Wert erneut Net/ThemeName
über XSETTINGS, wo GTK ihn abrufen kann.
Die Verwendung des XSETTINGS-Protokolls macht das Backend irrelevant - z. B. verwenden ältere GNOME- und MATE-Versionen GConf, während Xfce XfConf verwendet, und es gibt ein eigenständiges Xsettingsd, das eine Textdatei verwendet. (Auf der anderen Seite ist das Protokoll, wie Sie sehen können, sehr spezifisch für X11 und kann nicht in Wayland verwendet werden.)
Das xsettingsd- Paket enthält auch ein dump_xsettings
Tool, das Daten von dem jeweils aktiven Provider ausgibt .
Beachten Sie, dass nicht alle Desktop-Umgebungen einen XSETTINGS-Provider ausführen. Bei Verwendung von LXDE werden beispielsweise lxappearance
die Konfigurationsdateien einfach bearbeitet: ~/.gtkrc-2.0
für GTK 2 und ~/.config/gtk-3.0/settings.ini
für GTK 3. Diese werden immer gelesen, aber mit der niedrigsten Priorität verwendet - die angegebenen Parameter von GSettings oder XSETTINGS gewinnen immer.
Zusammenfassung:
- GTK 3 unterstützt $ GTK_THEME, um das Thema vorübergehend zu überschreiben.
- In Wayland liest GTK 3 den Designnamen von GSettings mit der Konfigurationsdatei als Fallback.
- In X11 ruft GTK 2/3 den Namen eines Themes von einem XSETTINGS-Dämon ab, wobei die Konfigurationsdatei als Fallback dient.
- GTK 1 unterstützt nichts außer der dateibasierten Konfiguration (gtkrc).