And I'd assume that "gsettings" is not hardcoded into libgtk.
Essa é uma suposição ruim, já que o GSettings é o armazenamento de configuração principal para a maioria dos programas GNOME e usado para recuperar o nome do tema no GTK 3 sob Wayland. Especificamente, o gdkdisplay-wayland usa gtk-theme
no org.gnome.desktop.interface
schema.
No X11, no entanto, o GTK usa o protocolo XSETTINGS , em que um daemon específico do DE é separado obtém várias configurações de onde quiser e republica-as em um formato padrão usando o mecanismo de seleções do X11.
On startup, each client that should identify the settings window by calling XGetSelectionOwner() for the _XSETTINGS_S[N] selection and select for notification on the settings window by calling XSelectInput() with a mask of StructureNotifyMask|PropertyChangeMask.
[…] The client can then proceed to read contents of the _XSETTINGS_SETTINGS property from the settings window and interpret according to the information in the "_XSETTINGS_SETTINGS Format" section of this document
Como você está usando o MATE, mate-settings-daemon
é o provedor XSETTINGS. Ele lê org.mate.interface
do GSettings e republica o valor como Net/ThemeName
via XSETTINGS, onde o GTK pode finalmente recuperá-lo.
O uso do protocolo XSETTINGS torna o back-end irrelevante - por exemplo, versões mais antigas do GNOME e do MATE usavam o GConf, enquanto o Xfce usa o XfConf, e há um
O pacote xsettingsd também vem com uma ferramenta dump_xsettings
que despeja dados de qualquer provedor que esteja atualmente em execução.
Observe que nem todos os ambientes de desktop executam um provedor XSETTINGS. Por exemplo, usar lxappearance
do LXDE simplesmente edita os arquivos de configuração: ~/.gtkrc-2.0
para o GTK 2 e ~/.config/gtk-3.0/settings.ini
para o GTK 3. Eles são sempre lidos, mas usados na prioridade mais baixa - o GSettings ou os parâmetros especificados em XSETTINGS sempre ganham.
Resumo:
- O GTK 3 suporta $ GTK_THEME para temporariamente substituir o tema.
- No Wayland, o GTK 3 lê o nome do tema do GSettings, com o arquivo de configuração como fallback.
- No X11, o GTK 2/3 recupera o nome do tema de um daemon XSETTINGS, com o arquivo de configuração como fallback.
- O GTK 1 não suporta nada, exceto a configuração baseada em arquivo (gtkrc).