Der Desktop-Hintergrund – lediglich eine Fläche zum Anzeigen hübscher Bildchen? Von wegen! Mit SuperKaramba gestalten Sie das KDE-Root-Fenster zum Multifunktionswerkzeug um.
Handelte es sich beim Desktop-Hintergrund nicht um die größte Fläche des Bildschirms, müsste man kein Wort verlieren über die unnötige Platzverschwendung, die da vor sich geht: eine Riesenfläche ohne Funktionalität! Doch zum Glück gibt es Tools wie superkaramba[12], die diesen Missstand beenden helfen.
Dieses kleine Programm für den K-Desktop basiert auf einer Applikation namens karamba[11], mit deren Hilfe zum Beispiel Systeminformationen auf dem Desktop-Hintergrund erscheinen und sich Media-Player wie XMMS [8] oder noatun[6] fernsteuern lassen. Analog zu Applikationen wie konsole verwendet Karamba den bekannten Pseudotransparenzeffekt. Anders als der Vorgänger lässt sich SuperKaramba durch Skripte in der Programmiersprache Python [13] steuern.
Direkt auf dem Desktop agierend, verdecken SuperKaramba-Gimmicks keine Fenster – wer seinen Bildschirm mit Applikationen vollstopft, muss diese erst zur Seite räumen, um an die Nettigkeiten auf dem Hintergrund zu kommen.
Neugierig?
Die aktuelle Version des Tools samt Binärpaketen für SuSE, Mandrake, Red Hat, Debian und Slackware finden Sie unter [1]; Gentoo-User kommen mit dem emerge-Befehl zum Ziel.
Wer die aktuellste Version 0.33 einspielen will, musste den Quellcode zu Redaktionsschluss allerdings mit dem Dreiklang ./configure && make && make install selbst kompilieren. Doch da dies installierte Qt- und KDE-Header-Dateien sowie ein mit Thread-Unterstützung kompiliertes Qt-3.x-Binary voraussetzt, greift man besser zu den vorgefertigten Binärpaketen. Auch aus diesem Grund basiert der Artikel auf Version 0.32b.
Der Befehl superkaramba & im KDE-Kommandozeilenfenster konsole ruft ein funktionell eher unscheinbares Hauptmenü (Abbildung 1) auf. Dessen Punkt Download… suggeriert, Gimmicks für den K-Desktop-Hintergrund ließen sich per Mausklick beziehen. Leider enthielt die dabei von Konqueror geöffnete Web-Seite zu Redaktionsschluss noch keine Themes.
Die findet man dafür unter [2]. Wir empfehlen, von dort heruntergeladene Theme-Archive im versteckten (ggf. mit mkdir ~/.superkaramba zu erzeugenden) Verzeichnis ~/.superkaramba mit dem passenden der beiden folgenden Befehle auszupacken:
tar -C ~/.superkaramba/ -xvjf archivname.tar.bz2 tar -C ~/.superkaramba/ -xvzf archivnamegz
Über den Open…-Link des Hauptmenüs lädt man anschließend die Definitionsdatei aus dem entpackten Theme-Ordner. Sie trägt die Dateinamensendung .theme.
Abbildung 2 zeigt das Theme “glassmachine” von [2], das neben einer Uhr, dem KDE-Menü, diversen Applikations- und Systemicons auch eine Kontrollleiste für XMMS enthält.
Abbildung 2: Die Glas-Maschine ist nichts anderes als eine zusätzliche Werkzeugleiste auf dem Desktop-Hintergrund
Nüchternere Naturen blenden mit dem “Liquid Weather Plus”-Theme (Abbildung 3) aktuelle Wetterinformationen in den Hintergrund ein. Im Kontextmenü, erreichbar über einen Rechtsklick auf die Anzeige, gelangt man zum Menüpunkt Configure Theme / Find location on weather.comMagdeburg, Germany) einträgt. Ein Klick auf Reload Theme, und ein Blick auf den Desktop verrät, welche Witterungsverhältnisse draußen herrschen.

Abbildung 3: Wetterbericht direkt vom Desktop
Der Weg zum eigenen Theme
Wer eigene Themes bauen möchte, erhält wertvolle Hinweise aus den Quellen bereits fertiger Themes. Jedes kommt mit einem eigenen Oberverzeichnis, in dem unter anderem die Steuerungsdatei mit der Endung .theme liegt. Was darin stehen darf, schlüsseln [3,4,5] detailliert auf.
“Glassmachine” besteht denn auch nur aus dieser Datei und einigen Icons. “Liquid Weather Plus” hingegen benutzt noch eine weitere Programmdatei: Da dieses Theme die Wetterdaten aus dem Internet besorgen muss, reicht die .theme-Datei nicht alleine aus. Ein Python-Skript sorgt für entsprechende Funktionalität. Doch Programmierkenntnisse müssen für den Anfang gar nicht sein: SuperKaramba bietet auch so eine Vielzahl an Möglichkeiten, Systeminformationen und ähnliches darzustellen.
Der Inhalt der .theme-Datei selbst lässt sich in zwei Kategorien unterteilen: Zum einen wären da die Kommandos, die das generelle Aussehen festlegen. Zum anderen liest SuperKaramba Parameter zum Darstellen von Sensorinformationen aus.

Abbildung 4: Uhrzeit, Datum und CPU-Last
Ein erstes eigenes Theme (Listing 1; unter dem Namen meintheme.theme auch auf der Heft-CD zu finden) soll eine einfache Digitaluhr, das aktuelle Datum und die CPU-Last anzeigen (Abbildung 4). Die Vorlage für die Uhr liefert das Glassmachine-Theme (Abbildung 2).
Zuerst brauchen wir ein Hauptfenster – und bekommen es mit dem Stichwort KARAMBA. Dabei legen X und Y fest, wieviele Punkte vom linken oberen Bildschirmrand entfernt sich dessen linke obere Ecke befinden soll. W gibt die Breite und H die Fensterhöhe an. Nur wenn LOCKED=FALSE als Parameter dasteht, kann der User das Hauptfenster auf dem Desktop verschieben oder skalieren. Die letzte Option INTERVAL legt fest, alle wieviel Millisekunden das Fenster aktualisiert werden soll. Da unsere Uhr über eine Sekundenangabe verfügt, sind 1000 Millisekunden ein gutes Update-Intervall. Im Übrigen spielt Groß- und Kleinschreibung in .theme-Dateien keine Rolle.
Die zweite Zeile des Beispiels legt mit dem Stichwort DEFAULTFONT die Schrift fest, die das Theme normalerweise benutzt. Welche der möglichen Parameter man hier vorgibt, liegt im eigenen Ermessen. Wir haben uns in Listing 1 für eine serifenlose Schrift (FONT=”Sans”) in weißer Farbe (COLOR) mit einem zwei Pixel breiten Schattenwurf (SHADOW=2) entschieden. Diese vordefinierten Schriftparameter lassen sich später überschreiben.
Beim Festlegen der Schriftfarbe greift SuperKaramba auf die RGB-Skala zurück: Der erste Wert steht für den Rot-, der zweite für den Grün- und der dritte für den Blauanteil der gewünschten Farbe. Setzt man alle drei auf den maximalen Wert 255, kommt weiß heraus, COLOR=0,0,0 definiert am anderen Ende der Skala schwarz.
Anschließend unterteilen wir unsere Anzeigen in Gruppen (englisch: “groups”): Eine erste zeigt die Uhrzeit und das Datum, die zweite die CPU-Last an. Der Parameter format legt hierbei das Schema fest, nach dem das Datum bzw. die Uhrzeit angezeigt wird. Im Beispiel bedeutet “ddd dd.MM.yyyy”, dass der Wochentag als Abkürzung (z. B. Don für Donnerstag) und das Datum im deutschen Format Tag.Monat.Jahr erscheint. Wird der Wochentag mit dddd übergeben, erscheint dessen voller Name. Die Sprache für die Darstellung des Wochentags ermittelt SuperKaramba automatisch aus der Umgebungsvariablen LANG.
Listing 1
Der Code zu
KARAMBA x=0 y=0 w=140 h=65 locked=false interval=1000
DEFAULTFONT font="Sans" shadow=2 color=255,255,255
<GROUP> x=10 y=10
TEXT x=12 y=0 sensor=time fontsize=22 format="hh:mm:ss" interval=500
TEXT x=12 y=25 sensor=time fontsize=10 format="ddd dd.MM.yyyy"
CLICKAREA x=0 y=0 w=120 h=35 onclick="kdesu kcmshell clock"
</GROUP>
<GROUP> x=10 y=50
TEXT x=12 y=0 value="CPU"
TEXT x=42 y=0 sensor=cpu
</GROUP>
In der letzten Zeile der Uhren-Gruppe definiert CLICKAREA einen interaktiven Bereich, dessen linken oberen Punkt die Parameter X und Y relativ zum Hauptfenster bzw. zur übergeordneten Gruppe festlegen. W und H bestimmen auch hier Breite und Höhe, während der Parameter ONCLICK=”…” in Hochkommata die Kommandozeile angibt, welche auf Mausklick in diesen Bereich startet. Im Modus LOCKED=FALSE genügt dazu ein einfacher Linksklick; da wir hier aber LOCKED=TRUE benutzen (siehe Zeile 1), ist ein Doppelklick notwendig, um in unserem Fall das KDE-Modul zum Konfigurieren von Datum, Zeit und Zeitzone aufzurufen.
Systemparameter erfragen
Um an Uhrzeit, Datum und CPU-Last zu kommen, fragen wir mit Hilfe von zwei verschiedenen Sensoren Systemwerte ab: SENSOR=TIME liefert die ersten beiden Werte, SENSOR=CPU die Prozessor-Auslastung. SuperKaramba kennt aber auch noch andere:
- DISK zeigt Informationen über gemountete Laufwerke an und zwar auch die, bei denen NFS und Samba im Spiel sind.
- MEMORY verrät, wie ausgelastet Hauptspeicher und die Swap-Partition sind.
- NETWORK liefert Informationen über den Netzwerkverkehr.
- NOATUN informiert darüber, welchen Audiotrack
noatun[6] gerade abspielt. - PROGRAM holt sich die Standardausgabe eines beliebigen Programms zum Anzeigen. So gibt
TEXT … sensor=program program="who | cut -d\ -f 1 | sort | uniq"
die aktuell eingeloggten User an.
- SENSOR benutzt das externe Programm
sensors[7] zum Erfassen von Messwerten. - TEXTFILE liest kontinuierlich eine Textdatei und gibt deren Inhalt aus. Ein Beispiel:
TEXT … sensor=textfile path="/proc/acpi/thermal_zone/THRM/temperature"
zeigt – so auf dem Rechner möglich – die aktuelle Systemtemperatur an.
- UPTIME liefert die Zeit, die seit dem letzten Booten des Rechners vergangen ist.
- XMMS gibt Informationen zum Audiotrack, den
xmms[8] gerade abspielt.Eine vollständige Übersicht über diese Parameter bietet [4].
Tabelle 1: Generelle Kommandos in .theme-Dateien
| Kommando | Bedeutung | wichtige Parameter |
|---|---|---|
| KARAMBA | definiert das Hauptfenster | X: horizontale Position (Standard: x=0) |
Y: vertikale Position (Standard: y=0) |
||
W: Breite (Standard: w=300) |
||
H: Höhe (Standard: h=300) |
||
LOCKED: Größenänderungen bzw. Verschiebungen verbieten (true) oder zulassen (false) (Standard: locked=false) |
||
INTERVAL: Aktualisierungszyklus in Millisekunden (Standard: interval=5000) |
||
| CLICKAREA | legt einen Bereich fest, in dem auf Mausklick ein Programm startet | X: horizontale Position (relativ zum Hauptfenster bzw. zur übergeordneten Gruppe) |
| Y: vertikale Position (relativ zum Hauptfenster bzw. zur übergeordneten Gruppe) | ||
| W: Breite | ||
| H: Höhe | ||
PREVIEW: Soll der User sehen, wo der Klickbereich verläuft? Wenn ja umrahmt preview=true ihn |
||
| ONCLICK: das zu startende Programm | ||
| DEFAULTFONT | legt Standardschriftart fest | FONT: Schriftfamilie (Beispiel: font="times"). Die auf dem eigenen System verfügbaren Familien verrät das Tool xfontsel im Menüpunkt fmly. |
COLOR: RGB-Farbwert der Schrift (Beispiel: color=255,0,0 für rot) |
||
SHADOW: Schattendicke in Punkten (Beispiel: shadow=2) |
||
<GROUP>, </GROUP> |
fasst mehrere Elemente zu Gruppen zusammen |
Optische Verbesserungen
Gerade für Messwerte ist die Darstellung als Text nicht unbedingt die eleganteste Variante. So bietet sich für die CPU-Last eine Pegelanzeige an. Dazu tauschen wir die letzte Zeile der zweiten Gruppe in Listing 1 gegen folgenden Code:
BAR x=42 y=0 sensor=CPU path="bar.png"
Die Datei bar.png erstellen wir mit Gimp [9] oder einem anderen Grafikprogramm – für Abbildung 5 enthält sie ein weißes Rechteck mit den Abmaßen 70×12 Pixel, von der SuperKaramba einen dem jeweiligen “Pegelausschlag” entsprechenden Ausschnitt zeigt. Dieser beginnt dabei in der linken oberen Ecke des Bildes; ein Bildpixel entspricht einem Punkt in der Pegelanzeige.
Ist die Grafik größer als das Hauptfenster oder wird die Anzeige in der Breite w bzw. Höhe h beschränkt, stutzt SuperKaramba die Grafik automatisch. Selbstverständlich darf die Bilddatei formatspezifische Transparenzeffekte, wie sie etwa PNG im Gegensatz zu JPG unterstützt, enthalten.
Gibt man in path kein konkretes Verzeichnis an, sucht SuperKaramba in dem Ordner, in dem sich die .theme-Datei befindet. Statt eines Bilds von der Festplatte kann auch eine http://http-URL als Bildpfad angegeben werden. Weitere Parameter für die Pegelanzeige erläutert Tabelle 2.
Damit SuperKaramba Änderungen an einem bereits geladenenen Theme wahrnimmt, klickt man mit der rechten Maustaste auf die Anzeige und wählt im Kontextmenü den Punkt Reload theme an.

Abbildung 5: CPU-Last als Balken…
Ersetzen wir die eben geänderte Zeile durch
GRAPH x=42 y=0 w=70 h=12 color=255,255,255 points=100 sensor=cpu
ergibt sich für die CPU-Last eine Kurve wie in Abbildung 6. XYW und H definieren hierbei wieder die relative Position der Anzeige sowie deren Breite und Höhe. Ihre Farbe legt man wie bei Texten mit dem Stichwort COLOR fest. Der neue Parameter POINTS gibt die Anzahl der anzuzeigenden Messpunkte an, in unserem Fall 100. Auch hier geschieht die Normierung auf die Breite (im Beispiel 70) automatisch.

Abbildung 6: … und als Kurve
SuperKaramba interpretiert geeignete Rückgabewerte eines Sensors auch als Bilddatei und stellt sie an einer festen Position nach dem Muster
IMAGE x=Zahl y=Zahl w=Breite h=Hoehe path="Pfad/zur/oder/URL/der/Bilddatei"
dar. Diese Funktion eignet sich zum Beispiel zum Einbinden von Webcam-Bildern in ein Theme. Weitere Anregungen bietet [5].
Tabelle 2: Die wichtigsten Parameter der Pegelanzeige BAR
| Parameter | Bedeutung |
|---|---|
| X | horizontale Position der linken oberen Ecke (relativ zum Hauptfenster bzw. zur übergeordneten Gruppe) |
| Y | vertikale Position der unteren linken Ecke (relativ zum Hauptfenster bzw. zur übergeordneten Gruppe) |
| W | Breite (optional; bei Nichtangabe verwendet SuperKaramba die Breite des Bildes) |
| H | Höhe (optional; per Default Höhe des Bildes) |
| PATH | Pfad zum zu verwendenden Bild |
| VERTICAL | Anzeige von unten nach oben statt von links nach rechts (Standard: vertical=false) |
Etwas interaktiver
Wie bereits erwähnt, zeigt SuperKaramba nicht nur Informationen über das System an, sondern steuert bei Bedarf Applikationen fern – zum Beispiel XMMS [8], wie Abbildung 7 zeigt. Zu diesem Zweck erweitern wir Listing 1 um den Code aus Listing 2.

Abbildung 7: XMMS-Fernbedienung
Außer dem Anfügen der neuen Gruppe, die mit Hilfe von Texten und hervorgehobenen (preview=true) Klickbereichen Knöpfe für die XMMS-Bedienung erzeugt, passen wir noch die Höhe des Gesamtfensters in der KARAMBAH=100 an. (Das Ergebnis befindet sich unter dem Namen meintheme_xmms.theme auf der Heft-CD.)
Ein Klick auf das mit < beschriftete Kontrollfeld springt dank ONCLICK=”xmms –rew” auf das vorherige Lied in der Wiedergabeliste, W startet die Wiedergabe (xmms --play), > spult auf das nächste Lied vor (--fwd), die Pausentaste P hält die Wiedergabe zwischenzeitlich an (--play-pause), S stoppt sie gänzlich (--stop), und M startet die KDE-Lautstärkeregelung in Gestalt des Mixers kmix[14] mit dem Kommando dcop kmix kmix-mainwindow#1 show [15,16].
Listing 2
Erweiterung um ein XMMS-Control
<GROUP> X=10 Y=65
text x=12 y=0 value="XMMS"
text x=50 y=0 value="<"
text x=60 y=0 value="W"
text x=70 y=0 value=">"
text x=80 y=0 value="P"
text x=90 y=0 value="S"
text x=100 y=0 value="M"
CLICKAREA x=50 y=0 w=9 h=12 preview=true SENSOR=PROGRAM ONCLICK="xmms --rew"
CLICKAREA x=60 y=0 w=9 h=12 preview=true SENSOR=PROGRAM ONCLICK="xmms --play"
CLICKAREA x=70 y=0 w=9 H=12 preview=true SENSOR=PROGRAM ONCLICK="xmms --fwd"
CLICKAREA x=80 y=0 w=9 H=12 preview=true SENSOR=PROGRAM ONCLICK="xmms --play-pause"
CLICKAREA x=90 y=0 w=9 H=12 preview=true SENSOR=PROGRAM ONCLICK="xmms --stop"
CLICKAREA x=100 y=0 w=9 H=12 preview=true SENSOR=PROGRAM ONCLICK="dcop kmix kmix-mainwindow#1 show"
</GROUP>
@KE:
Wer sich das Theme “glassmachine” genauer anschaut, sieht, dass dieses die aktuelle Position innerhalb des Liedes während der Wiedergabe mit einem Statusbalken anzeigt, Titel und Interpret ausliest und ausgibt. Das können wir – wie Abbildung 8 zeigt – auch! Für die Verlaufsanzeige erzeugen wir eine Bilddateibar1.png, die ein 96×12 Pixel großes graues Rechteck enthält, und erweitern die Gruppe in Listing 2 um die Zeile
BAR X=12 Y=15 SENSOR=XMMS FORMAT="%ms" PATH="bar1.png" INTERVAL=500
Der leider nicht offiziell dokumentierte Format-Parameter %ms sorgt dafür, dass der an den XMMS-Sensor gebundene Balken während des Abspielens eines Titels wächst und somit die jeweils aktuelle Position im Lied angibt.
Fehlt nur noch die Anzeige von Songtitel und Künstler. Auch dafür brauchen wir nicht mehr als eine zusätzliche Zeile, die sich die entsprechenden Daten vom XMMS-Sensor holt:
TEXT X=13 Y=16 W=94 H=10 SENSOR=XMMS FONTSIZE=8 FONT="Sans" color=255,255,255 FORMAT="%title"
FORMAT=”%title” liefert hierbei sowohl den Interpreten als auch den Titel. Das komplette Theme, small_text_xmms.theme genannt, finden Sie zusammengepackt im Archiv small_text_xmms.tar.bz2 unter [10] oder auch auf der Heft-CD.

Abbildung 8: Das komplette Beispiel
Allen, die jetzt sehnsüchtig darauf warten, ihre Themes mit Python-Code aufzuwerten, sei versprochen, dass ein entsprechender Artikel bald folgt.
Glossar
-
NFS
-
Das “Network File System” ermöglicht das transparente Einbinden von Verzeichnissen auf entfernten Unix/Linux-Servern in den eigenen Verzeichnisbaum.
-
Samba
-
Zu Microsofts Datei- und Druckerfreigabe-Funktionen kompatibles Software-Paket, das von Linux aus den Zugriff auf derartige Ressourcen ermöglicht. Zudem kann Linux mit Samba als Datei- und/oder Druckerserver für Windows-basierte Netzwerkclients herhalten.
-
Swap-Partition
-
Ein Bereich auf der Festplatte, der insbesondere auf Computern mit wenig physischem Arbeitsspeicher (RAM) als zusätzlicher virtueller Arbeitsspeicher notwendig ist, wenn speicherfressende Applikationen zum Einsatz kommen sollen. Das Auslagern der Speicherdaten auf Festplatte (“ausswappen”) macht die Angelegenheit aber nicht gerade schnell.
-
who | cut -d\ -f 1 | sort | uniq
-
Klassische Anwendung einer Unix-Pipeline (|). Das Kommando who gibt aus, wer aktuell eingeloggt ist. Aus dessen Ausgabe schneidet cut das erste Feld (-f 1) mit dem Usernamen heraus; als Spaltentrenner (delimiter, -d) dient ein Leerzeichen, das der Backslash \ schützt. sort ordnet die Ausgabe alphabetisch, und uniq sortiert die Dubletten aus, so dass jeder User nur einmal auftaucht.
Infos
[1] SuperKaramba-Binärpakete: http://netdragon.sourceforge.net/?page=Download+SuperKaramba
[2] SuperKaramba-Themes: http://www.kde-look.org/index.php?xcontentmode=karamba
[3] Generelle .theme-Parameter: http://netdragon.sourceforge.net/?page=General+Commands
[4] .theme-Sensoren: http://netdragon.sourceforge.net/?page=Sensors
[5] .theme-Anzeigegeräte: http://netdragon.sourceforge.net/?page=Meters
[6] Der KDE-Media-Player Noatun: http://noatun.kde.org/
[7] Linux System Hardware Monitoring: http://secure.netroedge.com/~lm78/
[8] X Multimedia System: http://www.xmms.org/
[9] The GIMP: http://www.gimp.org/
[10] Beispiel-Theme: http://wwwiti.cs.uni-magdeburg.de/~hoepfner/download.html
[11] Karamba, das Original: http://www.efd.lth.se/~d98hk/karamba/
[12] SuperKaramba: http://netdragon.sourceforge.net/
[13] Thomas Kaufmann: “Einführung in Python”, LinuxUser 05/2003, S. 78 f.
[14] Carsten Schnober: “Studio K”, LinuxUser 09/2003, S. 27 ff., http://www.linux-user.de/ausgabe/2003/09/027-kdesound/
[15] Patricia Jung: “Versteckt und nützlich”, LinuxUser 09/2003, S. 30 ff.
[16] Scott Wheeler: “Boost your efficiency”, Linux Magazine 11/2003, S. 46 ff., http://www.linux-magazine.com/issue/36/KDE_Scripting_DCOP.pdf @KE:





