그리고 "gsettings"는 libgtk에 하드 코딩되지 않았다고 가정합니다.
GSettings 는 대부분의 그놈 프로그램의 기본 구성 저장소이며 실제로 Wayland에서 GTK 3의 테마 이름을 검색하는 데 사용 되기 때문에 나쁜 가정 입니다. 특히 gdkdisplay-wayland는 스키마 gtk-theme
에서 사용 합니다 org.gnome.desktop.interface
.
그러나 X11에서 GTK는 XSETTINGS 프로토콜을 사용합니다 . 여기서 별도의 DE 특정 데몬은 원하는 곳에서 다양한 설정을 가져오고 X11의 선택 메커니즘을 사용하여 표준 형식으로 다시 게시합니다.
시작시, _XSETTINGS_S [N] 선택에 대해 XGetSelectionOwner ()를 호출하여 설정 창을 식별하고 StructureNotifyMask | PropertyChangeMask의 마스크로 XSelectInput ()을 호출하여 설정 창에서 알림을 선택해야하는 각 클라이언트.
[…] 클라이언트는 설정 창에서 _XSETTINGS_SETTINGS 속성의 내용을 읽고이 문서의 "_XSETTINGS_SETTINGS 형식"섹션의 정보에 따라 해석 할 수 있습니다.
MATE를 사용 mate-settings-daemon
하고 있으므로 XSETTINGS 제공자입니다. org.mate.interface
GSettings에서 읽고 Net/ThemeName
GTK가 최종적으로 검색 할 수있는 XSETTINGS 를 통해 값을 다시 게시 합니다.
XSETTINGS 프로토콜을 사용하면 백엔드와 관련이 없습니다. 예를 들어 구 그놈 및 MATE 버전은 GConf를 사용했지만 Xfce는 XfConf 를 사용하고 텍스트 파일을 사용하는 독립형 xsettingsd 가 있습니다. (반면, 프로토콜은 X11에만 한정되어 있고 Wayland에서는 사용할 수 없습니다.)
xsettingsd의 패키지도 함께 제공 dump_xsettings
현재 실행중인 어떤 공급자로부터 데이터를 덤프 도구입니다.
모든 데스크탑 환경이 XSETTINGS 제공자를 실행하는 것은 아닙니다. 예를 들어, LXDE를 사용 lxappearance
하면 ~/.gtkrc-2.0
GTK 2 및 ~/.config/gtk-3.0/settings.ini
GTK 3 의 구성 파일을 간단히 편집 할 수 있습니다. 이 파일 은 항상 읽지 만 가장 낮은 우선 순위로 사용됩니다. GSettings 또는 XSETTINGS 지정 매개 변수는 항상 이깁니다.
요약:
- GTK 3는 테마 를 일시적으로 무시 하기 위해 $ GTK_THEME를 지원합니다 .
- Wayland에서 GTK 3는 구성 파일을 폴백으로하여 GSettings에서 테마 이름을 읽습니다.
- X11에서 GTK 2/3는 구성 파일을 폴백으로하여 XSETTINGS 데몬에서 테마 이름을 검색합니다.
- GTK 1은 파일 기반 구성 (gtkrc) 이외의 것을 지원하지 않습니다.