CHIP-Spezial: X Window System richtig einrichten
Auf's richtige Outfit kommt es an
| |
Auch das Unix-Betriebssystem Linux besitzt eine grafische
Oberfläche. Das Look-and-Feel ist vom verwendeten Fenstermanager
abhängig. Die Konfiguration dessen wird anhand des am weitesten
verbreiteten FVWM in der Version 2 erläutert.
|
|
1. Erster Schritt: fvwm2 besorgen |
Abb. 1: Ein voller Unix-Desktop mit dem X Window System
Linux-Distributionen werden normalerweise mit einer grafischen Oberfläche, dem sogenannten X Window System, ausgeliefert. Diese wurde schon vor Jahren vom X-Consortium am Massachusettes Institute of Technology (MIT) für den Unix-Sektor entwickelt. Die Funktionsweise sehen Sie im Tech-Talk "So funktioniert das X Window System").
Abb. 2: Ein Fenster im twm-Look
Das Aussehen bestimmt normalerweise die Akzeptanz einer Oberfläche. So gesehen ist X11, wie es auch genannt wird, ziemlich triste, denn mit dem, was einem der X-Server bietet, läßt sich kaum arbeiten. Für das Aussehen von grafischen Elementen ist unter X11 ausschließlich einer der zahlreichen Fenstermanager (siehe Kasten "Fenstermanager") zuständig.
Abb. 3: Ein Fenster im vtwm-Look
| Fenstermanager | ||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||
Abb. 4: Ein Fenster im ctwm-Look
Der Fenstermanager bestimmt das Aussehen von Fenstern, Titelbalken, Piktogrammen von Programmen (er weist ihnen welche zu), anklickbaren Elementen auf Fensterrahmen, Menüs, Reaktionen auf Tastendrücke und Mausbewegungen. Titelleisten können auch unterdrückt werden, was z.B. bei Kontrollelementen sinnvoll ist.
Abb. 5: Ein Fenster im fvwm2-Look
Da das komplette Look & Feel vom verwendeten Fenstermanager abhängig ist, könnte man sich also auch einen vorstellen, der z.B. wie Windows95 aussieht. In der Tat kann man das und Hector Peraza hat genau dieses getan. Wer sich den fvwm95-2 installiert, wird zuerst denken, er hätte das falsche Betriebssystem gebootet. Diese Weiterentwicklung des im Folgenden beschriebenen fvwm2 läßt die X-Oberfläche genauso aussehen wie die des Zöglings aus dem Hause Microsoft.
Abb. 6: Ein Fenster im fvwm95-Look
Erster Schritt: fvwm2 besorgen
Auch dieser Artikel setzt die in der CHIP 11/96 vorgestellte Linux-Distribution Xlinux voraus. Da dort jedoch lediglich der fvwm in der Version 1.x installiert ist, müssen Sie sich das Paket fvwm2bin.tgz von ... besorgen. Dieses packen Sie nun mit dem Befehl tar -xvfz /tmp/fvwm2bin.tgz im Hauptverzeichnis "/" aus. Anschließend müssen Sie den fvwm2 als kritische Applikation, also als letztes Programm in der Datei ~/.xinitrc (siehe CHIP 12/96) eintragen.
Abb. 7: Ein Fenster im Afterstep-Look
Fortan ist der fvwm2 der von Ihnen verwendete Fenstermanager. Dieser erscheint im Gegensatz zum twm, der in der X11-Distribution enthalten ist, in einem 3D-Look. Die benutzte Konfiguration liegt in /usr/X11R6/lib/X11/fvwm2/system.fvwm2rc. Ein Teil dieser wird auf den folgenden Seiten beschrieben. Alles zu erläutern würde den Rahmen sprengen, daher sei hier auf die recht ausführlichen Manualpages verwiesen.
Wenn Sie etwas an der Konfiguration ändern möchten, kopieren sie diese Datei in ihr Heimatverzeichnis und benennen Sie sie in .fvwm2rc um (Achtung, den Punkt nicht vergessen!).
| FVWM2 Module | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Der fvwm2 besteht nicht nur aus dem Fenstermanager selbst und einer Bibliothek an Bitmaps, sondern auch aus einer Reihe von Modulen, die im Verzeichnis /usr/X11R6/lib/X11/fvwm2/installiert sind. Nebenbei bemerkt: Der eingangs erwähnte fvwm95 besteht aus dem fvwm2, einer ausgetüftelten Konfiguration und zwei zusätzlichen Modulen.
Module sind spezielle Programme, die vom fvwm aufgerufen werden und spezielle Aufgaben übernehmen (siehe Kasten "FVWM2 Module"). Sie laufen als eigenständige Prozesse und können somit während einer Sitzung auch beendet werden ohne daß der Fenstermanager dazu neu gestartet werden muß. Sie werden wie fvwm-interne Funktionen behandelt und haben ihre Konfiguration ebenfalls in der Datei ~/.fvwm2rc.
Die Zeilen in dieser Datei lassen sich in vier Kategorien einteilen. Zeilen, die mit einem Doppelkreuz ('#') anfangen, sind Kommentare und werden ignoriert. Zeilen, die mit einem Pluszeichen ('+') anfangen, enthalten zusätzliche Definitionen für Menüs oder Funktionen. Beginnt die Zeile mit einem Stern ('*'), dann behandelt sie die Konfiguration eines Moduls. Alle anderen Zeilen beinhalten Befehle, die das Aussehen oder Verhalten des fvwm2 manipulieren.
Eine Spezialität des fvwm2 ist die Behandlung von virtuellen Desktops. Genauso wie andere virtuelle Fenstermanager kann auch dieser Desktops verwalten, die größer sind als der tatsächliche Bildschirm. Angezeigt wird dabei nur ein Ausschnitt, quasi ein Guckloch. Wird die Maus über einen Rand bewegt, dann wird der Ausschnitt ebenfalls bewegt.
Folgende Befehlssequenz weist den fvwm2 an, daß jeder Desktop zwei Bildschirme in horizontaler und einen in vertikaler Richtung umfaßt, also doppelt so groß ist. Wenn der Mauscurser mehr als 100 Millisekunden über den Rand bewegt wird, dann wird der der Ausschnitt um 50% verschoben. Setzt man die Werte in den letzten beiden Zeilen herunter so kann man auch einen fließenden Übergang erhalten.
DeskTopSize 2x1 EdgeScroll 50 50 EdgeResistance 100 100
Der fvwm2 verwaltet zwei Funktionen, InitFunction und RestartFunction, die beim Programmstart (=Init) bzw. beim Restart (über den Menüpunkt) ausgeführt werden. Von diesen werden normalerweise die Module aufgerufen oder über spezielle Menüpunkte.
Das folgende Fragment bewirkt, daß beim Start des fvwm2 die Hintergrundfarbe auf LightSlateBlue gesetzt wird, anschließend das Modul FvwmBanner aufgerufen wird, welches kurz das FVWM2-Logo anzeigt, und danach den FvwmPager startet. Die Optionen besagen, daß vier Desktops initialisiert werden sollen. Der FvwmPager ist das Modul, das eine Übersicht über die virtuellen und verschiedenen Desktops erstellt. Mit der Maus kann sowohl der aktuelle Ausschnitt als auch der Desktop gewechselt werden.
AddToFunc InitFunction + "I" Exec xsetroot -solid LightSlateBlue + "I" Module FvwmBanner + "I" Module FvwmPager 0 3
Abb. 8: Der Pager vom fvwm2
Die letzte Zeile muß ebenfalls in die Funktion RestartFunction aufgenommen werden, damit das Modul bei einem Restart wieder geladen wird.
Mit dem Befehl
Style "FvwmPager" Sticky,NoHandles
wird definiert, daß dieses Modul auf allen Desktops sichtbar ist (Sticky) und daß es keine Ecken zur Änderung der Größe besitzt (NoHandles). Auf die gleiche Art und Weise können Sie auch das Aussehen von anderen Programmen beeinflussen, wie es in der Systemkonfiguration auch gemacht wurde.
Der fvwm2 erzeugt dekorative Rahmen um die meisten Fenster und erweitert sie um eine Titelleiste, die neben einem kurzen Text bis zu 10 frei definierbare Tasten enthält. Die erste Taste befindet sich links außen, die zweite rechts außen, die dritte wieder links, jedoch eine Stelle weiter innen, die vierte wieder rechts und ebenfalls eine Stelle weiter innen und so fort. Der Rahmen beinhaltet normalerweise abgesetzte Ecken (Handles), die die Größe des Fensters verändern, wenn man mit dem Mauszeiger an ihnen zieht.
Die Tasten in der Titelleiste können mit unterschiedlichen Aktionen verbunden werden. Das folgende Fragment bestimmt die Reaktion auf Drücken der linken Maustaste. Wird auf die erste Taste gedrückt, erhält man das Menü "Window-Ops", die rechteste Taste bewirkt ein Schließen des Fensters und die zweite Taste von links schließlich startet das Modul FvwmIdent und zeigt verschiedene Informationen über das Fenster an.
Mouse 0 1 A Popup Window-Ops Mouse 0 2 A Close Mouse 0 3 A FvwmIdent Mouse 0 4 A Maximize 0 100 Mouse 0 6 A Iconify
Als nächstes richten wir die Farben ein. Voreingestellt sind blaue Töne. Um jedoch zu demonstrieren, wie und wo diese definiert werden, wird die Oberfläche konsequent in Violettönen gehalten. Wem diese nicht zusagen, der hat die große Chance, in die Tiefen der fvwm2-Konfiguration einzusteigen. Mögliche Farben sind in der Datei /usr/X11/lib/X11/rgb.txt definiert. Als Hintergrund für nicht selektierte Fenster wird DarkOrchid und schwarze Schrift verwendet, für selektierte Fenster MediumOrchid und weiße Schrift.
HilightColor white MediumOrchid Style "*" Color black/DarkOrchid
Der Befehl Style benötigt als ersten Parameter eine Applikation, Wildcards sind erlaubt (wie hier). Damit kann das Aussehen von Fenstern generell bzw. im Einzelnen bestimmt werden. Nachfolgende Definitionen können vorherige überschreiben, der letzte passende Eintrag ist entscheidend. Dieser Auszug legt fest, daß normale, nicht selektierte, Fenster eine Titelleiste in der Farbe DarkOrchid besitzen und daß der Titel mit schwarzer Schrift geschrieben wird.
Doch welche Schrift wird verwendet? Und wie ist der Text ausgerichtet? Dafür sind folgende Befehle vorgesehen. Wir wollen den Text zentriert in der Titelleiste ausrichten, diese soll dabei genauso "hervorgehoben" sein wie die anderen Elemente auch. Als Schrift soll nicht die voreingestellte, sondern Times (times) verwendet werden, und zwar kursiv (i) und fett (bold). Sie soll 18 Punkt groß sein und wenn die Applikation zu einem Icon verkleinert wurde nur noch 14 Punkt. Die folgenden drei Zeilen erledigen dieses:
TitleStyle Centered Flat WindowFont -*-times-bold-i-*-*-*-180-*-*-*-*-*-* IconFont -*-times-bold-i-*-*-*-140-*-*-*-*-*-*
Da der fvwm2 nicht so gut im Raten ist, weisen wir noch einigen oft benutzten Programmen entsprechende Icons zu, die auf dem Desktop abgelegt werden. Die erste Zeile besagt, daß das Piktogramm unknown1.xpm verwendet werden soll, wenn der Fenstermanager zu dem entsprechenden Programm kein Icon finden kann. (Eigentlich besagt die Zeile, das dieses Piktogramm für jedes Programm benutzt werden soll, was jedoch in den folgenden Zeilen für einige Applikationen wieder überschrieben wird.) Der Stil NoIconTitle hat zur Folge, daß dieses Icon ohne Text angezeigt wird.
Style "*" Icon unknown1.xpm Style "xterm" Icon rterm.xpm Style "xterm" NoIconTitle Style "Mosaic" Icon xmosaic.xbm Style "Mosaic" NoIconTitle
Abb. 9: FVWM-Buttons
Menüs erleichtern das Leben
Um sich unnötige Tastendrücke zu ersparen, legt man sich oft benutzte Kommandos auf Tasten (Modul FvwmButtons), fügt sie zu Menüs zusammen und legt sich diese auf Maustasten. Wie oben erwähnt, werden neue Menüpunkte mit einem Pluszeichen angehängt. Die Syntax ist ganz einfach, nach einer Beschreibung in Hochkommas folgt der Befehl. Der Befehl Title ist ein interner Befehl. Er bewirkt, daß der Text etwas abgesetzt dargestellt wird - wie eine Überschrift. Diese Überschriften sind natürlich auch nicht selektierbar.
AddToMenu Optionen + "Desktops" Title + "Desktop" Desk 0 0 + "Work" Desk 0 1 + "Internet" Desk 0 2 + "Fun" Desk 0 3 + "XTerm%mini.xterm.xpm%" Exec xterm + "" Nop
Hier werden fünf echte Menüpunkte ergänzt. Der - ebenfalls interne - Befehl Desk weist den fvwm2 an, auf den Desktop mit entsprechender Nummer (zweites Argument zählt) zu springen. Unsere Konfiguration richtet ja vier Desktops ein. Wie wir nachher sehen werden, haben diese auch unterschiedliche Titel und Farben. Der nächste Menüpunkt teilt dem fvwm2 über den Befehl Exec mit, daß ein xterm gestartet werden soll. Die letzte Zeile fügt eine Leerzeile an (Nop = No Operation).
In der Beschreibung eines Menüpunktes kann auch ein Bitmap, eine kleine Grafik, angegeben werden. Ist sie in Prozentzeichen gehüllt, wird sie links neben dem Text angezeigt. Ist sie jedoch in Sternchen eingeschlossen, dann wird das Bildchen über dem Text positioniert.
Dieses Menü legen wir nun auf die mittlere Maustaste. Wenn diese irgendwo auf dem freien Desktop (nicht über einem Fenster) gedrückt wird, öffnet sich ein Popup mit den Menüpunkten. Bei der Gelegenheit belegen wir die rechte Maustaste gleich mit der Liste der Fenster auf dem aktuellen Desktop.
Mouse 2 R A Menu Optionen Mouse 3 R A WindowList
Abb. 10: Funktionsweise von X11
Unterschiedliche Farben für Desktops
Damit die unterschiedlichen Desktops auch organisatorisch auseinandergehalten werden können, sollen ihnen unterschiedliche Farben zugewiesen werden. Der erste Desktop hat bereits LightSlateBlue als Hintergrundfarbe. Außerdem wurde das Modul FvwmPager geladen. Dieses weisen wir nun an, die verschiedenen Desktops in unterschiedlichen Farben darzustellen und ihnen unterschiedliche Titel zu geben. Zunächst wird jedoch festgelegt, daß das entsprechende Fenster in der Ecke rechts unten erscheinen soll.
*FvwmPagerGeometry -0-0 *FvwmPagerDeskTopScale 75 *FvwmPagerLabel 0 Desktop *FvwmPagerDeskColor 0 LightSlateBlue *FvwmPagerLabel 1 Work *FvwmPagerDeskColor 1 CadetBlue *FvwmPagerLabel 2 Internet *FvwmPagerDeskColor 2 VioletRed *FvwmPagerLabel 3 Fun *FvwmPagerDeskColor 3 salmon
Der Parameter FvwmPagerDeskTopScale bedeutet, daß Desktops im FvwmPager 1/75 der eigentlichen Größe haben sollen. Wird jetzt der Desktop gewechselt, dann ändert sich die Hintergrundfarbe jedoch nicht. Dazu muß das Modul FvwmBacker in die Init- und RestartFunction (siehe oben) eingebunden werden. Mit folgender Konfiguration wird die Hintergrundfarbe bei jedem Wechsel neu gesetzt - natürlich können hier auch Bilder angegeben werden, sie lenken jedoch oft während der Arbeit ab.
*FvwmBackerDesk 0 -solid LightSlateBlue *FvwmBackerDesk 1 -solid CadetBlue *FvwmBackerDesk 2 -solid VioletRed *FvwmBackerDesk 3 -solid salmon
| So funktioniert das X Window System | |
|
Die für viele Unix-Derivate vorhandene grafische Oberfläche (GUI), das sogenannte X Window System, unterscheidet sich grundlegend von den GUIs anderer Systeme wie z.B. Windows95 und OS/2. Das X Window System wurde von Anfang an modular und netzwerkfähig konzipiert. Dadurch ist es bestens für den Einsatz in Verbindung mit einem Netzwerkbetriebssystem wie Unix geeignet. Die einzelnen Programme müssen dabei nicht unbedingt auf dem gleichen Rechner laufen, sie können - was besonders bei rechenintensiven Anwendungen wichtig ist - die Rechenleistung mehrerer Maschinen im Netzwerk bündeln. Die wichtigste Komponente ist der X-Server. Neben einigen kommerziellen Varianten gibt es für PC-Unixe die Server vom XFree86-Project, dessen Konfiguration in der CHIP 12/96 ausführlich beschrieben wurde. Der X-Client, z.B. die Textverarbeitung StarWriter, sendet dem X-Server die Daten, die er auf dem Bildschirm dargestellt haben möchte. Das sind Bitmaps, Informationen über verwendete Schriften, Texte etc. Der X-Server wird nun versuchen, die Schriften aufzulösen. Bei entsprechender konfiguration fragt er zuerst einen X-Fontserver (Programmname xfs), der ihm die Schriften berechnet und zur Verfügung stellt. Anderenfalls übernimmt der X-Server die Berechnung selbst. Im Gegensatz zum Fontserver hat er jedoch keinen Cache-Algorithmus, so daß Schriften u.U. mehrfach berechnet werden. Das Aussehen der Fenster wiederum ist Aufgabe des X-Window-Managers (siehe Kasten Fenstermanager). Dieser kommuniziert mit dem X-Server und stellt Rahmen, Tasten, Menüs etc. zur Verfügung, die der X-Server anschließend auf dem Bildschirm darstellt. Interaktionen wie Tastendrücke und Mausbewegungen werden dem Fenstermanager ebenfalls mitgeteilt. Darauf kann er reagieren und z.B. Fenster schließen oder Popup-Menüs öffnen. | |
Literatur
- Schulze, Martin: Grafische Oberfläche für Linux;
CHIP 12/96, S. 116ff - Kleinert, Jan; Sieg, Peter; So läuft Linux;
CHIP 11/96, S. 134ff - Nation, Robert; Hines, Charles et al.: FVWM2-Manpage;
spätes 20. Jahrhundert - Basse, Georg: Täuschend echt - Der Window-Manager FVWM2-95;
Linux-Magazin 9/96, S. 54ff
![[Ein voller Unix-Desktop mit dem X Window System]](desktop-small.png)