Fingerbung.jpg

Aufpoliert

gDesklets installieren und nutzen

01.05.2005
Mit ebenso nützlichen wie optisch attraktiven Desktop-Extensions verleiht gDesklets der Gnome-Oberfläche einen persönlichen Charakter. Setzen sie die piffige Desktop-Erweiterung auch mit anderen GUIs optimal ein und entwickeln Sie Ihre eigenen Desklets.

Mittlerweile gibt es allerhand nützliche Programme, um den Desktop zu verschönern. Zu den beliebtesten Vertretern dieser Riege zählen Erweiterungen, die nützliche oder auch einfach grafisch ansprechende Miniprogramme – so genannte Desklets – auf dem Desktop anzeigen. Eine der vielseitigsten Anwendungen dieser Art ist gDesklets. Die erste Release, gDesklets 0.10, erschien im August 2003 nach sechsmonatiger Planung.

Zum damaligen Zeitpunkt gab es bereits DesktopX, Konfabulator und (Super-)Karamba, die eine ähnliche Philosophie wie gDesklets vertreten. Das Problem dieser Programme war und bleibt, dass sie nur für einen Desktop oder für ein bestimmtes Betriebsssystem (Konfabulator für den Mac, DesktopX für Windows) konzipiert sind. gDesklets dagegen sollte von Anfang an auf so vielen Window-Managern bzw. Desktops wie möglich funktionieren. gDesklets braucht einen Vergleich mit der Konkurrenz nicht zu scheuen und hat in einigen Bereichen sogar die Nase vorn.

Abbildung 1: Eine Zierde für jeden Desktop: gDesklets in Aktion.

Grundsätzlich läuft gDesklets zusammen mit allen Window-Managern, die die Freedesktop-Spezifikation [1] erfüllen. Zu seinem mächtigen Funktionsumfang trägt nicht zuletzt die Tatsache bei, dass es größtenteils in Python [2] geschrieben ist. Mit dieser interpretierten, objektorientierte Programmiersprache lassen sich auch größere Projekte erstellen.

Es gibt viele Einsatzgebiete für gDesklets, von denen einige über schlichtes "Eye Candy" weit hinausgehen. So kann ein Administrator damit Systeme überwachen und gegebenfalls administrieren. Im Gnome-CVS existiert ein Presentation-Desklet, mit dem man ohne großen Aufwand Präsentationen gestalten kann. gDesklets setzen der Fantasie kaum Grenzen – und lassen sich sogar verblüffend einfach selbst erstellen (Kasten 1).

Kasten 1: Desklets selbst erstellen

Selbst unerfahrenen Programmierern gelingt es ohne größere Schwierigkeiten, einfache Desklets selbst zu erstellen. Grundlegende XML- und Python-Kenntnisse sind von Vorteil, aber nicht wirklich notwendig. Dazu ein kurzes Beispiel, das in nur drei Codezeilen ein dynamisches Desklet realisiert:

<display window-flags="sticky, above">
<label value="Mein erstes…" font="MonoSpace 1cm" color="blue" on-enter=" self.font='MonoSpace 0.5in'; self.value='Hello World'; self.color='red' " on-leave=" self.font='MonoSpace 12pt'; self.value='…Desklet'; self.color='blue' "/>
</display>

Zeile ist obligatorisch – ohne <display> funktioniert das Desklet nicht. Das Tag <display> kann mehrere Attribute haben. So legt window-flags="sticky, above" fest, dass das Desklet auf jedem virtuellen Desktop und über allen anderen Anwendungen erscheinen soll.

Zeile 3 definiert zunächst ein Textfeld mit dem Anfangswert "Mein erstes…", das beim Starten des Desklets erscheint. Als Schrift dient MonoSpace in der Ausgabegröße 1cm. Alternativ können Sie die Größe auch in Pixel, Zoll, Punkt oder als Prozentangabe festlegen. Näheres dazu finden Sie in Appendix A des gDesklets-Entwicklerhandbuchs [9].

Alle modernen GUI-Bibliotheken arbeiten ereignisbasiert: Ein Tastendruck oder eine Mausbewegung lösen bestimmte Ereignisse aus. Auf einige davon reagieren die Anweisungen on-enter und on-leave in Zeile 3.

Bewegen Sie den Mauszeiger in das Desklet(-Fenster), löst dies das on-enter-Ereignis aus. Die Textgröße ändert sich auf einen halben Zoll, als Text erscheint nun "Hello World" in roter Farbe. Dabei besagt der Zusatz "self" vor dem jeweiligen Attributnamen, dass sich die Anweisung auf das label-Tag selbst bezieht. Vergessen Sie keinesfalls die Strichpunkte: Fehlen diese, erscheint ein Dialog, der die ungültige Stelle im Code hervorhebt.

Das on-leave-Ereignis wird ausgelöst, sobald der Mauszeiger das Desklet(-Fenster) wieder verlässt. Die Schriftgröße ändert sich zu 12 Punkt, die Farbe wieder zu blau.

Das Tag muss, wie bei XML üblich, mit einem Slash ("/") abgeschlossen werden. Zeile 5 beendet den Desklet-Code mit einem schließenden </display>.

Vorbereitung

Um gDesklets erfolgreich einzusetzen, bedarf es einiger Vorarbeit. Unter einer halbwegs aktuellen Distribution stellt dies jedoch kein größeres Problem dar. Vergewissern Sie sich aber auf jeden Fall, dass keine älteren Versionen des Paketes auf dem System installiert sind.

Eine speziell für Suse 9.2 zusammengestellte Variante von gDesklets finden Sie auf der Heft-CD. Die jeweils aktuellste Version des Programms können Sie unter [3] beziehen. Wollen Sie auf Basis der allerneuesten Quellen arbeiten, so finden Sie unter [7] den so genannten gDesklets Nightly Build Tarball zum Download. Er spiegelt die aktuellste Entwicklerversion wider und wird, wie der Name schon vermuten lässt, jede Nacht frisch gebaut.

Abhängigkeiten

Sie benötigt folgende Bibliotheken und Bindungen auf dem System (die Namen können je nach Distribution variieren): * python mindestens in Version 2.3. Bei SuSE teilt sich Python in mehrere Pakete auf – installieren Sie python-xml ebenfalls. * python-gtk2, die Python-Bindungen für gtk+-2.x, mindestens in Version 2.4.x. * python-pyorbit, die Python-Bindungen für ORBit2, in Version 2.0.1. * python-gnome2 2.6.x oder höher. Suse hat auch dieses Paket in mehrere kleinere aufgesplittet. Installieren Sie am besten alle, um eventuellen Problemen vorzubeugen. * expat sollte in Version 1.95.6 bzw. 1.95.8 vorliegen, 1.95.7 scheint fehlerhaft zu sein. * Clibgtop2 und librsvg jeweils mindestens in Version 2.8.0. * Cintltool Version 0.30 oder höher

Um gDesklets zu kompilieren, benötigen Sie zudem die Developer-Pakete von python, python-gtk2, python-gnome2, libgtop2 und librsvg. Suse 9.2 und älter liefern sehr veraltete Versionen der Pakete aus, deswegen ist man auf [4] oder [5] angewiesen. Dagegen bringen sowohl Debian Sarge als auch Fedora Core 3 bereits alles mit, was Sie brauchen. Für ältere Fedora-Versionen hält Dag Wieers [6] passende Pakete bereit.

gDesklets entpacken und kompilieren

Sind alle zum Auflösen der Abhängigkeiten notwendigen Dateien auf dem System installiert, dann packen Sie den Tarball zunächst mit tar xvjf gDesklets-Versionsnummer.tar.bz2 aus.

Das anschließende Kompilieren erledigen Sie in der gewohnten Linux-Manier mittels der Befehlsfolge ./configure, make und make install. In der Voreinstellung wird gDesklets in /usr/local/ installiert. Mit der Option ./configure --prefix=Verzeichnis ändern Sie bei Bedarf den Installations-Präfix.

Der erste Start

gDesklets bietet sowohl ein Frontend für die Kommandozeile an, als auch eine graphische Variante, die so genannte gDesklets-Shell. Das textbasierte Frontend stellt dem Benutzer eine ganze Reihe von Befehlen und Optionen zur Verfügung. Die Aufruf-Syntax lautet gdesklets Option Befehl. Dazu ein paar Erläuterungen:

  • help gibt einen kurzen Hilfetext und eine Erklärung der einzelnen Befehle und Optionen aus.
  • start startet den gDesklets-Daemon. Über ihn wickelt gDesklets die komplette Kommunikation ab. Daher dient start auch als Vorgabe-Befehl, falls der Benutzer vergisst, einen anderen Befehl anzugeben.
  • stop beendet den gDesklets-Daemon.
  • restart kombiniert start und stop, startet also den gDesklets-Daemon neu.
  • slay hilft weiter, wenn gDesklets auf keine Eingaben mehr reagiert.
  • status zeigt an, ob der gDesklets-Daemon läuft.
  • profile <Profil>: gDesklets unterstützt Profile. Falls <Profil> nicht angegeben wird, zeigt der Befehl alle verhandenen Profile an. Mit gdesklets profile test wechseln Sie in das Profil test.
  • open <display(s)> startet ein oder mehrere Desklets (die Dateierweiterung für Desklets ist display). Sie können sogar nicht-lokale Desklets zu starten, etwa via smb://, ssh://, (s)ftp:// oder http(s)://.
  • list zeigt alle laufenden Desklets im aktuellen Profil an.
  • shell startet die gDesklets-Shell (mehr dazu später).
  • configure startet den Konfigurationsdialog (siehe nächster Abschnitt)
  • check prüft, ob alle notwendigen Abhängigkeiten für gDesklets erfüllt sind. Damit prüfen Sie bei Bedarf, ob gDesklets auf dem System funktionieren kann oder nicht. Diesen Test nimmt gDesklets beim ersten Start automatisch vor.
  • about zeigt ein paar Informationen zu gDesklets an.
  • version gibt die Versionsnummer von gDesklets an.
  • --no-tray-icon deaktiviert das Systray-Icon, falls Sie beispielweise weder GNOME noch KDE verwenden.
  • --translucent teilt gDesklets mit, dass Sie einen X.org-Server mit aktivierter XComposite-Erweiterung verwenden. Dies ermöglicht echte Transparenz (Kasten 2). Sie ist bis zum Beenden von gDesklets verfügbar, dauerhaft aktivieren Sie sie über den gDesklets-Konfigurationsdialog.

Kasten 2: Echte Transparenz

gDesklets unterstützt dank der XComposite-Erweiterung neuerer X.org-Versionen echte Transparenz. Wenn diese Erweiterung in der xorg.conf nicht aktiviert ist, erscheint lediglich der Desktop-Hintergrund unter dem Desklet. Um sich an echter Transparenz zu erfreuen, nehmen Sie folgende Anpassung in der xorg.conf vor:

Section "Extensions"
    Option "Composite" "On"
EndSection

Nun starten Sie den XComposition-Manager xcompmgr [8]. In der gDesklets-Konfiguration aktivieren Sie zusätzlich die Checkbox Translucency. Läuft gDesklets bereits, müssen Sie die einzelnen Desklets oder alternativ gDesklets selbts neu starten.

Außer Metacity unterstützen bislang leider die wenigsten Window-Manager transparente Fenster. Im Zweifelsfall sollten Sie also Metacity zu diesem Zweck einsetzen. Einige ältere Versionen des Window-Managers enthalten jedoch einen fehlerhaften Composition-Manager. Treten seltsame Effekte auf, müssen Sie sich eine neuere Metacity-Version besorgen oder das Programm ohne Composition Manager selbst kompilieren.

gDesklets-Konfigurationsdialog

Gemäß der gDesklets-Philosophie, so einfach bedienbar zu sein wie nur möglich, gestaltet sich der Konfigurationsdialog echt schlicht (Abbildung 3). Er umfasst die drei Punkte Editor to view/edit the desklet source code, XComposite support (requires composition manager) und Screen Resolution (DPI).

Im Feld Editor stellen Sie Ihr Lieblingsprogramm zur Textbearbeitung ein. Mit dessen Hilfe sehen Sie bei Bedarf den Code von Desklets ein oder editieren ihn. Über den etwas irreführend benannten Knopf Öffnen können Sie im Dateisystem nach dem Programm suchen.

Haben Sie in der xorg.conf die XComposite-Erweiterung aktiviert, sollten Sie auch die Checkbox XComposite support anwählen.

Der Punkt Screen Resolution (DPI) erfordert etwas Handarbeit: Hier gilt es den DPI-Wert so einzustellen, dass der graue Balken genau 5 cm misst. Anderenfalls lässt sich keine korrekte Darstellung der gDesklets erzielen.

gDesklets Shell

Die Shell (Abbildung 4) rufen Sie entweder im Terminal mit dem Befehl gdesklets shell oder, nach einem Rechtsklick auf das gDesklets-Systray-Icon, über den Menüpunkt Desklets verwalten auf. Der Dialog umfasst sechs Bereiche:

Abbildung 4: Über die gDesklets-Shell verwalten Sie die installierten Desklets und die zugehörigen Komponenten.
  • Menü: Wichtig sind hier nur die Menüpunkte Datei und Profile. Unter Profile können Sie ein neues Profil erstellen. Es lassen sich nur solche Profile speichern, in denen Sie mindestens ein Desklet eingetragen haben.

Unter Datei finden Sie die Einträge Paket installieren (lokal und nicht-lokal), Ausgewähltes Desklet starten, (Nicht)-lokales Desklet starten und Ausgewähltes Desklet entfernen. Sie können per Drag&Drop ein Desklet-Tarball vom Browser oder dem Desktop in die Shell ziehen, woraufhin das Desklet installiert wird und sofort zur Verfügung steht.

  • Sortierung für linke Listenansicht: Mittels der Dropdown-Liste sortieren Sie die linke Listenansicht entweder nach Desklet-Kategorie, Desklet-Autor oder alphabetisch nach dem Desklet-Namen.
  • Linke Listenansicht: Je nachdem Auswahl in der Dropdown-Liste erscheinen hier entweder die Desklets-Kategorien, die Desklets-Autoren oder eine alphabetische Liste der Desklets.
  • Suchleiste: Die Suchleiste lässt sich momentan nicht besonders intuitiv bedienen; wir gehen daher nicht näher darauf ein.
  • Rechte Listenansicht: Sie zeigt alle vorhandenen/installierten Desklets an, die zur Auswahl der linken Listenansicht passen. Sie entfernen ein Desklet, indem Sie es hier markieren und im Menü DateiAusgewähltes Desklet entfernen auswählen. Durch einen Doppelklick oder DateiAsgewähltes Desklet starten starten Sie ein Desklet.
  • Schalter für die Ansichten Displays und Controls: Mit dem Schalter Controls wechseln Sie von der voreingestellten Ansicht Displays zur Anzeige der installierten Controls. Diese Ansicht benötigen vor allem Desklets-Entwickler. Details dazu finden Sie im Kapitel 7 des gDesklets-Entwicklerhandbuchs [9].

Wo gibts Desklets…?

Auf der gDesklets-Website [10] (Abbildung 5) stehen derzeit rund 150 verschiedene Desklets aus den verschiedensten Einsatzbereichen zur Auswahl. Sie sollten allerdings nur die neueren Desklets installieren, da ältere unter Umständen nicht mehr funktionieren. Das liegt daran, dass sich die Interna von gDesklets von Zeit zu Zeit ändern und gewisse Funktionen entweder nicht mehr zur Verfügung stehen oder durch andere ersetzt wurden.

Abbildung 5: Auf der gDesklets-Website finden Sie rund 150 verschiedene Desklets zum Download.

Zudem ist es wichtig, sich die Readme-Dateien eines Desklets durchzulesen, oder alternativ die Informationen auf der Download-Webseite zu studieren. Einige Desklets benötigen so genannte Controls, da sie ohne diese gar nicht oder nur eingeschränkt funktionieren.

Vor allem ältere Desklets basieren auf so genannten Sensors. Speziell Desklets der LT-Candy-Reihe gehören dieser Kategorie an und funktionieren größtenteils nicht mehr. Es gibt aber bereits Desklets, die die älteren in ihrem Aussehen und Funktionalität ersetzen und sogar überbieten. Dazu gehören "SideCandy", "SideStripes" und "PSI clones". Wollen Sie gerne Ihre Log-Dateien im Auge behalten, sollten Sie sich "Hypertail" näher ansehen. Es zeigt, was sich mit gDesklets mittlerweile alles realisieren lässt.

Das Kontextmenü eines Desklets

Jedes Desklet verfügt über ein Kontextmenü (Abbildung 6) mit der folgenden Grundstruktur:

  • Unter Desklet konfigurieren lassen sich in einem Dialog die verschiedenen Einstellungen des Desklets ändern. Nicht alle Desklets benötigen Einstellungen.
  • Über den Punkt Desklet verschieben lassen sich Desklets frei auf dem Desktop positionieren. Dies kommt vor allem Anwendern zu Gute, deren Maus keine mittlere Taste zur Verfügung stellt: Mit dieser können Sie die Desklets ebenfalls verschieben.
  • Wählen Sie Quellcode anzeigen, können Sie mit dem vorkonfigurierten Editor den Quellcode eines Desklets ansehen und modifizieren.
  • Mit Desklet neu starten stoßen Sie einen Neustart des Desklets an.
  • Über Desklet entfernen löschen sie das Desklet aus der Liste des aktuellen Profils. Auch die Konfigurationseinstellungen dieses Desklets gehen dabei verloren.

Je nach Funktionsumfang können Desklets auch über zusätzliche Einträge im Kontextmenü verfügen. Ein Beispiel hierfür ist die populäre Starterbar.

Vergleich zu anderen Systemen

Zwar verfolgt gDesklets einen ähnlichen Ansatz wie Superkaramba, Konfabulator oder DesktopX; es bietet jedoch wesentlich mehr Möglichkeiten: Wie bereits erwähnt, kann man kann damit auch komplexe Anwendungen erstellen. Daneben bringt es einige Eigenschaften mit, die die Konkurrenz nicht zu bieten hat.

Dazu zählt beispielsweise Sandboxed Execution. Darunter versteht man, dass ähnlich, wie bei Java-Applets, gDesklets selbst in einer abgeschirmten Umgebung abläuft. Schad-Code kann so nicht nach außen gelangen und das System in Mitleidenschaft ziehen. Ein Zugriff auf das System und andere Bereiche wie z.B. das Internet kann nur über die Controls erfolgen.

Momentan existiert allerdings noch kein Mechanismus, um die Integrität der Controls zu überprüfen. Jedoch sollen in einer der nächsten Versionen die Controls signiert werden. Falls der Benutzer ein unsigniertes Control auf dem System installieren möchte, wird er dann von gDesklets gewarnt.

Auch die Unterstützung für unterschiedlichste Maßeinheiten (Zentimeter, Zoll, Pixel, Punkt, prozentual) hat gDesklets der Konkurrenz voraus. So kann man die Darstellungsbreite eines Textfelds oder Bildes als prozentualer Bruchwert der Desklet-Breite angeben. Dem Autor ist kein vergleichbares System bekannt, das dieses Feature bietet.

Mit der Applet Description Language ADL bringt gDesklets eine XML-basierende Beschreibungssprache zur Festlegung des Aussehens mit. Die Abstützung auf XML macht Erweiterungen der ADL sehr einfach. Zudem öffnet sie die Tür zur Interoperabilität mit anderen Desklet-Umgebungen (Kasten 3).

Kasten 3: Kooperatives gDesklets

Seit Mitte März 2005 arbeiten die adesklets- [11] und gDesklets-Teams daran, die Beschreibungssprache beider Projekte zu vereinheitlichen. Bei gDesklets ist dies XML-Code und wird ADL (Applet Description Language) genannt. Derzeit evaluiert das adesklets-Team eine Adaption der ADL. In Zukunft werden also möglicherweise beide Projekte die gleichen Dateien als Basis ihrer Desklets verwenden. Zusammen mit dem adesklets-Projekt möchte das gDesklets-Team zudem eine Spezifikation für Themes ausarbeiten, die dann in die ADL einfließen soll.

Da das adesklets-Projekt noch relativ jung ist, sollte sich dies einfacher realisieren lassen als bei Superkaramba [12]. Grundsätzlich wäre es jedoch auch denkbar, einen Konverter zu schreiben, der Superkaramba-Themes in Desklets umwandelt. Ob und wann dies geschehen wird, steht jedoch noch nicht fest.

Ausblick

Zu behaupten, gDesklets sei perfekt oder vollständig hinsichtlich seiner Features, wäre vermessen. Dies liegt schon daran, dass Desklet-Entwickler und -Benutzer für einen stetigen Zustrom von Ideen und Anregungen sorgen. Einige davon werden mit Sicherheit in den nächsten gDesklets-Releases umgesetzt.

Dazu zählen unter anderem eine neue Shell und eine Editor für gDesklets. Die aktuelle Shell ist aus der Not heraus entstanden und enthält viele Schwächen. Spätestens mit dem Release 0.40 erscheint eine komplett neu geschriebene Shell mit noch mehr Features und intuitiverer Bedienbarkeit. Für Fortgeschrittene ist es zwar nicht schwer, das Erscheinungsbild von Desklets mit Hilfe von XML zu designen, jedoch soll es Zukunft einfacher werden. Ein Editor hätte den Vorteil, dass sich auch Unerfahrene sich eher an die Entwicklung von eigenen Desklets heranwagen.

Darüber hinaus soll gDesklets bald native Multimedia-Unterstützung erhalten. Es existieren zwar breits Desklets, die auf XMMS aufbauen; jedoch stellen sie nur einen eingeschränkten Funktionsumfang zur Verfügung. Das neue GStreamer-Framework [13] soll diesem Umstand abhelfen und sogar das Abspielen von Videos in gDesklets erlauben.

Allen voran Sun Microsystems ist daran interessiert, dass gDesklets Accessibility-Unterstützung für Benutzer mit eingeschränkten Fähigkeiten erhält. Erste Versuche zur Einführung werden bereits unternommen, jedoch existiert derzeit noch kein konkreter Zeitplan.

Ähnlich wie bei anderen Programmen wird eine der nächsten Versionen (geplant ist dies für 0.35) Desklets beim Start über per Fading ein- und beim Beenden wieder ausblenden. Als weiterer optischer Effekt kommt demnächst die Rotation von Text und anderen Elementen hinzu.

Große Teile von gDesklets sind bereits nach Windows portiert. Dies geschah innerhalb eines Wochenendes, was die hohe Code-Qualität beweist. Einige Probleme harren jedoch noch einer Lösung, da sich die Entwickler in einigen Bereichen der Windows-Programmierung nicht gut genug auskennen. Falls Sie Lust und genügend Erfahrungen haben, hier mitzuwirken, sind Sie herzlich eingeladen, die Portierung abzuschließen: Eine E-Mail [13] an die Entwickler genügt.

Der Autor

Christian Meyer ist Co-Autor von gDesklets und der Vorsitzende des im Oktober 2004 gegründeten GNOME Deutschland e.V. Momentan hilft er außerdem bei der Organisation der diesjährigen GUADEC, die Ende Mai in Stuttgart im Haus der Wirtschaft stattfinden wird. Christian ist auf den meisten größeren und kleineren Linux-Events anzutreffen.

Infos

[1] Informationen zur EWMH-Spezifikation: http://freedesktop.org/wiki/Standards_2fwm_2dspec

[2] Python Homepage: http://www.python.org

[3] Neueste gDesklets Version: http://www.pycage.de/software_gdesklets.html

[4] RPMSeek: http://www.rpmseek.com

[5] SuSE RPMs (usr-local-bin.org): http://usr-local-bin.org/rpms

[6] Dag Wieers Repository: http://dag.wieers.com/home-made/apt

[7] gDesklets Nightly Builds: http://www.gdesklets.org/users/pycage/nightly

[8] X Compositing Manager: http://www.freedesktop.org/Software/xapps

[9] gDesklets Entwicklerhandbuch: http://www.gdesklets.org/develbook

[10] Desklets für gDesklets: http://gdesklets.gnomedesktop.org

[11] adesklets: http://adesklets.sf.net

[12] Superkaramba: http://netdragon.sourceforge.net

[13] GStreamer: http://gstreamer.freedesktop.org

[14] E-Mail der gDesklets-Entwickler: mailto:martin@gdesklets.org und mailto:chrisime@gdesklets.org

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

Kommentare