Open Source im professionellen Einsatz

© photocase.com

Workshop: Superkaramba nutzt den Hintergrund der Arbeitsfläche effizient

Der optimale Arbeitsplatz

Ein schönes Hintergrundbild befriedigt zwar ästhetische Bedürfnisse. Doch wer den KDE-Desktop nutzen möchte, um Systemdaten im Blick zu behalten, der bereichert ihn mit selbst geschriebenen oder den zahlreich im Netz verfügbaren Superkaramba-Themes.

Jeder Bildschirm ist begrenzt und der Arbeitsplatz kostbar. Um ihn effizient auszunutzen, versorgt Superkaramba für KDE-Nutzer den Oberflächenhintergrund mit Informationen. Die Überwachung von Logdateien oder Systemdaten läuft damit jederzeit zugänglich im Hintergrund, ohne Platz in Form eigener Fenster zu beanspruchen. Die Python-Schnittstelle macht die Programmierung flexibler Themes leicht.

Softwarebeschaffung

Die aktuelle Version von Superkaramba [1] trägt die Versionsnummer 0.37. Wer sich das Kompilieren sparen möchte, findet RPMs unter [2]. Der Aufruf über »superkaramba« bringt außer dem Hauptfenster (siehe Abbildung 1) ein Kontroll-Icon in der KDE-Leiste auf den Bildschirm.

Abbildung 1: Superkaramba nutzt den KDE-Desktop optimal aus; das Frontend macht die Installation neuer Themes komfortabel.

Abbildung 1: Superkaramba nutzt den KDE-Desktop optimal aus; das Frontend macht die Installation neuer Themes komfortabel.

Um den Desktop mit Leben zu füllen, benötigt Superkaramba Themes. Für viele Zwecke existieren bereits entsprechende Dateien, der Button »Neue Designs...« öffnet einen Auswahldialog, der einige der bei [3] aufgelisteten Themes direkt anbietet. Nach der Wahl eines Eintrags erscheinen nähere Infos zur Funktionalität und ein Bildschirmfoto gibt einen ersten Eindruck.

Soll beispielsweise eine andere Iconleiste den Desktop verschönern, erledigt dies das Theme Programs Bar. Superkaramba lädt die notwendigen Dateien herunter und installiert sie im Verzeichnis »~/.kde/share/apps/superkaramba/themes«. Nach dem Schließen des Theme-Dialogs tauchen installierte Desktop-Verzierungen im Superkaramba-Fenster startbereit auf.

Mehrere Themes lassen sich gleichzeitig auf einem Desktop betreiben und einzeln starten oder entfernen (Abbildung 2). Im Kontextmenü legt der Benutzer außerdem fest, ob sich ein Theme verschieben lassen soll oder nicht. Einige Themes bringen ihren eigenen Konfigurationsdialog mit. Auf diese Weise lässt sich beispielsweise die Wettervorschau lokalisieren und für den eigenen Aufenthalsort anfordern.

Abbildung 2: Der KDE-Desktop wird mit Hilfe von Superkaramba zur Informationszentrale. Bereits verfügbare Themes verraten aktuelle Nachrichten oder das Wetter ebenso wie Systemdaten.

Abbildung 2: Der KDE-Desktop wird mit Hilfe von Superkaramba zur Informationszentrale. Bereits verfügbare Themes verraten aktuelle Nachrichten oder das Wetter ebenso wie Systemdaten.

Für eigene Themes legt der Benutzer eine Datei nach dem Muster »mein_theme.theme« an, die sich lokal in Superkaramba öffnen lässt. Da sich zu dieser Layout- noch Grafikdateien und Python-Skripte gesellen können, empfiehlt es sich, alles in einem gemeinsamem Verzeichnis zu sammeln.

Die »theme«-Datei besteht aus drei Komponenten: Generelle Kommandos legen die Geometrie des Theme sowie der zu verwendenden Standardschriften fest und definieren die interaktiven Bereiche. Sensoren helfen beim Auslesen von Systemparametern wie der aktuellen CPU-Last. Anzeigeinstrumente stellen die Messwerte dar. Listing 1 illustriert den Aufbau einer »theme«-Datei.

Listing 1:
»mein_theme.theme«

01 KARAMBA x=0 BOTTOM=true w=200 h=400 LOCKED=false INTERVAL=1000
02 DEFAULT font="Sans" fontsize=10 shadow=2 color=255,255,255
03  <GROUP> x=10 y=10
04   TEXT x=12 y=0 sensor=time fontsize=12 format="hh:mm:ss"
05   TEXT x=12 y=15 sensor=time format="ddd dd.MM.yyyy"
06   CLICKAREA x=0 y=0 w=120 h=34 onclick="kdesu kcmshell clock"
07 </GROUP>
09 <GROUP> x=10 y=50
10   TEXT  x=12 y=0  value="MEM"
11   TEXT  x=45 y=0  sensor=memory format="%fmb MB"
12   TEXT  x=12 y=15 value="CPU"
13   BAR   x=45 y=15 sensor=cpu  path="bar.png"
14   TEXT  x=12 y=30 value="IN"
15   GRAPH x=45 y=30 h=12 w=70 color=255,255,255 points=100 sensor=network device="eth0" format="%in"
16   IMAGE x=0  y=50 path="background.png"
17 </GROUP>

Die erste Zeile in Listing 1 sorgt dafür, dass das Theme links unten auf dem Desktop erscheint, eine Breite von 200 und eine Höhe von 400 Punkten hat, sich verschieben lässt und sich alle 1000 Millisekunden aktualisiert. Alternativ lässt sich die Position durch die Werte von »x« und »y« über den Abstand zur linken oberen Bildschirmecke definieren; der Parameter »BOTTOM=true« überschreibt jedoch die horizontale Position. Analog zwingt die Option »RIGHT=true« das Theme an den rechten Rand. »ONTOP=true« sorgt dafür, dass kein anderes Fenster das Theme verdecken kann. »TOPBAR=true« und »BOTTOMBAR=true« dagegen legen es wie die KDE-Kontrollleiste an den oberen beziehungsweise unteren Bildschirmrand, ohne dass maximierte Fenster es überdecken.

Die Standardschriftart, -größe und -farbe für alle Textelemente legt die zweite Zeile in Listing 1 fest. Die Farbkodierung erfolgt hierbei durch eine Kombination aus den Werten für Rot, Grün und Blau mit einem Maximum von jeweils 255. Das Beispiel verwendet »255, 255, 255«, den Code für Weiß.

Sensoren und Anzeigegeräte

Die Zeilen 4 und 5 in Listing 1 erzeugen zwei Textanzeigen, deren Inhalte von einem Zeitsensor (»sensor=time«) stammen. Zeile 4 gibt die Uhrzeit aus und überschreibt die zuvor definierte Standardschriftgröße. Gleichartige Elemente über »<GROUP>«-Tags zu gruppieren empfiehlt sich, um die Übersicht zu erhöhen und ihnen beispielsweise eine gemeinsame Position zuzuweisen.

Die erste Gruppe innerhalb des Theme steht an Position »x=10«, »y=10« enthält neben der Zeit- und Datumsanzeige die Definition eines interaktiven Bereichs. Zeile 6 legt fest, dass ein Doppelklick in den 120 Pixel breiten und 34 Pixel hohen Bereich das KDE-Kommando zum Einstellen der Uhrzeit aufruft. Der Parameter »preview=true« umrahmt ein Theme, um darauf hinzuweisen, dass es sich noch im Teststadium befindet.

Abhängig vom abgefragten Sensor legt der Parameter »format« Ausgabeinhalt und -format eines Feldes fest. Der Zeitsensor liefert beispielsweise über »"hh:mm:ss"« die Uhrzeit in der Form Stunde:Minute:Sekunde. Neben dem Zeitsensor bietet Superkaramba die folgenden Schnittstellen:

  • »cpu«: Systemlast
  • »disk«: Speicherverbrauch auf eingehängten
    Dateisystemen
  • »memory«: Freier und benutzter Arbeitsspeicher
  • »network«: Ein- und ausgehendes
    Netzwerkaufkommen
  • »noatun«: Informationen aus einem laufenden
    Noatun-Prozess
  • »program«: Standardausgabe eines beliebigen
    Programms
  • »sensor«: Verarbeitet die Ausgabe von LM-Sensors
    [4]
  • »textfile«: Liest eine Textdatei
    kontinuierlich
  • »uptime«: Laufzeit des Systems
  • »xmms«: Informationen aus einem XMMS-Prozess

Die zweite Gruppe in Listing 1 illustriert das Zusammenspiel einiger dieser Sensoren mit unterschiedlichen Ausgabegeräten. Zeile 11 gibt den freien Arbeitsspeicher ohne Puffer und Cache in MByte aus. Zeile 13 erzeugt ein Balkendiagramm, das die aktuelle Prozessorlast darstellt, und verwendet dazu das Bild »bar.png«.

Zur Auswertung des eingehenden Netzwerkverkehrs kommt in Zeile 15 ein Graph zum Einsatz. Er hat eine Höhe von 12 und eine Breite von 70 Punkten und ist weiß. Die letzte Zeile dieser Gruppe zeigt durch das Ausgabegerät »IMAGE« ein Bild an. Der Parameter »PATH« nimmt optional eine URL entgegen, um ein Bild aus dem Internet einzubinden. Alle Formatierungsoptionen der verschiedenen Ausgabegeräte dokumentiert die Projektseite.

Um ein Theme flexibler zu gestalten, ist noch eine Python-Schnittstelle eingebaut. Sie ermöglicht es, mit Hilfe von Callback-Funktionen auf durch die KDE-Oberfläche ausgelöste Events zu reagieren (Tabelle 1). Damit ein Theme auf eine Python-Datei zugreifen kann, muss sie auch im selben Verzeichnis wie die »theme«-Datei liegen und den gleichen Basisnamen tragen, aber auf ».py« enden. Als Ausgangspunkt für die Entwicklung eigener Skripte steht auf der Superkaramba-Homepage eine Vorlage zur Verfügung, die zahlreiche Callback-Funktionen einbindet.

Tabelle 1:
Callback-Funktionen

 

Funktion

Auslöser

Übergabeparameter

initWidget(widget)

Erzeugen des Superkaramba-Widget

-

widgetUpdated(widget)

Aktualisierung des Theme

Aktualisierungsintervall aus der
».theme«-Datei

widgetClicked(widget, x, y, button)

Mausklick im Theme

»x« und »y«: Koordinaten des Klicks
relativ zum Theme; »button«: benutzte Maustaste

widgetMouseMoved(widget, x, y, button)

Mausbewegung innerhalb des Theme

»x« und »y«:Koordinaten des Klicks
relativ zum Theme; »button«: benutzte Maustaste

menuItemClicked(widget, menu, id)

Klick auf einen Menüpunkt

»menu«: Menü-Handle; »id«:
Menüpunkt-Handle

menuOptionChanged(widget, key, value)

Aufruf eines Konfigurationsmenüpunkts im Theme

»key«: Handle des Menüpunkts;
»value«: neuer Wert der Menüoption
(»true« oder »false«)

meterClicked(widget, meter, button)

Klick auf ein Anzeigegerät

»meter«: Handle des Anzeigegeräts;
»button«: benutzte Maustaste

commandOutput(widget, pid, output)

Programmaufruf mittels »executeInteractive()«,
falls dabei eine Ausgabe nach »stdout« zustande
kommt

»pid«: Prozess-ID des Programms;
»output«: Ausgabetext

itemDropped(widget, dropText)

Objekte, die bei Drag&Drop-Aktionen auf das Theme
fallen

»dropText«: Text zum Objekt (zum Beispiel URL)

startupAdded(widget, startup)

KDE startet eine Applikation

Ist der Startvorgang abgeschlossen, folgen die Signale
»startupRemoved()« und danach
»taskAdded()«

startupRemoved(widget, startup)

»startupAdded()«

-

taskAdded(widget, task)

»startupAdded()«

-

taskRemoved(widget, task)

Programmende einer Applikation

-

activeTaskChanged(widget, task)

Eine Applikation wird in den Vordergrund geholt

-

Diesen Artikel als PDF kaufen

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook