Standardeinstellungen in GSettings ändern

 

Standardeinstellungen in GSettings ändern

Gnome3 benutzt GSettings, um Konfiguration-Einstellungen für Programme zu speichern. Als Systemverwalter möchte man manchmal die von der Distribution vorgegebenen Standardeinstellungen ändern.

Das geht so:

Schema-Dateien

Um GSettings für Konfigurations-Einstellunegn benutzen zu können, muss ein Programm ein “Schema” definieren, das beschreibt, wie diese Einstellungen aussehen und welche Vorgaben-Werte sie haben. Dazu legt es eine Datei mit der Endung .gschema.xml im Verzeichnis /usr/share/glib-2.0/schemas/ an.

Wie die Endung verrät, handelt es sich dabei um eine XML-Datei. Eine kurze Beschreibung des Aufbaus findet man in der Dokumentation zu GSettings

Aus diesen Dateien erzeugt das Programm glib-compile-schemas eine Binärdatei, die dann von GSettings verwendet wird.

Override-Dateien

Es wäre aber sehr unpraktisch und fehlerträchtig, wenn man die Schema-Dateien bearbeiten müsste, um die Vorgabe-Werte zu ändern. Daher gibt es einen einfacheren Weg:

Außer den Schema-Dateien liest glib-compile-schemas zusätzlich Dateien mit der Endung .gschema.override ein. Diese Dateien müssen im gleichen Verzeichnis wie die Schemata liegen und enthalten Vorgabe-Werte im bekannten INI-Format.

Als Namen für die Abschnitte werden dabei Schema-Namen benutzt, jeder Abschnitt enthält Schlüssel-Wert-Paare, die die neuen Vorgabe-Werte für das entsprechende Schema beschreiben.

Die Schreibweise für die Werte ähnelt der Python-Syntax:

Werte

Die wichtigsten Werte-Typen sind:

Typ Schreibweise
Wahrheitswerte true, false
Zeichenketten eingeschlossen in 'einfache' oder "doppelte Anführingszeichen"
Ganze Zahl 24, 23
Dezimalzahl 3.14, 6.022e23
Tupel kommagetrennte Werte, eingschlossen von runden Klammern. Die Werte können unterschiedliche Typen haben: (3.14, 'pi')
Feld (Array) kommagetrennte Werte, eingschlossen von eckigen Klammern. Die Werte müssen alle den gleichen Typ haben: [1, 2, 3]

Es gibt noch einige andere Typen und Schreibweisen, die in der Praxis aber seltener verwendet werden.

Beispiel

Eine Override-Datei, die im Schema org.gnome.desktop.interface Vorgaben für die Schlüssel gtk-theme und icon-theme, und im Schema org.gnome.desktop.wm.preferences die Vorgabe für theme ändert, könnte zum Beispiel so aussehen:

[org.gnome.desktop.interface]
gtk-theme="Ambiance"
icon-theme="ubuntu-mono-dark"

[org.gnome.desktop.wm.preferences]
theme="Ambiance"

Prioritäten

Der Name der Override-Datei ist - bis auf die Endung - beliebig. Aber da es vorkommen kann, dass eine Vorgabe in mehreren Override-Dateien geändert wird, ist es üblich, dass der Datei-Name mit nn_ beginnt, wobei nn eine zweistellige, ganze Zahl ist. Dateien mit größeren Zahlen haben dabei eine höhere Priorität und überschrieben Vorgaben, die in Dateien mit einer kleineren Zahl angegeben werden.

Wenn Sie also sicher sein wollen, dass Ihre Vorgaben nicht überschrieben werden, wählen Sie einen Dateinamen, der mit 99_ beginnt, z.B. 99_lokale-einstellungen.gschema.override

Schemata kompilieren

Um schnell auf die Werte zugreifen zu können, speichert GSettings (genauer gesagt das von GSettings verwendete DConf) die Einstellungen in einer Binärdatei.

Um diese Binärdatei zu aktualisieren, muss man glib-compile-schemas aufrufen. Als Parameter erwartet glib-compile-schemas den Pfad des Ordners, in dem die Schema-Dateien liegen. Der Aufruf lautet daher:

glib-compile-schemas /usr/share/glib-2.0/schemas/

Wenn alles funktioniert, beendet sich das Programm kommentarlos und die neuen Einstellungen sind verfügbar.