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. Nach drei Ausflügen in die Welt der GNOME wird es nun Zeit für einen Blick über den Tellerrand – schließlich hat Linux mehr zu bieten als den Anzug von der Stange.
Alles begann mit einer Reise zur Web-Seite http://www.42.org/~sec/wmx/index.de.html – dort gibt es einen komfortablen Clone des einfachen Window-Managers wm2, genannt wmx. Da für diesen gerade mal 73 KB von ftp://ftp.42.org/pub/wmx/ auf den heimischen Rechner übertragen werden müssen, kann ohne große Unkosten ein Blick auf das Programm geworfen werden – und so bekam wmx seine Chance.
Contact
Ups – nur als Sourcen? Ja. Und das hat auch seinen Grund: wmx ist nur über Änderungen im Sourcecode konfigurierbar, die vor dem Kompilieren stattfinden müssen. Bevorzugter Platz für Sourcecode findet sich auf der Festplatte im Verzeichnis /usr/src/, und daher entpacken wir das Archiv auch dort:
[jo@planet ~]$ su password: .... [root@planet ~]# mv wmx-6pre1.tar.gz /usr/src/ [root@planet ~]# cd /usr/src/ [root@planet src]# tar xzf wmx-6pre1.tar.gz [root@planet src]# cd wmx-6pre1 [root@planet wmx-6pre1]# _
(Um in dieses Verzeichnis schreiben zu können, sind Administrator-Rechte notwendig, daher werden wir mit dem ersten Befehl zu root.) Die erste Zeile verschiebt das Archiv (mv, siehe Linux-Magazin 04/2000, S. 88-90), worauf hin wir dem Archiv ins Zielverzeichnis folgen wollen (cd: Change Directory). Dort angekommen entpacken wir das Bündel mit dem Dienstprogramm – ein neues Verzeichnis wird angelegt, das den Sourcecode enthält. Ein README in diesem Verzeichnis schadet nicht, zumal sich beim Erscheinen des Linux-Magazins bereits eine aktuellere Programmversion auf dem Server befinden könnte.
The Making of
Um überhaupt ein im Sourcecode vorliegendes Programm kompilieren zu können, bedarf es einiger Tools auf Ihrem Rechner – diese sind in jeder Linux-Distribution enthalten, wir haben sie im Textkasten Paketanforderungen zusammengestellt. Neuere Versionen des wmx stellen alle für ein erfolgreiches Kompilieren benötigten Informationen nach dem einfachen Aufruf von ./configure zusammen – diese werden vom anschließend aufgerufenen Tool make benötigt, das den Sourcecode in ein ausführbares Programm übersetzt. Damit wäre wmx fertig kompiliert – fehlt noch die Installation selber, die über den Befehl make install erledigt wird: Dabei werden die wmx-Dateien an die richtigen Stellen kopiert. Um nachfolgende Experimente zu ermöglichen, folgt nun noch das Aufräumen mit dem Kommando make clean. Noch einmal alle Befehle im Überblick:
[root@planet wmx-6pre1]# ./configure [root@planet wmx-6pre1]# make [root@planet wmx-6pre1]# make install [root@planet wmx-6pre1]# make clean [root@planet wmx-6pre1]# exit [jo@planet ~]$ _
(Mit dem letzten exit-Befehl geben wir die Administratorrechte wieder auf.)
Paketanforderungen
Neben dem Tool make (in der Regel in einem gleichnamigen Paket) und einem Compiler für C++ (meistens gcc, bei älteren Distributionen auch egcs) werden die X Libraries benötigt – meist bezeichnet als Paket XFree86-devel (bei SuSE: xdevel; bei Debian: xlib6g-dev). Wer keine absolute Minimalinstallation verwendet, findet diese Pakete in der Regel bereits auf dem Computer vor. Weiterhin wird eine Unterstützung für XPM-Grafiken benötigt. Diese muss bei einer Standard-Workstation oftmals nachinstalliert werden und findet sich in dem Paket xpm-devel oder xpm4g-dev.
Eventuell werden nach der Installation dieser Pakete die enthaltenen Dateien beim Kompilieren immer noch nicht gefunden – dann müssen Sie den Pfad zu den neuen Bibliotheken in die Konfigurationsdatei /etc/ld.so.conf aufnehmen und ldconfig als Administrator root ausführen – beides sollte aber die Paketverwaltung Ihrer Distribution automatisch erledigen. (Siehe man-page zu ldconfig)
Vor dem nächsten Lauf von ./configure sollte noch die Datei config.cache mittels rm gelöscht werden.
X-Start mit wmx
X kann mit wmx von der Kommandozeile über den Befehl startx wmx gestartet werden – allerdings funktioniert das nicht mit allen Distributionen. Es gibt eine verwirrende Vielfalt von Möglichkeiten, mit denen sich ein neuer Window Manager einstellen lässt. Eine Variante ist, die Umgebungsvariable $WINDOWMANAGER zu setzen: Ergänzen Sie dazu die Zeile
WINDOWMANAGER=wmx; export WINDOWMANAGER
in der Datei ~/.bash_profile (oder in der ~/.bashrc, falls die andere Datei nicht existiert). Diese Datei wird von der bash (der Linux-Standard-Shell) beim Einloggen durchlaufen – vom Erfolg Ihrer Aktion können Sie sich mit
echo $WINDOWMANAGER
überzeugen, nachdem Sie sich ab- und wieder angemeldet haben. Sollte auch dies nicht zum Erfolg führen, erstellen Sie einfach von Hand eine kleine Skriptdatei mit folgendem Inhalt:
# Startskript fuer wmx X & export DISPLAY=:0.0 wmx
Nennen Sie diese Datei beispielsweise startwmx und führen Sie sie nach der Anmeldung im Textmodus durch Eingabe von bash startwmx aus – dabei darf nicht bereits ein grafischer Anmeldebildschirm vorhanden sein!

Mosaic« im Standard-Gewand des
Follow the white rabbit
Tja, wmx ist nun zwar gestartet, aber nichts davon ist zu sehen. Die Maus fest im Griff verbirgt sich das erste xterm hinter einem mutigen Zeigefingerdruck, und die weitere Bedienung geht ebenso leicht von der Hand:
- Startmenü aufrufen (falls vorhanden; siehe unten): mittlere Maustaste.
- Fenster schließen: Fenster-Button gedrückt halten, bis ein “X” erscheint, und dann loslassen; alternativ [Alt]-[Backspace].
- Fenster maximieren: [Alt]-[PageUp]; zurück auf Ursprungsgröße mit [Alt]-[PageDown].
- Taskliste: Ist über die linke Maustaste zu erreichen, ebenso erscheint in diesem Menü der Standard-Eintrag New (hinter dem sich der Start eines xterms verbirgt). Die Liste der sichtbaren (also nicht minimierten) Fenster kann auch über die Tastenkombination [Alt]-[Tab] durchgeblättert werden.
- Fenster minimieren: Kurzer linker Mausklick auf den Fensterbutton oder [Alt]-[Return]. Wiederherstellen durch Auswahl aus der Taskliste.
- Umschalten zwischen mehreren Desktops: Einfach- oder Mehrfachklick mit der mittleren Maustaste in die rechte obere Desktop-Ecke. Wer nicht zur Maus greifen mag, verwendet [Alt]-[Links] und [Alt]-[Rechts].
- wmx beenden: Klicken Sie mit der linken Maustaste auf den unteren Desktop-Rand, dann enthält die Liste als letzten Eintrag Exit-wmx.
Lost in Space
Jeder Benutzer kann sich ein eigenes Startmenü im Verzeichnis ~/.wmx/ aufbauen; dazu ist dieses Unterverzeichnis aber zunächst mit dem Befehl mkdir ~/.wmx anzulegen. Am einfachsten erzeugen Sie neue Menüeinträge über symbolische Links auf die gewünschten Programme (Beispiel: ln -s /usr/X11R6/bin/xkill ~/.wmx/xkill). Alternativ erstellen Sie ein kleines ausführbares Skript in diesem Verzeichnis. Jede ausführbare Datei in diesem Verzeichnis wird im Startmenü aufgelistet. Die Einrichtung von Untermenüs ist leider nicht möglich – von daher ist für ein aufwändigeres Startmenü zusätzliche Software wie z. B. das GNOME-Panel (siehe Linux-Magazin 02/2000 und 04/2000) erforderlich.
A life less ordinary
Für die individuelle Konfiguration müssen Sie die Datei Config.h in Ihrem Lieblingseditor bearbeiten und anschließend die wmx-Sourcen neu kompilieren. Fröhliches Lesen und Experimentieren in der gut dokumentierten Datei ist angesagt, denn alles kann an dieser Stelle unmöglich besprochen werden. Dennoch ein paar Hinweise und Kniffe zu dieser Datei:
Ein Terminal auf Abruf
#define CONFIG_NEW_WINDOW_LABEL "New" #define CONFIG_NEW_WINDOW_COMMAND "xterm" #define CONFIG_NEW_WINDOW_COMMAND_OPTIONS 0
Man kann den Standard-Eintrag im Menü unterbinden – das ist aber nicht sinnvoll, denn hiermit ist es im Problemfall immerhin möglich, an ein Terminal zu kommen. Ich selbst verwende ein transparentes aterm (Aufruf mit der Option “-tr”) lieber als ein xterm – nur kann man dem COMMAND-Eintrag keinen Parameter direkt mitgeben, weshalb dieser Eintrag z. B. so aussehen könnte:
#define CONFIG_NEW_WINDOW_LABEL "Neues ATerm" #define CONFIG_NEW_WINDOW_COMMAND "aterm" #define CONFIG_NEW_WINDOW_COMMAND_OPTIONS "-tr",0
Raise & Focus
#define CONFIG_CLICK_TO_FOCUS (dConfig.clickFocus()) #define CONFIG_RAISE_ON_FOCUS (dConfig.raiseFocus()) #define CONFIG_AUTO_RAISE (dConfig.autoRaiseFocus())
Bei dieser Voreinstellung wird ein Fenster bereits durch das Überfahren mit der Maus aktiv, bleibt aber dennoch im Hintergrund (Focus-Verhalten). Erst durch einen Mausklick kommt es in den Vordergrund (Raise). Wer lieber das aktive Fenster automatisch im Fordergrund haben möchte, gibt hier folgendes an:
#define CONFIG_CLICK_TO_FOCUS (dConfig.clickFocus()) #define CONFIG_RAISE_ON_FOCUS (dConfig.raiseFocus()) #define CONFIG_AUTO_RAISE True
Und wer die Maus gerne zur Seite schiebt und dabei versehentlich unerwünschte Fenster aktiviert, der will vermutlich lieber das traditionelle “Klick-To-Focus”:
#define CONFIG_CLICK_TO_FOCUS True #define CONFIG_RAISE_ON_FOCUS True #define CONFIG_AUTO_RAISE (dConfig.autoRaiseFocus())
Weg damit …
#define CONFIG_DESTROY_WINDOW_DELAY 1000
Um ein Fenster zu schließen und nicht nur zu minimieren hält man den Fensterbutton so lange gedrückt, bis ein “X” erscheint – doch die Zeitvorgabe ist wohl nur für die ersten Gehversuche sinnvoll. Ersetzt man die Vorgabe (1000, eine Sekunde) durch 500, wird es für flüssiges Arbeiten akzeptabel.
… und dageblieben
#define CONFIG_BUMP_DISTANCE 16
Mittels dieser Einstellung bleibt ein Fenster beim Verschieben am Bildschirmrand für 16 Pixel der Mausbewegung stehen, bevor es den Desktop verläßt. Wer eine hohe Auflösung verwendet, braucht nun entweder viel Fingerspitzengefühl oder einen Wert um 40.
Black & White
#define CONFIG_TAB_FOREGROUND "black"
Wem diese Farbnamen zu ungenau sind, der kann auf die in Web-Seiten üblichen 8-Bit-Hexadezimalangaben zurückgreifen:
#define CONFIG_TAB_FOREGROUND "#e6ba94"
Eine wie keine
Die gelbliche Standard-Pixmap für Fensterrahmen trifft sicher nicht jedermanns Geschmack – daher eine kurze Anleitung zur eigenen Pixmap. Am einfachsten geschieht dies, indem Sie eine beliebige und farblich ansprechende Grafik in dem Grafikprogramm The GIMP bearbeiten (vgl. Abb. 2). Achten Sie darauf, am Ende keine allzu große Grafik zu erzeugen, denn dies verlangsamt wmx deutlich.
Die hier verwendete GIF-Datei musste zur Verarbeitung erste einmal unter Image/RGB von seiner festen Farbpalette befreit werden – und da Schriften weniger gut als Endlos-Pixmaps geeignet sind, wurde es etwas mit Image/Scale (quadratisch) und Filters/Distorts/Waves nachbearbeitet. Doch damit nicht genug: schließlich ist es noch nicht als Kachel zu gebrauchen. Das geschieht mit Filters/Map/Make Seamless, und schon ist es eine Endlos-Kachel.
Sollten Sie diese Grafik nun als XPM-Datei abspeichern und einen Kompilierversuch wagen, so wird dieser fehlschlagen, denn wmx benötigt in der Datei background.xpm den Eintrag “static char *background[]”. Dies erreichen Sie am einfachsten, indem Sie die Datei in einem Editor öffnen – XPMs sind einfache Textdateien und können dort bearbeitet werden. Vermutlich sehen die ersten beiden Zeilen so aus:
/* XPM */
static char * background_xpm[] = {
Ändern Sie dies einfach ab in
/* XPM */
static char *background[] = {
und fertig ist die neue Grafik. Sollte sich der Editor weigern, die Grafik zu laden, so hilft ein vorübergehendes Umbennen – z. B. in background.xpm.txt.
Manche mögen’s heiß
Zugegeben – warum sollte man sich bei all den hier beschriebenen Hürden mit einem solchen Window Manager plagen, wenn es Konkurrenzprodukte wie den in im Linux-Magazin 03/2000 vorgestellten Sawmill gibt? Sawmill ist ebenso klein und schnell, über GUI konfigurierbar und wartet mit beliebiger Optik und Ausstattung auf. wmx hat dem nicht viel entgegen zu setzen. Dennoch verwende ich hier seit längerem wmx als Standard-Window-Manager. Warum? Weil er einfach Spaß macht und erfrischend anders ist. Und wie man aus einem solch einfachen Window Manager einen flotten Desktop zaubert – vielleicht sogar mit GNOME oder KDE -, beschäftigt uns in der nächsten Ausgabe.
Glossar
-
Clone
-
So wie in der Biologie ein Clone (dt.: Klon) eine (genetisch) identische Kopie eines Lebewesens ist, ist in der Welt der Computerprogramme der Clone ein Programm, das einem anderen Programm nachempfunden wurde und mindestens dessen volle Funktionalität bietet.
-
tar
-
tar, der Tape Archiver, wurde früher zum Sichern von Daten auf ein Magnetband verwendet – diese Aufgabe übernimmt er zwar auch heute noch, wird aber viel häufiger zum Bearbeiten von Dateiarchiven verwendet: komprimierte tar-Archive haben unter Linux die gleiche Funktion wie zip-Archive in der Windows-Welt.
-
Sourcen
-
Der Quelltext eines Programmes, also der rohe Text in einer Programmiersprache. Meist kann dieser nicht direkt ausgeführt werden.
-
Kompilieren
-
Übersetzen des Sourcecodes in einen für den Computer verständlichen Code (die Maschinensprache des Prozessors).
-
less
-
Mit diesem Dienstprogramm können Textdateien komfortabel gelesen werden. Das Programm kann mit [q] beendet werden.
-
symbolische Links
-
Ein symbolischer Link ist ein Verzeichniseintrag, hinter dem sich keine Datei verbirgt – stattdessen findet sich hier nur ein Querverweis auf eine weitere Datei, die an anderer Stelle im Dateisystem liegt. Die Verwendung solcher Links hat den Vorteil, dass eine Datei an mehreren Stellen in der Verzeichnishierarchie (und mit unterschiedlichen Namen) angesprochen werden kann, ohne tatsächlich mehrmals vorhanden zu sein und somit die Festplatte zu füllen.
-
Aktives Fenster, Fokus
-
Bei Verwendung einer grafischen Oberfläche gibt es immer (höchstens) ein ausgezeichnetes Fenster, das auf alle Tastatureingaben reagiert: dieses Fenster heißt “aktives Fenster”; man sagt auch, dass es “den Fokus hat”. Windowmanager bieten unterschiedliche Varianten, wie das aktive Fenster festgelegt wird – so kann es notwendig sein, ein Fenster anzuklicken, um es zu aktivieren (das ist unter anderem die Vorgehensweise bei den Windowmanagern, die bei MS Windows eingesetzt werden), es kann aber auch ausreichen, den Mauszeiger in das Fenster zu bewegen.






