E eu diria que "gsettings" não é codificado na libgtk.
Essa é uma suposição ruim, já que a GSettings é o principal armazenamento de configuração para a maioria dos programas GNOME e, de fato, usado para recuperar o nome do tema no GTK 3 sob o Wayland. Especificamente, o gdkdisplay-wayland usa gtk-theme
no org.gnome.desktop.interface
esquema.
No X11, no entanto, o GTK usa o Protocolo XSETTINGS , onde um daemon separado específico do DE obtém várias configurações de onde quiser e as republica em um formato padrão usando o mecanismo de seleções do X11.
Na inicialização, cada cliente deve identificar a janela de configurações chamando XGetSelectionOwner () para a seleção _XSETTINGS_S [N] e selecionar a notificação na janela de configurações chamando XSelectInput () com uma máscara de StructureNotifyMask | PropertyChangeMask.
[…] O cliente pode então continuar a ler o conteúdo da propriedade _XSETTINGS_SETTINGS da janela de configurações e interpretar de acordo com as informações na seção "Formato _XSETTINGS_SETTINGS" deste documento
Desde que você está usando o MATE, mate-settings-daemon
é o provedor XSETTINGS. Lê org.mate.interface
da GSettings e re-publica 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 xsettingsd que usa um arquivo de texto. (Por outro lado, como você pode ver, o protocolo é muito específico para o X11 e não pode ser usado no Wayland.)
o xsettingsd pacote também vem com um dump_xsettings
ferramenta que despeja dados de qualquer provedor atualmente em execução.
Observe que nem todos os ambientes de desktop executam um provedor XSETTINGS. Por exemplo, usando o LXDE lxappearance
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. Estes são sempre ler, mas usado na prioridade mais baixa - os parâmetros especificados GSettings ou 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).