Sicher wünscht sich jeder einen Desktop, in dem alle Anwendungen zueinander passen – vor allem hinsichtlich der Optik. Doch manch klassisches X-Programm – wie xcalc, xcolorsel oder xmessage – mag vielleicht mit einer guten Funktionalität und Bedienung aufwarten, aber deren Schwarz-Weiß-Optik genügt eben nicht mehr den ästhetischen Ansprüchen heutiger Desktop-User. Hier helfen die Xresources.
deskTOPia
Wie Ihr Linux-Desktop aussieht, bestimmen allein Sie. Mit deskTOPia nehmen wir Sie regelmäßig mit auf die Reise ins Land der Window-Manager und Desktop-Umgebungen, stellen Nützliches und Farbenfrohes, Hingucker und hübsches Spielzeug vor.
Wegen der unbefriedigenden Optik fristet manch richtig gutes Programm ein Schattendasein zugunsten eines – oftmals unausgereifteren – Ersatzes. Doch diese vergessenen Programme bieten ebenfalls eine Möglichkeit, um bis ins kleinste Detail mit einer individuellen Farbgebung gestaltet zu werden. Hier ist bei der Farbgebung alleine in den meisten Fällen noch nicht einmal das Ende der Fahnenstange erreicht: Rahmen, Scroll-Balken und Default-Optionen können an gleicher Stelle vorkonfiguriert werden: in den Xresources.
Es gibt viel zu tun …
Doch warum sollte man diese Konfigurationsarbeit auf sich nehmen, wo doch zu fast jedem Programm ein entsprechendes KDE- oder GNOME-Äquivalent existiert? Vielleicht mag sich der Eine oder Andere in diesem Szenario wiederfinden: Da hat man endlich das Theme für seinen Desktop gefunden, und schon taucht ein Programm auf, bei dem die gesetzte Farbkombination schlicht die Funktion beeinträchtigt. Was nützt einem ein gmessage+, das wie in Abbildung 1 aussieht? Und daran kann man bei den “modernen” Toolkits leider nichts mehr ändern – die Anwendung kann in dieser Hinsicht nicht mehr individuell konfiguriert werden. Viel flexibler zeigen sich hier jene Programme, die ohne die Grafikbibliotheken Qt (KDE) oder GTK+ (GNOME) auskommen – meist werten diese die in X (der grafischen Oberfläche selbst) implementierten Resourcen aus. Und auf diese hat man leicht Einfluss, so z. B. über die User-eigene Datei ~/.Xresources. Existiert diese Datei auf dem eigenen System nicht, so kann jeder User sich selbst eine solche anlegen.

Abbildung 1: Zeit für ein neues Theme wegen gmessage+?

Abbildung 2: xmessage, wie es keiner mehr mag

Abbildung 3: Leicht überarbeitete Optik bei xmessage
Funktionsweise
Das Prinzip ist eigentlich sehr simpel: Optionen, die sonst beim Programmstart mitgegeben werden können, kann der User in einer Datei voreinstellen. Manche Programme schauen in dieser Datei selbst nach, und manche befragen hierzu einfach den X-Server (der über das Tool xrdb die Datei ~/.Xresources beim Start komplett einliest). Letzteres ist der üblichere Weg. Und über diese Xresources kann auch bei einigen Programmen allerhand konfiguriert werden, was sonst über Kommandozeilenparameter gar nicht zur Verfügung steht – so z. B. Rahmendicken und Farben, Schriftarten und Größen, Texte, Scroll-Balken usw.
Prinzipiell lassen sich mindestens jene Programme anpassen, die auf das X-Toolkit zurückgreifen – doch zweifelsfrei eine Unterstützung feststellen kann man praktisch nicht. Auch kann man weder GNOME- noch KDE-Programme hierüber beeinflussen (diese verwenden eigene Toolkits, die die Xresources umgehen). Bei allen anderen Anwendungen stehen die Chancen jedoch gut – selbst das Tk- und das Motif-Toolkit verwerten die Vorgaben der Xresources.
Womit auch schon gesagt ist, dass das Basteln einer ~/.Xresources mit allerhand Tüfteln verbunden ist – hat man nicht passende Settings als Anhaltspunkt parat, erwartet einen oftmals eine zeitaufwendige Suche.
Aufbau
Am besten lässt sich der Aufbau der ~/.Xresources über ein einfaches Beispiel verdeutlichen:
xterm*background: black
Zunächst wird der Programname genannt, danach ein Resourcenname – getrennt entweder durch einen Asterisk (“*”) oder Punkt. Ein Asterisk ist ein sogenannter Wildcard bzw. Joker: Somit wären in diesem Beispiel alle Hintergrund-Resourcen des XTerms auf black gesetzt (oft stehen mehrere Hintergrundfelder zur Wahl). Will man eine spezielle Hintergrundfarbe abändern, so empfiehlt sich eine konkretere Benennung, getrennt durch einen Punkt:
xterm*scrollbar.background: grey65
Schlaue Leute kommen nun sicher auf die Idee, alle Hinter- und Vordergrundfarben auf einmal per Wildcard zu setzen:
*background: #102050 *foreground: lightyellow
Doch damit sollte man vorsichtig sein – zu leicht kann es passieren, dass eine Programmausgabe nicht mehr lesbar ist: Denn wer weiß schon, was sich der Programmautor selbst für Vorgaben in seinem Programmcode ausgedacht hat? Greift dann *foreground an irgendeiner Stelle nicht, so wäre eine schwarze Schrift auf dunkelblauem Hintergrund nur schwer zu entziffern.
xrdb
Damit Änderungen an den Xresources auch während einer laufenden X-Session Wirkung zeigen (also ohne Neustart des X-Servers), muss die Ressourcen-Datei über das Tool xrdb eingelesen werden. Die Syntax lautet xrdb -option Datei. Als Optionen sind vorrangig -merge und -load interessant: Während -merge bisherige Settings bestehen lässt und jene der einzulesenden Datei lediglich hinzufügt, löscht ein -load alle zuvor eingegebenen Werte und setzt die aufgerufene Datei als alleiniges Ressourcen-File.
Zeigt ein xrdb -load .Xresources keine Wirkung, so hilft in diesem Fall sicher ein symbolischer Link namens ~/.Xdefaults auf ~/.Xresources:
ln -s .Xresources .Xdefaults
Eigentlich sollte die datei ~/.Xresources immer ausgewertet werden – eigene Experimente jedoch zeigten, dass manche Konfiguration nur das etwas ältere Modell der Xdefaults unterstützt. Da die Syntax jedoch identisch ist, stehen mit diesem Symlink fortan beide Versionen zur Verfügung.
Beispiel Navigator
Die Möglichkeiten der Xresourcen lassen sich eindrucksvoll am Netscape Navigator 4.7 demonstrieren. Angenommen, der Shop-Button wird nicht benötigt. Kein Problem – fügen Sie den ~/.Xresources eine einzige Zeile hinzu, und schon ist er weg:
Netscape*toolBar*myshopping.isEnabled: False
Wer nun wissen möchte, wie die übrigen Buttons benannt sind, der versuche sich einfach mal an dieser Liste:
Netscape*toolBar*destinations.isEnabled: False Netscape*toolBar*print.isEnabled: False Netscape*toolBar*search.isEnabled: False Netscape*toolBar*viewSecurity.isEnabled: False
Schlank ist trend, so auch beim Scrollbar. Wer es lieber etwas üppiger mag, wird ebenfalls in den Xresources fündig. Zwar könnte man hierfür auf die Navigator-eigenen Ressourcen zurückgreifen, doch ausbaufähiger (da per Wildcard auch auf andere Applikationen ausdehnbar) ist der Weg über das verwendete Toolkit (hier Motif) und dessen Ressource XmScrollbar:
Netscape*XmScrollBar.width: 19
Wer seinen Navigator gerne mal versehentlich verlässt, begrüßt es sicherlich, wenn dieser vor seinem Abschied nach der Richtigkeit dieses Vorhabens fragt:
Netscape*confirmExit: true
Und wer mit der Startgröße des Navigator-Fensters kämpft, will diese einfach fest vorgeben:
Netscape.Navigator.geometry: 820x600 Netscape*dontSaveGeometryPrefs: true Netscape*ignoreGeometryPrefs: true
Dann wäre da noch der Ärger mit den Schriften, die die meisten als zu klein empfinden. Der Navigator geht von 75 dpi aus – ideal bei niedrigen Bildschirmauflösungen. Setzt man diesen Wert auf 100, so ergibt sich auf den meisten heutigen (großen) Bildschirmen eine akzeptable Darstellung. Interessant ist in diesem Zusammenhang auch, dass man die Abstufung der Schriftgrößen zueinander ändern kann – per Default wird pro Schriftvergrößerung um 20% gezoomt. Ebenso kann die Standardschrift des Navigators selbst (also nicht die der Web-Seiten-Darstellung) geändert werden:
Netscape*documentFonts.xResolution*iso-8859-1: 100 Netscape*documentFonts.yResolution*iso-8859-1: 100 Netscape*documentFonts.sizeIncrement: 20 Netscape*fontList: -*-helvetica narrow-medium-r-condensed-*-*-160-*-*-p-*-*
Eine richtig interessante Spielwiese ist die Farbgebung. Da eine genaue Erklärung hier jedoch den Rahmen sprengen würde (und abtippen auch kaum eine Freude ist), befinden sich einige Settings hierzu auf der Heft-CD (LinuxUser/desktopia/navigator.txt; neben weiteren Settings zu anderen Programmen im gleichen Verzeichnis). Kurz und bündig zum Experimentieren:
Netscape*background: #b0b0b0 Netscape*foreground: #fffafa Netscape*dashBoard*background: #708090 Netscape*dashBoard*foreground: #ffffe4 Netscape*menuBar*background: #708090 Netscape*menuBar*foreground: #ffffe4 Netscape*menuBar*popup_pulldown*background: #9999aa Netscape*toolBox*background: #89939e Netscape*toolBox*toolBar*background: #89939e Netscape*toolBox*toolBar*foreground: #ffffed Netscape*toolBox*urlBarItem*background: #a2a7ac Netscape*toolBox*urlBarItem*foreground: #fffff6 Netscape*toolBox*personalToolbarItem*background: #bbbbbb Netscape*toolBox*personalToolbarItem*foreground: #ffffff
Das Ergebnis unserer Konfigurationsarbeit kann sich sehen lassen, wie Abbildung 5 beweist. Eine nahezu vollständige Sammlung der Navigator-X-Ressourcen findet sich in der Datei Netscape.ad, die mit jedem Navigator ausgeliefert wird (zu finden in dessen Installationsverzeichnis).
Weitere Informationen
Wenn man erst einmal merkt, was alles mit diesen Xresources machbar ist, stellt man sich bald die Frage: Gibt es irgendwo eine vollständige Liste der Ressourcen? Nein, leider nicht. Dies ist auch gar nicht machbar, denn oftmals gibt es etliche Möglichkeiten, zum Ziel zu gelangen. Aber es gibt Anwender, die ihre gefundenen Settings anderen zugänglich machen – so z. B. unter http://x.themes.org/viewresources.phtml?type=xdefault. Ebenfalls einen Blick wert sind die Seiten von Marcus Jodorf, zu finden unter http://www.bogomips.de/content/xresources.html.
Sehr genau kennt auch der jeweilige Programmautor die Ressourcen-Namen, mit denen seine Software ansprechbar ist. Hier hilft also ein Blick in dessen Manual-Seite, die Manpage. Ebenfalls beschäftigt sich der Distributor mit solchen Dingen – in der Regel findet sich eine kleine Sammlung der Xresources im Verzeichnis /etc/X11/Xresources.
Der “Spurensuche” dient das Tool editres, einem “dynamic resource editor”. Dieser ist in der X-Basisinstallation enthalten, und kann selbstverständlich selber auch über die Xresources konfiguriert werden. Seine Anwendung ist leider etwas kryptisch, weshalb er wohl nur Verzweiflungstätern als allerletzte Zufluchtsstätte dient. Aber ein gesuchter Ressourcen-Name kann mit diesem Tool meist zweifelsfrei ermittelt werden.
Glossar
-
Toolkit
-
Dient dazu, dass nicht jeder Programmautor jeden Button neu programmieren muss – es ist eine Sammlung gängiger Elemente, auf die mehrere Programme zurückgreifen können.
-
symbolischer Link
-
Ein Verzeichniseintrag, hinter dem sich nur ein Querverweis auf eine weitere Datei an anderer Stelle im Dateisystem verbirgt. Der Vorteil ist, dass eine Datei an mehreren Stellen der Verzeichnishierarchie (und mit unterschiedlichen Namen) aufgerufen werden kann, ohne tatsächlich mehrfach vorhanden zu sein.







