Home / LinuxUser / 2008 / 08 / Feinschliff

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Mandriva gibt Distribution in die Hände der Community
(268 Punkte bei 24 Stimmen)
Neues vom Systemd
(179 Punkte bei 5 Stimmen)
Mandriva in Nöten
(161 Punkte bei 4 Stimmen)
Mageia 2 ist fertig
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

Feinschliff

Skripting mit GConf

01.08.2008 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.

Listing 1
#!/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"
Listing 2
#!/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()
Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

871 Hits
Wertung: 0 Punkte (3 Stimmen)

Schlecht Gut

Infos zum Autor

Christian Meyer

Linux-Nutzer seit 1996, aktiv bei Gnome zwischen 2000 und 2006.


Infos zur Publikation

Infos zur Publikation

LinuxUser 06/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Adobe AIR
Adobe-AIR-Programme installieren und (manuell) starten
Tim Schürmann, 14.05.2012 13:09, 0 Kommentare

Es gibt sie noch: neue Anwendungen, die Adobes Integrated Runtime voraussetzen. Aktuellstes und vermutlich auch größtes Beispiel ist das Adventure Botanicula

Aktuelle Fragen

gibt es ein Kommandozeilen Tool, um ein X11-Fenster in ein Anderes einzubetten?
GoaSkin , 21.05.2012 16:44, 0 Antworten
Das XEmbed-Protokoll ist u.A. dazu gedacht, dass man eine X11-Anwendung in eine andere wie ein Wi...
Apache2, Options -Indexes geht nicht
no no, 12.05.2012 19:01, 8 Antworten
Habe in apache2.conf folgendes stehen: Options -Indexes ...
LInux auf Dell LS H500
Andreas Endresl, 09.05.2012 08:54, 2 Antworten
Habe einen alten Dell Latitude LS H500 nur mit ext. Floppy und CD es geht nur immer eines von den...
Datenwiederherstellung unter Ubuntu 12.04 mit "Simple Backup" nach Umzug von Linux Mint
Christian Lottmann, 07.05.2012 13:33, 0 Antworten
Vor dem Umzug auf Ubuntu 12.04 habe ich unter Linux MInt mit "Simple Backup" voll (15.4.2012) und...
DKMS für den propritären NVIDIA-Treiber
Commander Data, 26.04.2012 22:02, 2 Antworten
Hallo an die Gemeinde. Ich habe hier ein interessantes Stück openSuSE gefunden. http://forums.op...