Y asumo que "gsettings" no está codificado en libgtk.
Esa es una mala suposición, ya que GSettings es el almacenamiento de configuración principal para la mayoría de los programas de GNOME y, de hecho, se utiliza para recuperar el nombre del tema en GTK 3 en Wayland. Específicamente, gdkdisplay-wayland utiliza gtk-theme
en el org.gnome.desktop.interface
esquema.
En X11, sin embargo, GTK usa el Protocolo XSETTINGS , donde un demonio específico de DE obtiene distintas configuraciones de donde quiere, y las vuelve a publicar en un formato estándar utilizando el mecanismo de selección de X11.
En el inicio, cada cliente que debe identificar la ventana de configuración llamando a XGetSelectionOwner () para la selección _XSETTINGS_S [N] y selecciona una notificación en la ventana de configuración llamando a XSelectInput () con una máscara de StructureNotifyMask | PropertyChangeMask.
[…] Luego, el cliente puede proceder a leer los contenidos de la propiedad _XSETTINGS_SETTINGS desde la ventana de configuración e interpretar de acuerdo con la información en la sección "Formato _XSETTINGS_SETTINGS" de este documento.
Ya que estás usando MATE, mate-settings-daemon
es el proveedor de XSETTINGS. Se lee org.mate.interface
desde GSettings y re-publica el valor como Net/ThemeName
a través de XSETTINGS, donde GTK finalmente puede recuperarlo.
El uso del protocolo XSETTINGS hace que el backend sea irrelevante, por ejemplo, las versiones anteriores de GNOME y MATE utilizaban GConf, mientras que Xfce usa XfConf, y hay una versión independiente xsettingsd que utiliza un archivo de texto. (Por otro lado, como puede ver, el protocolo es muy específico para X11 y no se puede usar dentro de Wayland).
los xsettingsd paquete también viene con una dump_xsettings
herramienta que descarga datos de cualquier proveedor que se esté ejecutando actualmente.
Tenga en cuenta que no todos los entornos de escritorio ejecutan un proveedor de XSETTINGS. Por ejemplo, utilizando LXDE lxappearance
simplemente edita los archivos de configuración: ~/.gtkrc-2.0
para GTK 2, y ~/.config/gtk-3.0/settings.ini
para GTK 3. Estos son siempre lea, pero se usa con la prioridad más baja: los parámetros especificados de GSettings o XSETTINGS siempre ganan.
Resumen:
- GTK 3 soporta $ GTK_THEME para temporalmente anular el tema.
- En Wayland, GTK 3 lee el nombre del tema de GSettings, con el archivo de configuración como alternativa.
- En X11, GTK 2/3 recupera el nombre del tema de un demonio XSETTINGS, con el archivo de configuración como respaldo.
- GTK 1 no admite nada, excepto la configuración basada en archivos (gtkrc).