Via GConf aktivieren Sie die versteckten Möglichkeiten des Gnome-Desktops und automatisieren tägliche Aufgaben mittels kleiner Skripte.
Seit seiner Einführung mit Gnome 1.4 bildet GConf [1] das Rückgrat des Konfigurationssystems für Anwendungen unter dem Gnu-Desktopsystem. Die seit beinahe acht Jahren eingesetzte Technologie hat sich in der Vergangenheit nur unwesentlich verändert: Bei GConf handelt es sich um eine kleine Schlüssel/Wert-Datenbank. Deren API stellt Funktionen bereit, mit deren Hilfe sich einzelne Werte auslesen lassen.
Trotz aller Kritik – nicht zuletzt der, bei GConf handle es sich lediglich um einen Nachbau der berüchtigten Windows-Registry – bietet das System doch einige Vorteile gegenüber der Konkurrenz:
- GConf legt die Konfiguration in Form von XML-Dateien ab, also in für Menschen lesbarer Form.
- Alle Konfigurationseinstellungen lagern zentral unter
$HOME/.gconf/in Verzeichnissen, deren Namen dem der jeweiligen Applikation entspricht. Die Konfigurationsdatei heißt stets%gconf.xml. Systemweite Werte entnimmt GConf dem Verzeichnis/etc/gconf/gconf.xml.defaults/. - GConf speichert Datentypen wie Integer, Fließkommazahlen, Zeichenketten, boolesche Werte, Schemas, Listen und Paare.
- Falls eine Anwendung eine Einstellung ändert, gibt es die Möglichkeit, andere Anwendungen darüber zu informieren.
- Änderungen der Konfiguration werden sofort auf alle Programme angewendet (“instant apply”).
- Statt des XML-Backends lässt sich auch eine SQL-Datenbank als Backend zur Speicherung der Konfiguration verwenden.
Im Hintergrund überwacht der Daemon gconfd die Konfiguration und sperrt Konfigurationsdaten, damit diese beim Zugriff mehrerer Programme nicht in einen inkonsistenten Zustand übergehen. Er hält die Einstellungen in einem Cache, damit nicht jede Anwendung die XML-Dateien erneut parsen muss und ungewollte Manipulationen sich “reparieren” lassen. Sie haben die Möglichkeit, die Überwachungsfunktion zu deaktivieren, indem Sie den Daemon durch gconftool-2 --shutdown herunterfahren. Mittels gconftool-2 --spawn starten Sie ihn wieder.
Werte setzen und auslesen
Mit dem gconftool-2-Befehl können Sie Werte setzen wie auch auslesen – eine der elementaren Grundfunktionen von GConf. Beispielsweise gibt GConf mit dem Befehl gconftool-2 -R / alle gespeicherten Werte aus. Das aktuelle Icon-Thema finden Sie mittels gconftool-2 -g /desktop/gnome/interface/icon_theme heraus. Das Kommando gconftool-2 -t string -s /desktop/gnome/interface/gtk_theme Clearlooks stellt das Gtk+-Thema auf Clearlooks um. Wichtig: die Angabe des Typs beim Setzen eines Konfigurationswerts (hier -t string. Als weitere Typen kennt GConf bool (Wahrheitswert), float (Fließkommazahl) und int (Ganzzahl).
Einen wesentlich komfortableren Weg, um Werte auszulesen oder zu setzen, bietet der gconf-editor (Abbildung 1). Hier gibt es zudem eine Suchfunktion, die Sie über [Strg]+[F] erreichen. Im rechten unteren Teil des Programmfensters erfahren Sie mehr über die Bedeutung und Auswirkungen des dem Schlüssel zugeordneten Werts.

Abbildung 1: Der GConf-Editor stellt die Schlüssel/Wert-Paare übersichtlich dar. Die Baumstruktur im linken Fensterteil des Fenster verschafft einen Überblick über alle Anwendungen und Komponenten.
Scripting mit GConf
Je ein kurzes Bash- und Python-Skript zeigen im folgenden die grundlegenden Möglichkeiten von GConf. Listing 1 liest ein paar Werte der GConf-Konfiguration aus und stellt sie anschließend in einem Fenster dar (Abbildung 2). Das Setzen von Werten erfolgt – wie weiter oben erwähnt – ähnlich.

Abbildung 2: Mit einem einfachen Bash-Skript lesen Sie Werte aus GConf aus und stellen Sie via Zenity übersichtlich auf der grafischen Oberfläche dar.
Das in Python [3] geschriebene Listing 2 demonstriert die Benachrichtigungsfunktion von GConf: In Zeile 9 geben Sie das zu überwachende Verzeichnis an. Mit notify_add definieren Sie den genauen Schlüssel und die Callback-Funktion __background_cb. Bei der Ausführung mit python /Pfad/zum/Skript.py gibt das Programm den Dateinamen des gegenwärtigen Desktop-Hintergrundbilds aus. Beim jedem Wechsel wird __background_cb erneut aufgerufen und das Skript zeigt im Terminal den Dateinamen des neuen Wallpapers.
#!/bin/bash
#
accessibility=$(gconftool-2 -g /desktop/gnome/interface/accessibility)
animations=$(gconftool-2 -g /desktop/gnome/interface/enable_animations)
gtk_theme=$(gconftool-2 -g /desktop/gnome/interface/gtk_theme)
icon_theme=$(gconftool-2 -g /desktop/gnome/interface/icon_theme)
font_name=$(gconftool-2 -g /desktop/gnome/interface/font_name)
monospace_font=$(gconftool-2 -g /desktop/gnome/interface/monospace_font_name)
metacity_theme=$(gconftool-2 -g /apps/metacity/general/theme)
metacity_font=$(gconftool-2 -g /apps/metacity/general/titlebar_font)
#
zenity --info --text "
Accessibility: $accessibility
Animationen: $animations
Gtk+-Thema: $gtk_theme
Symbol-Thema: $icon_theme
Schriftname: $font_name
Monospace-Schrift: $monospace_font
Metacity-Thema: $metacity_theme
Metacity-Schrift: $metacity_font"
#!/usr/bin/env python
#
import gconf
import gobject
#
class GConfExample:
def __init__ (self):
self.__client = gconf.client_get_default()
self.__client.add_dir("/desktop/gnome/background",
gconf.CLIENT_PRELOAD_NONE)
self.__client.notify_add("/desktop/gnome/background/picture_filename",
self.__background_cb)
self.__background_cb(self.__client)
def __background_cb (self, client, *args, kwargs):
fname = client.get_string("/desktop/gnome/background/picture_filename")
print("Neues Hintergrundbild: %s\n" % fname)
#
if __name__ == '__main__':
GConfExample()
main = gobject.MainLoop()
main.run()
Versteckte Optionen
Gnome ist darauf bedacht, den Anwender vor unnötigen Konfigurationseinstellungen zu bewahren. Das Prinzip lautet: Desktop installieren und sofort ohne langwierigen Konfigurationsaufwand loslegen. Dies hat der beliebten Oberfläche in der Vergangenheit aber auch von einigen Seiten Kritik eingebracht.
Dennoch kann man auch an einige Optionen herankommen, die man nicht in den Einstellungsdialogen findet. Mit dem GConf-Editor nehmen Sie die Einstellungen schnell und unkompliziert vor. Das können Sie etwa anhand einiger Nautilus-Optionen nachvollziehen, die Ihnen die Tabelle “Versteckte Optionen für Nautilus” exemplarisch vorstellt.
Versteckte Optionen für Nautilus
| Pfad | Schlüsselname | Bedeutung |
|---|---|---|
/apps/nautilus/desktop |
*_icon_visible |
Zeigt/versteckt das Icon für den Computer, den persönlichen Ordner, das Netzwerk und den Papierkorb auf dem Desktop. |
/apps/nautilus/desktop |
volumes_visible |
Zeigt/versteckt Medien wie Wechselfestplatten oder CD/DVD-Laufwerke auf dem Desktop. |
/apps/nautilus/icon_view |
captions |
Symbolunterschriften für die Symbolansicht und den Desktop. Gültige Werte sind unter anderem size, type, owner und group. |
/apps/nautilus/icon_view |
thumbnail_size |
Größe für Vorschaubilder in Punkt (pt). |
/apps/nautilus/preferences |
always_use_location_entry |
Falls aktiviert, immer das Adressfeld statt der Pfadleiste anzeigen. |
/apps/nautilus/preferences |
desktop_is_home_dir |
Falls aktiviert, verwendet Nautilus den persönlichen Ordner als Desktop. |
/apps/nautilus/preferences |
directory_limit |
Bei Verzeichnissen mit vielen Dateien können Sie die Anzahl der anzuzeigenden Dateien einschränken. |
/apps/nautilus/preferences |
show_desktop |
Legt fest, ob Nautilus den Desktop darstellt oder nicht, also die Symbole anzeigt oder versteckt. |
Fazit
Skripting mit GConf lässt sich sehr einfach realisieren. Mit simplen Bash- und Python-Skripten erledigen Sie tägliche Aufgaben per Knopfdruck. Viele versteckte Einstellungen aktivieren Sie bequem mit ein paar Zeilen Code. In Verbindung mit einem kleinen grafischen Dialog, den Sie etwa mit Zenity [4] erstellen, lassen sich die versteckten Optionen komfortabel ein- oder ausschalten. Vielleicht hat Ihnen dieser Artikel ja Appetit für Ihre eigenen kleinen Skripte gemacht – die Möglichkeiten, die GConf bietet, sind praktisch unbegrenzt.
Glossar
-
Registry
-
Konfigurationsdatenbank der Microsoft-Betriebssysteme zur Verwaltung aller Dienste und zentralen Ablage der Einstellungen.
-
Schemas
-
Die Schemas enthalten Meta-Informationen sowie eine Standardeinstellung für einen Schlüssel in der GConf-Konfiguration. Somit kann der Systemadministrator Vorgabewerte für Programme festlegen.
[1] GConf: http://www.gnome.org/projects/gconf/
[2] Gnome: http://www.gnome.org
[3] Python: http://www.python.org
[4] Zenity im Gnome-Wiki: http://live.gnome.org/Zenity/





