Spätestens seit der Entscheidung der LXDE-Entwickler, Openbox [1] zu integrieren, statt einen eigenen eigenes Projekt zu entwickeln, gehört der funktionale Fenstermanager nicht mehr zur grauen Masse. Passgenau und ohne große Verrenkungen fügt er sich nicht nur in LXDE, sondern auch in Gnome und KDE ein. Puristen, die Openbox ohne Sahne und Schokostreusel bevorzugen, sind auf dem Vormarsch.

Die minimale Dekoration, die Openbox im Wesentlichen mit Hilfe der Xlib zeichnet, statt sie aus allerlei Mini-Grafiken zu komponieren, kommt dabei vor allem leistungsschwacher Hardware zugute. Dabei zieht dieser Ansatz nicht zwangsläufig Ödnis und Trostlosigkeit nach sich: Die Bandbreite der Optionen beim Bau von Themen erweist sich als erstaunlich groß und bietet weit mehr als nur die Anpassung von Farben.

Der Einstieg

Sie müssen nicht unbedingt bei Null anfangen: Im Openbox-Wiki finden Sie ein Beispiel [2] für ein Thema, das zwar kaum höheren ästhetischen Ansprüchen genügt, aber eine gute Ausgangsbasis für die kreative Arbeit bildet, weil es die enthaltenen Objektbeschreibungen recht gut erklärt. Dabei müssen nicht zwangsläufig sämtliche Zeilen des Beispiels auch im eigenen Thema auftauchen. Werte, die Sie nicht definieren, erhalten automatisch eine Standard-Belegung. Bei Bedarf fügen Sie später problemlos individuelle Änderungen hinzu.

Eine andere Möglichkeit bestünde darin, als Basis einen Stil aus Blackbox zu verwenden [3], dem Urahn von Openbox. Die Syntax der beiden Fenstermanager ist trotz vieler Jahre der Trennung noch immer weitestgehend kompatibel – nicht zuletzt, weil seit langem niemand mehr Blackbox richtig weiterentwickelt und daher kaum Inkonsistenzen auftreten.

Openbox speichert die Konfiguration der Themes im Ordner /home/Benutzer/.themes/openbox-3 in einer Datei namens themerc. Diese packen Sie als Vorlage in einen Ordner, der den Namen des neu zu erstellenden Themas trägt, und legen diesen unter /home/Benutzer/.themes ab.

In vielen Fällen geht es darum, das Erscheinungsbild der Fenster an den Look des verwendeten GTK- oder Qt-Themas anzupassen. Da Qt ohne viel Aufhebens in der Lage ist, sich das Kleid von GTK überzustreifen, nutzt dieser Artikel als Ausgangspunkt ein Thema für GTK+ 2: Bei "T-ish" [4] handelt es sich um eine Variante des altbekannten Clearlooks-Themas für Gnome.

Um nicht mühsam in der GTK-Konfiguration nach den richtigen Farbwerten suchen zu müssen, nutzen Sie die Farbpipette als Werkzeug der Wahl. Diese steht auch ohne Gimp oder ein anderes Grafikprogramm bereit (siehe Kasten "Farbwahl"). Die Pipette arbeitet nicht unbedingt pixelgenau. Eine im Bildbetrachter vergrößerte Ansicht eines Screenshots erleichtert die Farbwahl erheblich. Dabei sollte das Bildschirmfoto das Fenster eines GTK2-Programms samt geöffneter Menüs zeigen zu erstellen. Das erreichen Sie durch eine verzögerte Aufnahme, die Ihnen die Zeit gibt, während des zuvor festgelegten Countdowns das entsprechende Element zu öffnen.

Farbwahl

Um Farbwerte zu ermitteln, brauchen Sie nicht unbedingt ein ausgewachsenes Bildbearbeitungsprogramm wie Gimp. Sofern die Python-Bindings für GTK2 auf dem System installiert sind, finden Sie in dessen Demo-Dateien (meist unter /usr/lib/pygtk/2.0/demos) das Skript colorsel.py. Kopieren Sie es an einen Ort Ihrer Wahl und setzen Sie mit dem Befehl chmod+x colorsel.py oder über die entsprechende Funktion des Dateimanagers die entsprechenden Rechte, um die Datei auszuführen. Beim Start des Skripts erscheint zunächst ein einfaches Fenster mit einer Farbfläche. Ein Klick auf den Knopf Change the above color bringt den eigentlichen Farbwähler mit Farbrad, Schiebereglern, Anzeigefeldern und Pipette zum Vorschein (Abbildung 1).

Abbildung 1: Der Dialog zum Auswählen der Farbe mit der Pipette unter dem Farbrad.

Rahmenkosmetik

Ein Klick mit der Pipette auf den Hintergrund des fotografierten Fensters liefert den hexadezimalen Wert #E2E0E1. Genau diese Farbe kommt später in diesem Beispiel für den Hintergrund der Menüs zum Einsatz. Folglich lautet der entsprechende Eintrag in der themerc so wie in Zeile 1 von Listing 1.

Um das kräftige Schwarz des Rahmens um die Menüs etwas zu entschärfen, kommt hier ein dezenter Farbton zum Einsatz. Die Pipette liefert für das Menü eines Gtk-Programms den Wert #989396, der sich in den Zeilen 3 bis 5 von Listing 1 niederschlägt. Die Zeilen 3 und 4 legen dabei für die allgemeinen Fensterrahmen den Farbwert fest, der Wert in Zeile 5 gilt für den Rahmen des Menüs.

Das Gtk-Thema unterlegt die Menüeinträge in einem grauen Farbton, der von oben nach unten abdunkelt. Dieser soll natürlich auch in den Openbox-Menüs erscheinen. Die Pipette zeigt hier für den oberen Bereich den Wert #BDBDBD, für den unteren #A6A6A6 (Listing 1, Zeilen 7 bis 11). Die erste Zeile dieses Bereichs sorgt für den Farbverlauf. Er entspricht zwar nicht hundertprozentig dem Original, was aber nur bei näherem Hinsehen auffällt.

Listing 1

menu.items.bg.color: #E2E0E1
window.active.border.color: #989396
window.inactive.border.color: #989396
menu.border.color: #989396
menu.items.active.bg: Raised Gradient Vertical
menu.items.active.bg.color: #BDBDBD
menu.items.active.bg.colorTo: #A6A6A6
menu.items.active.text.color: #000000
menu.items.active.disabled.text.color: #FFFFFF
window.*.title.separator.color: #989396
*.title.bg: Flat
*.title.bg.color: #e2e0e1
window.active.label.text.color: #000000
window.inactive.label.text.color: #989898
window.active.label.text.font: shadow=y:shadowtint=30:shadowoffset=1
menu.title.text.font: shadow=y:shadowtint=30:shadowoffset=1
window.active.button.*.bg: Flat Gradient Vertical Border
window.active.button.*.bg.color: #BDBDBD
window.active.button.*.bg.colorTo: #A6A6A6
window.active.button.*.image.color: #000000
window.inactive.title.bg: Flat
window.inactive.title.bg.color: #e2e0e1
window.inactive.label.text.color: #989898
window.active.button.disabled.bg: Flat Solid Vertical Border
window.active.button.disabled.bg.color: #BDBDBD
window.active.button.disabled.image.color: #BDBDBD
window.inactive.button.disabled.bg: Flat Solid Vertical
window.inactive.button.disabled.bg.color: #e2e0e1
window.inactive.button.disabled.image.color: #eae6e9

Linientreu

Andere Umgebungen kennen zahlreiche Themen, die nicht mehr so streng visuell zwischen Titel und Inhalt der Fenster trennen. In früheren Openbox-Versionen war so etwas nicht ohne Weiteres möglich, denn dort saß stets eine Linie im Fensterrahmen.

Manche Entwickler haben das umgangen, indem sie in ihrem Thema sowohl dem Titel des Fensters als auch dem Rahmen die gleiche Farbe zuwiesen. Das führte allerdings zu Problemen, wenn kein Compositing-Manager lief, der mittels Schatten dem Fenster doch noch zu einem Rahmen verhalf (siehe Kasten "Compositing").

Seit Openbox 3.5.0 können Sie in der Themendefinition die Farbe der Linie unter dem Fenstertitel festlegen (Listing 1, Zeile 13). Der Asterisk * fungiert dabei als Platzhalter für diverse Bezeichnungen wie active oder inactive. Auf diese Weise verschlanken Sie die themerc etwas. Bei Bedarf fügen Sie für die konkreten Zustände individuelle Werte ein, die den aus der Zeile mit dem Platzhalter überschreiben.

Nun stehen alle Wege offen, einen fließenden Übergang von der Titelzeile zum Rest des Fensters zu schaffen (Abbildung 2). Dazu verwenden Sie den Farbwert des Hintergrundes für den Fenstertitel (Listing 1, Zeilen 15 und 16).

Abbildung 2: Schon ganz ansehnlich, aber noch etwas unübersichtlich.

Compositing

Eine eigene Anbindung an die Compositing-Funktionen des X-Servers hat Openbox derzeit nicht an Bord und lädt sich diese Fracht wohl auf lange Sicht auch nicht auf. Dennoch müssen Sie auf Schatten, Animationen und Transparenzen nicht verzichten. Der Weg zum Erfolg führt über die Compositing-Werkzeuge Xcompmgr [8] oder Cairo-compmgr [9]. Dazu fügen Sie den Startprogrammen der Arbeitsumgebung beispielsweise folgenden Befehl hinzu:

xcompmgr -CcfF -I-.015 -O-.03 -D6 -t-1 -l-3 -r4.2 -o.5 &

Die Parameter sorgen für das weiche Einblenden sich öffnender Fenster und ansehnliche Schattierungen. Außerdem sorgt die Zeile dafür, dass VTE-basierte Terminalfenster keinen Schatten erhalten, was ansonsten dazu führt, dass das Fenster beim Verschieben den Schatten wie einen verwaschenen Brautschleier hinter sich her zieht. Das liegt an Inkompatibilitäten mit der Transparenz des Terminals und betrifft zum Beispiel das Gnome-Terminal, jenes von XFCE und zahlreiche weitere.

Cairo-compmgr kommt mit einer ansprechenden grafischen Oberfläche zum Konfigurieren daher und kennt unter anderem Optionen zum Animieren von Menüs. Es nistet sich als Symbol im Benachrichtigungsfeld ein. Von dort rufen Sie es über das Kontextmenü auf.

Weder Cairo-compmgr noch Xcompmgr werden derzeit aktiv weiterentwickelt, beide enthalten etliche Bugs. Seien Sie also darauf gefasst, gelegentlich einen halbtransparenten schwarzen Trauerflor auf dem Bildschirm vorzufinden, wo eigentlich noch nicht einmal ein Fenster liegen sollte, dessen Schatten er sein könnte. Artefakte bereits geschlossener Fenster und Menüs treten ebenfalls gelegentlich auf. Meist verschwinden sie durch einen Wechsel der Arbeitsfläche wieder.

Falls Sie im Eigenbau auf farblich abgesetzte Fenster- und Menürahmen verzichten, erwächst daraus an sich kein Problem. Bedenken Sie aber, dass solch eine Konstellation das entsprechende Thema für Openbox-Fans beinahe nutzlos macht, wenn diese – aus welchen Gründen auch immer – kein Compositing nutzen: Durch den dann fehlenden Rahmen gerät das Unterscheiden mehrerer hintereinander angeordneter Fenster zum Vexierspiel.

Arbeit am Detail

So weit, so gut – nur der Text passt rein gar nicht mehr ins neue Farbschema. Im aktiven Fenster sollte man die Schrift eindeutig lesen können, während das inaktive Fenster einen mehr informativen Zweck hat und der Text ausgegraut sein darf. Die Werte in den Zeilen 15 und 16 von Listing 1 setzen diese Vorgaben um. Nett anzuschauen ist auch eine Schattierung des Titeltexts der aktiven Fenster und der Menütitel (Zeilen 18 und 19).

Die meisten kreativen Möglichkeiten bieten zweifellos die Fensterknöpfe. Dazu nutzen Sie entweder die mit Openbox gelieferten Vorlagen oder definieren bei Bedarf eigene Formen, die als XBM-Datei vorliegen müssen. Für den Anfang sollten Sie sich jedoch auf die Standardformen beschränken.

Openbox kennt keine Option, die Knöpfe der Fenster in verschiedenen Farben darzustellen. Der Schließen-Knopf erscheint als stets genauso in Rot oder Blau wie jener zum Maximieren oder Minimieren. Das verwundert eigentlich, weil andere Fenstermanager verschieden gefärbte Knöpfe seit Langem ermöglichen.

Die derzeit noch blaue Farbe der Knöpfe passt nicht mehr zum Rest des Themas. Eine Möglichkeit wäre, die Grautöne der Menüeinträge auf die Knöpfe abzubilden (Listing 1, Zeilen 24 bis 30). Inaktive Fenster erhalten wieder rein informative, schlichte graue Knöpfe in der Färbung des Titeltexts ohne Umrandung.

Testlauf

Zum Testen des neuen Gewandes eignet sich das Programm Obconf [5] hervorragend. Schon während des Bearbeitens der themerc haben Sie die Möglichkeit, es praktisch in Echtzeit zu testen. Es genügt, kurz auf ein beliebiges Thema zu wechseln und dann wieder zum eigenen Thema zurück zu schalten. Allerdings aktualisiert die Software das Vorschaubild nicht direkt (Abbildung 3), sondern erst nach einem Neustart des Programms.

Abbildung 3: Obconf hilft Ihnen beim Testen des Themas.

Denken Sie immer daran, dass die neue Kreation anfangs nur an der Oberfläche der Optionen von Openbox kratzt. Deshalb empfiehlt es sich, möglichst viele Programme damit zu testen. Zwar füllt Openbox fehlende Werte stets mit Standards auf, das führt aber gelegentlich zu völlig unerwarteten Effekten bei einem Element – zum Beispiel einen etwas seltsam wirkenden Knopf zum Maximieren des Fensters (Abbildung 4).

Abbildung 4: Ein schwarzes Schaf im Fenstertitel macht den an sich guten Eindruck des Themas kaputt.

Einen solchen Knopf zeigt Openbox immer dann an, wenn sich das betreffende Fenster nicht maximierten lässt und der Knopf deswegen keine Funktion hat. Sinnvollerweise sollte der Knopf in aktiven Fenstern einen leeren Rahmen zeigen und in inaktiven Fenstern ausgegraut sein (Listing 1, Zeilen 32 bis 37).

Abbildung 5 zeigt den vorläufig finalen Status. Der Aufwand hat sich gelohnt, denn das Ziel, ein dem Gtk-Thema entsprechendes Outfit zu kreieren, ist zweifellos erfüllt.

Abbildung 5: Das Thema macht schon eine gute Figur, verträgt aber noch etwas Kosmetik.

Öffentlichkeitsarbeit

Ein im stillen Kämmerlein entwickeltes Thema sollte nicht unbedingt dort bleiben, egal, ob Sie eine nennenswerte Anzahl an Fans erwarten: Selbst, wenn Sie nur einen einzigen Benutzer damit glücklich machen, hat sich das Veröffentlichen bereits gelohnt.

Den bekanntesten und umfangreichsten Themen-Pool finden Sie auf Box-look.org [6]. Neben der Möglichkeit des Veröffentlichens des eigenen Themas liefert die Webseite Anregungen und Ideen für weitere Eigenkreationen. Insbesondere das oben beschriebene Anpassen an ein GTK-Thema birgt noch reichlich Potenzial zum Entfalten.

Das im Rahmen des Artikels entstandene Thema können Sie aus dem Netz herunterladen [7]. Es schöpft die verfügbaren Optionen bei Weitem nicht aus und hat eher den Status einer Machbarkeitsstudie. Viele Zeilen der themerc sind auskommentiert: Hier gilt es eigene Werte einzusetzen. 

Glossar

Xlib

Lange bevor GUI-Bibliotheken wie GTK oder Qt die Bühne betraten, war die Xlib der Allrounder zum Zeichnen grafischer Programmoberflächen. Heute setzen Entwickler in der Regel auf neuere Toolkits. Für einfache Oberflächen eignet sich die Xlib wegen der geringen Systemanforderungen allerdings hervorragend.

XBM-Datei

Die einfachste Form einer Grafikdatei. Das Format speichert nur die Angabe, ob ein Bildpunkt schwarz oder weiß ist, und dazu die Ausmaße des Bildes. Openbox nutzt XBM als Format für die Fensterknöpfe. Die Farben für Vordergrund und Hintergrund stellen Sie in der Themendatei an.

Infos

[1] Openbox: http://openbox.org

[2] Beispiel für ein Openbox-Thema: http://openbox.org/wiki/Help:Themes#Example

[3] Blackbox-Stile: http://blackboxwm.sourceforge.net/BlackboxStyles

[4] T-ish-Thema: http://art.gnome.org/download/themes/gtk2/1154/GTK2-TIshForClearlooks.tar.gz

[5] Konfigurationsprogramm Obconf: http://openbox.org/wiki/ObConf:About

[6] Themenpool: http://box-look.org/index.php?xcontentmode=7402

[7] Beispielthema aus diesem Artikel: http://mariobl.fedorapeople.org/Openbox/Linuxuser.tar.bz2

[8] Compositing-Manager für die Befehlszeile: http://freedesktop.org/wiki/Software/xapps

[9] Compositing-Manager mit grafischem Einstellungswerkzeug: http://cairo-compmgr.tuxfamily.org/

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Related content

Kommentare