Copyright © 1995 by O'Reilly/International Thomson Verlag

Bitte denken Sie daran: Sie dürfen zwar die Online-Version ausdrucken, aber diesen Druck nicht fotokopieren oder verkaufen.

Wünschen Sie mehr Informationen zu der gedruckten Version des Buches "Linux - Wegweiser zur Installation & Konfiguration", dann klicken Sie hier.


Kapitel 5

Das X Window System

Wir wollen uns jetzt dem X Window System zuwenden -- einem der mächtigsten und wichtigsten Softwarepakete für Linux. Falls Sie bereits mit X auf einem UNIX-System vertraut sind, haben Sie Glück -- X unter Linux unterscheidet sich kaum von X auf anderen Systemen. Falls Sie noch keine Gelegenheit hatten, X zu benutzen, fürchten Sie sich nicht: Die Rettung ist nahe.

Es ist schwierig, das X Window System in aller Kürze zu beschreiben. X ist eine vollständige, grafische Bedienoberfläche für UNIX-Systeme. Es enthält eine riesige Anzahl an Optionen sowohl für den Programmierer als auch für den Benutzer. So gibt es z.B. mindestens ein halbes Dutzend Fenster-Manager (window managers) für X, von denen jeder einen anderen Ansatz zur Handhabung der Fenster bietet; indem Sie die Attribute des Fenster-Managers verändern, gewinnen Sie die Kontrolle über die Plazierung der Fenster auf dem Bildschirm, die Farben und Umrandungen der Fenster usw.

X wurde ursprünglich vom Projekt Athena am MIT und der Digital Equipment Corporation entwickelt. Die aktuelle Version ist 11, mit dem Revisionslevel 6 (X11R6); diese Version wurde im April 1994 herausgebracht. Seit der Freigabe der Version 11 ist X zum Standard bei grafischen Bedienoberflächen für UNIX geworden. X wird heute vom X-Konsortium entwickelt und verteilt; das X-Konsortium besteht aus einer Reihe von großen Computerherstellern.

Trotz der kommerziellen Nutzung kann das X Window System weiter unter einer freizügigen Lizenz des X-Konsortiums verteilt werden. Unter dieser Lizenz ist eine komplette Implementierung von X für Linux-Systeme frei verfügbar. Unter Linux wird XFree86 eingesetzt, eine Implementierung von X für UNIX-Systeme auf Intel-Rechnern. Diese Version entstand aus dem X386-Server auf dem Original-MIT-Band und enthält einige Erweiterungen und Optimierungen für Grafikhardware, die in Linux- und anderen Intel-UNIX-Systemen häufig eingesetzt wird.

In diesem Abschnitt werden wir (kurz) die Installation und Konfiguration von X auf Ihrem System besprechen; anschließend tauchen wir ein in die chaotische Welt der persönlichen Anpassung von X aus der Sicht eines Benutzers. Wir werden auch eine Reihe von Anwendungsprogrammen vorstellen, die unter X laufen und Ihnen zeigen, wie Sie diese umfangreiche Software nutzen, ohne von ihrer Komplexität erschlagen zu werden.

Die Eigenschaften von X

X basiert auf dem Client/Server-Modell; dabei ist der X- Server ein Programm, das auf Ihrem System läuft und alle Zugriffe auf die Grafikhardware abwickelt. Ein X- Client ist ein Anwendungsprogramm, das mit dem Server kommuniziert, indem es solche Anforderungen wie: »Zeichne eine Linie« oder: »Werte Tastatureingaben aus« an den Server stellt. Der X-Server zeichnet dann die Linie auf den Bildschirm oder reicht Eingaben des Benutzers (per Tastatur, Maus oder sonstwie) an das Client-Programm weiter, um solche Anforderungen zu erfüllen. Beispiele für X-Anwendungen sind xterm (eine Terminalemulation innerhalb eines Fensters) und xman (ein X-basierter Reader für Manual-Pages).

Es muß darauf hingewiesen werden, daß X ein Netzwerk-fähiges grafisches System ist. Das bedeutet: Die X-Clients können sowohl lokal (auf demselben Rechner wie der Server) als auch remote (auf einem Rechner irgendwo in einem TCP/IP-Netzwerk) laufen. Der X-Server nimmt Anforderungen von Clients auf lokalen ebenso wie auf entfernten Netzwerk-Sockets entgegen. Offensichtlich verleiht dies dem X Window System enorme Flexibilität. Wenn Sie über eine Verbindung zu einem TCP/IP-Netzwerk verfügen, haben Sie die Möglichkeit, über das Netzwerk in ein anderes System einzuloggen, dort ein Anwendungsprogramm zu starten und die Ausgaben des Programms von Ihrem lokalen X-Server darstellen zu lassen.

Wir sollten noch ein anderes Konzept von X erwähnen: das Fenster-Management . Clients, die unter X laufen, werden in einem oder mehreren Fenstern dargestellt. Es ist allerdings nicht der X-Server, der bestimmt, wie die Fenster verwaltet werden (wo sie erscheinen, wie ihre Größe verändert wird usw.) und wie sie aussehen (die Art der Rahmen). Statt dessen läuft neben den anderen X-Clients noch ein Client, der als Window-Manager bezeichnet wird; dieser Window-Manager übernimmt die Verwaltung der Fenster. Das »Look-and-Feel« Ihrer X-Arbeitsumgebung hängt zum Teil davon ab, für welchen Fenster-Manager Sie sich entscheiden.

Hardwareanforderungen

Mit der XFree86-Version 3.1 vom September 1994 werden die unten genannten Grafikchipsätze unterstützt. Die Dokumentation zu Ihrer Grafikkarte sollte darauf hinweisen, welchen Chipsatz die Karte benutzt. Falls Sie demnächst eine neue Grafikkarte anschaffen oder auf ein neues System mit eingebauter Grafikkarte umsteigen wollen, sollten Sie sich vom Händler genau erklären lassen, um welches Fabrikat, welches Modell und welchen Chipsatz es sich handelt. Es kann sein, daß der Händler erst nachfragen muß, bevor er Ihre Fragen beantworten kann; die meisten Händler werden dies für Sie tun. Viele Händler werden Ihnen mitteilen, daß es sich um eine »Standard-SVGA-Karte« handelt, die in Ihrem System »funktionieren sollte«. Weisen Sie dann darauf hin, daß Ihre Software (erwähnen Sie Linux und XFree86!) nicht alle Grafik-Chipsets unterstützt und daß Sie genaue Informationen brauchen.

Sie können auch mit dem Programm SuperProbe aus der XFree86-Distribution feststellen, welchen Chipsatz Ihre Grafikkarte benutzt. Wir gehen weiter unten noch genauer darauf ein.

Die folgenden Standard-SVGA-Chipsätze werden unterstützt:

Außerdem werden folgende beschleunigte SVGA-Chipsätze unterstützt:

Grafikkarten mit diesen Chipsets werden für alle Bussysteme einschließlich VLB und PCI unterstützt.

Alle hier erwähnten Chipsätze außer Avance Logic, MX und Video 7 (nur 256 Farben) werden sowohl mit 256 Farben als auch monochrom unterstützt. Viele dieser Chipsätze werden auch mit 16 und 32 Bits Farbtiefe unterstützt, falls Ihre Grafikkarte über ausreichend DRAM verfügt (insbesondere einige der Mach32-, P9000-, S3- und Cirrus-Karten). Die übliche Konfiguration ist 8 Bits Farbtiefe, d.h. 256 Farben.

Der Server für den Monochrom-Modus unterstützt außerdem generische VGA-Karten, monochrome Hercules-Karten, die Hyundai HGC1280, die Sigma LaserView sowie monochrome Apollo-Karten. Mit der AVGA-Karte von Compaq unterstützt der Monochrom-Server nur 64K an Videospeicher, und die GVGA-Karte ist noch nicht mit mehr als 64K getestet worden.

Diese Liste wird im Laufe der Zeit sicherlich erweitert werden. Die Release-Notes der aktuellen Version von XFree86 sollten eine komplette Liste der unterstützten Chipsätze enthalten.

Eines der Probleme, mit denen sich die Entwickler von XFree86 konfrontiert sehen, sind die unüblichen Mechanismen, die einige Hersteller von Grafikkarten einsetzen, um die Frequenzen (clock frequencies) zu bestimmen, mit denen die Karten betrieben werden. Manche dieser Hersteller geben entweder keine Unterlagen zur Programmierung der Karte heraus oder sie verlangen von den Entwicklern eine Unterschrift unter einem Non-disclosure-Abkommen (etwa: Nicht-Veröffentlichung), bevor die Informationen freigegeben werden. Damit wäre offensichtlich die freie Verteilung von XFree86-Software nicht mehr möglich; darauf wollen sich die Entwickler von XFree86 nicht einlassen. Dieses Problem bestand z.B. beim Hersteller Diamond. Seit der Version 3.1 von XFree86 hat Diamond allerdings mit dem Entwicklerteam zusammengearbeitet, um freie Treiber für diese Karten zur Verfügung zu stellen.

Wir empfehlen, für XFree86 unter Linux einen 486er Rechner mit mindestens 8 Megabytes RAM sowie eine Grafikkarte mit einem der oben erwähnten Chipsätze einzusetzen. Wenn Sie Wert auf wirklich schnelles Arbeiten legen, sollten Sie eine beschleunigte Karte wie etwa eine mit S3-Chipset benutzen. Prüfen Sie anhand der Dokumentation zu XFree86, ob Ihre spezielle Karte unterstützt wird, bevor Sie den Sprung wagen und teure Hardware anschaffen. In den USENET-Gruppen comp.windows.x.i386unix und comp.os.linux.misc werden regelmäßig die Ergebnisse von Benchmarks mit verschiedenen Grafikkarten unter XFree86 veröffentlicht.

Nebenbei bemerkt: Mein (Matts) eigenes Linux-System ist ein 486DX2-66 mit 20 Megabytes RAM und einer VLB-Karte mit S3-864-Chipset mit 2 Megabytes DRAM. Ich habe sowohl auf diesem Rechner als auch auf einer Sun Sparc IPX-Workstation X-Benchmarks laufen lassen. Das Linux-System ist etwa sieben Mal so schnell wie die Sparc IPX (für die Neugierigen: XFree86-3.1 unter Linux schafft mit dieser Grafikkarte etwa 171.000 XStones; die Sparc IPX schafft ca. 24.000). Im allgemeinen werden Sie unter XFree86 auf einem Linux-System mit beschleunigter SVGA-Karte wesentlich schneller arbeiten als auf kommerziellen UNIX-Workstations (die in der Regel für die Grafik einfache Frame-Buffer benutzen).

Sie sollten Ihren Rechner mindestens mit vier Megabytes an physikalisch vorhandenem RAM und 16 MBytes virtuellem Speicher ausstatten (z.B. acht MBytes RAM plus acht MBytes Swap-Space). Denken Sie daran: Je mehr RAM vorhanden ist, desto weniger muß das System aufgrund knappen Speichers swappen. Weil das Auslagern und Zurückladen extrem langsam geschieht (Festplatten sind im Vergleich zum Speicher sehr langsam), brauchen Sie acht Megabytes an RAM oder mehr, um mit XFree86 komfortabel arbeiten zu können. Die Leistung eines Systems mit nur vier MBytes RAM könnte gegenüber einem System mit acht oder mehr MBytes an RAM wesentlich zurückfallen (bis auf ein Zehntel).

XFree86 installieren

Die binäre Distribution von XFree86 für Linux finden Sie auf einer Reihe von FTP-Rechnern. Auf sunsite.unc.edu steht sie im Verzeichnis /pub/Linux/X11 . (Zum Zeitpunkt des Schreibens ist 3.1 die aktuelle Version; neue Versionen werden immer wieder einmal freigegeben.)

Es ist sehr wahrscheinlich, daß Sie als Teil Ihrer Linux-Distribution auch XFree86 erhalten haben; in diesem Fall brauchen Sie die Software nicht mehr auf Ihren Rechner herunterzuladen. Für den Fall, daß Sie XFree86 direkt auf Ihren Rechner übertragen möchten, listen wir in den folgenden Tabellen alle Dateien der XFree86-3.1-Distribution auf.

Sie brauchen einen der folgenden Server:

Datei                   Beschreibung
---------------------------------------------------------------
XF86-3.1-8514.tar.gz    Server für Karten auf 8514-Basis         
XF86-3.1-AGX.tar.gz     Server für Karten auf AGX-Basis          
XF86-3.1-Mach32.tar.gz  Server für Karten auf Mach32-Basis       
XF86-3.1-Mach8.tar.gz   Server für Karten auf Mach8-Basis        
XF86-3.1-Mono.tar.gz    Server für monochrome Grafikmodi         
XF86-3.1-P9000.tar.gz   Server für Karten auf P9000-Basis        
XF86-3.1-S3.tar.gz      Server für Karten auf S3-Basis           
XF86-3.1-SVGA.tar.gz    Server für SVGA-Karten                   
XF86-3.1-VGA16.tar.gz   Server für VGA/EGA-Karten                
XF86-3.1-W32.tar.gz     Server für Karten auf ET4000/W32-Basis   

Sie brauchen folgende Dateien:

Datei                Beschreibung
----------------------------------------------------------------
XF86-3.1-bin.tar.gz  Der Rest der X11R6-Binaries                  
XF86-3.1-cfg.tar.gz  Konfigurationsdateien für xdm, xinit und fs  
XF86-3.1-doc.tar.gz  Dokumentation und Manual-Pages               
XF86-3.1-inc.tar.gz  Include-Dateien                              
XF86-3.1-lib.tar.gz  Shared Libraries für X und weitere Dateien   
XF86-3.1-fnt.tar.gz  Einige Fonts                                 

Diese Dateien sind optional:

Datei                    Beschreibung
----------------------------------------------------------------------
XF86-3.1-ctrb.tar.gz     Verschiedene contrib-Programme                 
XF86-3.1-extra.tar.gz    Weitere XFree86-Server und -Binaries           
XF86-3.1-lkit.tar.gz     Server-Linkkit zur individuellen Anpassung     
XF86-3.1-fnt75.tar.gz    75-dpi-Bildschirmfonts                         
XF86-3.1-fnt100.tar.gz   100-dpi-Bildschirmfonts                        
XF86-3.1-fntbig.tar.gz   Große Kanji- und andere Fonts                  
XF86-3.1-fntscl.tar.gz   Skalierte Fonts (Speedo, Type1)                
XF86-3.1-man.tar.gz      Manual-Pages                                   
XF86-3.1-pex.tar.gz      PEX-Binaries mit Include- und Library-Dateien  
XF86-3.1-slib.tar.gz     Statische X-Libraries und weitere Dateien      
XF86-3.1-usrbin.tar.gz   Daemonen, die in /usr/bin stehen               
XF86-3.1-xdmshdw.tar.gz  Shadow-Paßwort-Version von xdm                 

Das XFree86-Verzeichnis sollte README -Dateien und Hinweise für die Installation der vorliegenden Version enthalten.

übertragen Sie die oben erwähnten Dateien auf Ihren Rechner. Legen Sie dann (als root) das Verzeichnis /usr/X11R6 an. Entpacken Sie anschließend diese Dateien mit einem Befehl wie:

# gzip -dc XF86-3.1-bin.tar.gz | tar xfB -

Denken Sie daran, daß diese tar-Dateien von /usr/X11R6 aus erstellt wurden; deshalb ist es wichtig, daß Sie von diesem Verzeichnis aus entpacken.

Nach dem Entpacken müssen Sie zunächst einen Verweis von der Datei /usr /X11R6/bin/X auf den von Ihnen benutzten Server einrichten. Wenn Sie z.B. den SVGA-Farb-Server benutzen möchten, legen Sie einen Link von /usr/bin/X11/X auf /usr/X11R6/bin/XF86_SVGA . Wenn Sie statt dessen den monochromen Server benutzen wollen, legen Sie mit folgendem Befehl den Link um auf die Datei XF86_MONO :

# ln -sf /usr/X11R6/bin/XF86_MONO  /usr/X11R6/bin/X

Gehen Sie genau so vor, wenn Sie mit einem der anderen Server arbeiten möchten.

Wenn Sie nicht sicher sind, welchen Server Sie benutzen sollten oder wenn Sie den Chipsatz Ihrer Grafikkarte nicht kennen, sollten Sie das Programm SuperProbe im Verzeichnis /usr/X11R6/bin aufrufen (ist im oben erwähnten XF86-3.1-bin -Archiv enthalten). Dieses Programm wird versuchen, den Chipsatz Ihrer Grafikkarte und weitere Informationen zu bestimmen; schreiben Sie sich die Antworten auf, damit Sie später einmal nachschlagen können.

Sie müssen noch sicherstellen, daß /usr/X11R6/bin in Ihrer PATH-Variablen enthalten ist. Editieren Sie zu diesem Zweck entweder /etc/profile oder /etc/csh.login (je nachdem, mit welcher Shell Sie oder andere Benutzer des Systems arbeiten). Sie haben auch die Möglichkeit, das Verzeichnis einfach in Ihre persönliche Path-Variable einzutragen, indem Sie /etc/.bashrc bzw. /etc/.cshrc entsprechend ergänzen.

Sie müssen außerdem dafür sorgen, daß der Runtime-Linker ld.so das Verzeichnis /usr/X11R6/lib finden kann. Tragen Sie dazu folgende Zeile in der Datei /etc /ld.so.conf ein:

/usr/X11R6/lib

und rufen Sie dann als root das Programm /sbin/ldconfig auf.

XFree86 konfigurieren

In den meisten Fällen ist es nicht schwierig, XFree86 zu konfigurieren. Wenn Sie allerdings Hardware benutzen, für die Treiber gerade entwickelt werden oder wenn Sie mit einer beschleunigten Grafikkarte die bestmögliche Geschwindigkeit und Auflösung ausnutzen möchten, kann die Konfiguration einige Zeit in Anspruch nehmen.

In diesem Abschnitt werden wir beschreiben, wie die Datei XF86Config aussehen soll, mit deren Hilfe der XFree86-Server konfiguriert wird. In vielen Fällen ist es sinnvoll, mit einer »Basiskonfiguration« für XFree86 zu starten, also eine niedrige Auflösung zu benutzen. Eine sinnvolle Einstellung ist 640x480, die von allen Grafikkarten und Monitoren unterstützt werden sollte. Sobald Sie XFree86 in dieser niedrigen Standardauflösung ans Laufen gebracht haben, können Sie sich daranmachen eine Konfiguration zu finden, die die Möglichkeiten Ihrer Grafikhardware ausnutzt. Die Idee dahinter ist, zunächst einmal XFree86 auf Ihrem System überhaupt zum Laufen zu bringen und sicherzustellen, daß alles funktioniert, bevor Sie sich an die manchmal etwas schwierige Aufgabe machen, die optimale XFree86-Konfiguration zu finden.

Außer den Informationen, die Sie hier vorfinden, sollten Sie noch folgendes lesen:

Die wichtigste Konfigurationsdatei, die Sie anlegen müssen, ist /usr/X11R6/lib /X11/XF86Config . Diese Datei enthält Informationen über Ihre Maus, Ihre Grafikkarte usw. Mit der XFree86-Distribution wird als Beispiel die Datei XF86Config.eg ausgeliefert. Wenn Sie diese Datei nach XF86Config kopieren und dann editieren, haben Sie einen geeigneten Ausgangspunkt gefunden.

Die Manual-Page zu XF86Config beschreibt im Detail das Format dieser Datei. Lesen Sie diese Man-Page jetzt, falls Sie das noch nicht getan haben.

Wir werden in kleinen Schritten ein Beispiel für eine XF86Config -Datei vorstellen. Diese Datei sieht nicht unbedingt so aus, wie das Beispiel in der XFree86-Distribution, aber der Aufbau ist derselbe.

Das Format der Datei XF86Config kann sich mit neuen Versionen von XFree86 ändern; wir beziehen uns auf die Version 3.1.

Auf keinen Fall sollten Sie unser Beispiel einfach für Ihr System übernehmen. Wenn Sie versuchen, eine Konfigurationsdatei zu benutzen, die nicht an Ihre Hardware angepaßt ist, könnte Ihr Monitor mit einer zu hohen Zeilenfrequenz betrieben werden; es hat Berichte über Monitore gegeben (insbesondere solche mit fester Zeilenfrequenz), die durch Benutzung einer ungeeigneten XF86Config -Datei beschädigt oder zerstört wurden. Was wir damit sagen wollen: Stellen Sie auf jeden Fall sicher, daß Ihre XF86Config -Datei an Ihre Hardware angepaßt wird, bevor Sie damit arbeiten.

Die einzelnen Abschnitte der Datei XF86Config sind von den beiden Zeilen Section " abschnitt "...EndSection umschlossen. Der erste Abschnitt in XF86Config heißt Files und sieht etwa so aus:

Section "Files"
    RgbPath     "/usr/X11R6/lib/X11/rgb"
    FontPath    "/usr/X11R6/lib/X11/fonts/misc/"
    FontPath    "/usr/X11R6/lib/X11/fonts/75dpi/"
EndSection

Die Zeile RgbPath weist den Weg zur RGB-Datenbank für X11R6, und jede der FontPath-Zeilen verweist auf ein Verzeichnis, das X11-Fonts enthält. In der Regel werden Sie diese Zeilen nicht editieren müssen; achten Sie aber darauf, daß es zu jedem installierten Fonttyp einen FontPath-Eintrag gibt (d.h., zu jedem Verzeichnis unterhalb von /usr/X11R6/lib/X11/fonts ).

Der nächste Abschnitt heißt ServerFlags und enthält einige globale Flags für den Server. Dieser Abschnitt ist meistens leer:

Section "ServerFlags"
# Uncomment this to cause a core dump at the spot where a signal is
# received.  This may leave the console in an unusable state, but may
# provide a better stack trace in the core dump to aid in debugging
#    NoTrapSignals
# Uncomment this to disable the <Crtl><Alt><BS> server abort
sequence
#    DontZap
EndSection

In diesem Fall sind alle Zeilen dieses Abschitts auskommentiert.

Der folgende Abschnitt heißt Keyboard:

Section "Keyboard"
    Protocol    "Standard"
    AutoRepeat  500 5
    ServerNumLock
EndSection

Es gibt einige weitere Optionen -- schauen Sie sich die Datei XF86Config an, falls Sie vorhaben, das Verhalten der Tastatur zu verändern. Die hier gezeigten Einstellungen sollten auf den meisten Systemen funktionieren.

Es folgt der Abschnitt Pointer, in dem Mausparameter definiert werden:

Section "Pointer"

    Protocol    "MouseSystems"
    Device      "/dev/mouse"

# Baudrate and SampleRate are only for some Logitech mice
#    BaudRate   9600
#    SampleRate 150

# Emulate3Buttons is an option for 2-button Microsoft mice
#    Emulate3Buttons

# ChordMiddle is an option for some 3-button Logitech mice
#    ChordMiddle

EndSection

Hier müssen Sie sich nur mit Protocol und Device befassen. Protocol bezeichnet das Protokoll , das Ihre Maus benutzt (nicht den Hersteller oder das Modell). Gültige Einträge für Protocol (unter Linux -- andere Betriebsysteme kennen andere Protokolle) sind:

Für die Busmaus von Logitech sollten Sie BusMouse wählen. Beachten Sie, daß ältere Mäuse von Logitech das Protokoll Logitech, neuere Logitech-Mäuse dagegen eines der Protokolle Microsoft oder Mouseman benutzen. In diesem Fall stimmt das Protokoll nicht unbedingt mit dem Maustyp überein.

Device bezeichnet die Gerätedatei, über die die Maus angesprochen wird. Auf den meisten Linux-Systemen ist das /dev/mouse . /dev/mouse ist bei seriellen Mäusen in der Regel ein Link auf die entsprechende serielle Schnittstelle (etwa /dev /cua0 ), und bei Busmäusen auf den entsprechenden Busmaustreiber. Stellen Sie auf jeden Fall sicher, daß die Gerätedatei, die hinter Device angegeben wird, tatsächlich existiert.

Der nächste Abschnitt heißt Monitor; hier werden die Eigenschaften Ihres Monitors beschrieben. Wie auch andere Abschnitte aus der Datei XF86Config kann dieser Abschnitt mehrmals auftauchen. Das ist nützlich, wenn Sie an Ihrem Rechner mehr als einen Monitor betreiben oder wenn Sie für verschiedene Hardwarekonfigurationen dieselbe Datei XF86Config benutzen. Im allgemeinen werden Sie allerdings nur einen Monitor-Abschnitt benötigen:

Section "Monitor"

    Identifier  "CTX 5468 NI"

    # These values are for a CTX 5468NI only! Don't attempt to use
    # them with your monitor (unless you have this model)

    HorizSync    30-38,47-50
    VertRefresh  50-90

    # Modes: Name      dotclock  horiz                vert

    ModeLine "640x480"  25       640 664 760 800      480 491 493 525
    ModeLine "800x600"  36       800 824 896 1024     600 601 603 625
    ModeLine "1024x768" 65       1024 1088 1200 1328  768 783 789 818

EndSection

In der Zeile Identifier bekommt der Monitor-Eintrag einen frei wählbaren Namen. Dies kann eine beliebige Zeichenfolge sein; dieser Name wird weiter unten in der Datei XF86Config benutzt, um auf diesen Eintrag Bezug zu nehmen.

HorizSync bezeichnet die gültigen horizontalen Zeilenfrequenzen (in kHz) für Ihren Monitor. Bei Multisync-Monitoren können Sie einen Frequenzbereich (oder mehrere, durch Kommata getrennt) angeben -- siehe oben. Für Monitore mit fester Frequenz finden Sie hier eine Liste der möglichen Werte, z.B.:

    HorizSync    31.5, 35.2, 37.9, 35.5, 48.95

Das Handbuch zu Ihrem Monitor sollte unter den technischen Spezifikationen auch diese Werte enthalten. Falls Sie diese Informationen nicht auffinden können, sollten Sie sie vom Hersteller oder vom Händler Ihres Monitors erfragen. Es gibt einige andere Quellen für solche Informationen; weiter unten finden Sie eine Liste.

VertRefresh bezeichnet die gültigen vertikalen Bildwiederholfrequenzen Ihres Monitors (in Hz). Wie bei HorizSync können auch hier Bereiche oder eine Liste mit festen Werten angegeben werden; sehen Sie in Ihrem Monitorhandbuch nach.

Die Werte HorizSync und VertRefresh werden nur benutzt, um zu prüfen, ob die von Ihnen angegebenen Auflösungen für den Bildschirm innerhalb gültiger Bereiche liegen. Damit verringert sich die Wahrscheinlichkeit, daß Sie den Monitor beschädigen, wenn Sie versuchen, ihn mit einer ungeeigneten Frequenz zu betreiben.

Mit der Anweisung ModeLine spezifizieren Sie eine mögliche Auflösung für Ihren Monitor. ModeLine hat das Format:

ModeLine name dot-clock horiz-werte vertik-werte

Der Name ist eine beliebige Zeichenfolge; mit diesem Namen werden Sie diese Auflösung weiter unten in der Datei bezeichnen. Die Dot-Clock ist die Pixelfrequenz (auch im deutschen oft als »Dot-Clock« bezeichnet), die zu dieser Auflösung gehört. Die Dot-Clock wird in der Regel in MHz angegeben und bezeichnet die Frequenz, mit der die Grafikkarte bei dieser Auflösung Pixel an den Monitor schicken muß. Die Horiz-Werte und Vertik-Werte bestehen jeweils aus vier Zahlen, die festlegen, wann die Strahlenkanone des Monitors eingeschaltet wird und wann die Signale zur horizontalen und vertikalen Synchronisation (Sync-Signale) erzeugt werden.

Wie bestimmen Sie für Ihren Monitor die Werte in der Zeile ModeLine? In der Datei VideoModes.doc , die mit XFree86 ausgeliefert wird, finden Sie eine detaillierte Beschreibung, wie Sie für alle Videomodi Ihres Bildschirms diese Werte ermitteln können. Zunächst einmal muß die Dot-Clock zu einem der Pixelfrequenzwerte passen, die Ihre Grafikkarte erzeugen kann. Weiter unten in der Datei XF86Config werden Sie diese Dot-Clock-Werte eintragen; Sie können nur solche Grafikmodi benutzen, deren Dot-Clock von Ihrer Grafikkarte unterstützt wird.

Eventuell finden Sie zu Ihrem Monitor passende Daten für die ModeLine-Zeilen in einer der beiden Dateien modeDB.txt und Monitors ; beide Dateien stehen im Verzeichnis /usr/X11R6/lib/X11/doc .

Sie sollten mit den ModeLine-Werten für den VESA-Standard beginnen, der von den meisten Monitoren unterstützt wird. In modeDB.txt finden Sie Werte für die Standard-VESA-Auflösungen; Sie werden dort Einträge wie den folgenden vorfinden:

# 640x480@60Hz Non-Interlaced mode
# Horizontal Sync = 31.5kHz
# Timing: H=(0.95us, 3.81us, 1.59us), V=(0.35ms, 0.064ms, 1.02ms)
#
# name        clock   horizontal timing     vertical timing      flags
 "640x480"     25.175  640  664  760  800    480  491  493  525

Dies sind die VESA-Standardwerte für die Auflösung 640x480. Die Dot-Clock ist 25.175 MHz, die also auch von Ihrer Grafikkarte unterstützt werden muß, damit Sie in diesem Videomodus arbeiten können (mehr dazu weiter unten).

Wenn Sie diesen Modus benutzen möchten, müssen Sie die Zeile:

ModeLine "640x480" 25.175  640 664 760 800  480 491 493 525

in XF86Config eintragen.

Beachten Sie, daß der Name in der ModeLine-Zeile (in diesem Beispiel "640x480") frei wählbar ist -- üblicherweise wird der Modus nach der Auflösung benannt, aber Sie können einen beliebigen aussagekräftigen Namen wählen.

Der Server wird jede ModeLine-Zeile daraufhin überprüfen, ob die angegebenen Werte innerhalb der Werte liegen, die durch Horiz-Werte und Vertik-Werte vorgegeben sind. Falls das nicht der Fall ist, wird der Server beim Start von X eine Fehlermeldung ausgeben (mehr dazu weiter unten).

Für den Fall, daß Sie mit den Werten für den VESA-Standard nicht zurechtkommen (Sie werden das beim Ausprobieren feststellen), finden Sie in den Dateien modeDB.txt und Monitors die genauen Werte für eine ganze Reihe von Monitoren. Sie können Ihre Einträge in den ModeLine-Zeilen auch aus den Daten in diesen beiden Dateien erzeugen. Benutzen Sie nur die Werte, die sich genau auf Ihren Monitor beziehen. Beachten Sie, daß viele 14- und 15-Zoll-Monitore keine höheren Auflösungen unterstützen und 1024x768 oft nur bei einer niedrigen Pixelfrequenz. Das bedeutet: Falls Sie in diesen Dateien keine Modi mit höheren Auflösungen finden, kann es sein, daß Ihr Monitor solche Modi nicht unterstützt.

Wenn Sie für Ihren Monitor absolut keine passenden ModeLine-Werte finden können, haben Sie noch die Möglichkeit, aus den Unterlagen zu Ihrem Monitor diese Werte anhand der Beschreibung in VideoModes.doc zu ermitteln; diese Datei ist Bestandteil der XFree86-Distribution. Sie können mehr oder weniger Glück dabei haben, wenn Sie die Werte für ModeLine von Hand ermitteln, aber solange Sie keine fertigen Einträge vorfinden, sollten Sie auf jeden Fall einen Blick in diese Datei werfen. In VideoModes.doc finden Sie auch eine Beschreibung der ModeLine-Anweisung sowie weiterer Aspekte des XFree86-Servers in überwältigendem Detailreichtum.

Hier noch ein Hinweis: Wenn Sie ModeLine-Werte finden, die fast, aber nicht ganz passen, kommen Sie vielleicht ans Ziel, indem Sie diese Werte ein wenig anpassen. Falls z.B. bei der Arbeit mit XFree86 der Bildschirminhalt leicht verschoben ist oder das Bild zu »rollen« scheint, können Sie mit Hilfe der Anleitung in VideoModes.doc versuchen, dies zu beheben. Überprüfen Sie auch einmal die Einstellungen am Monitor selbst! Häufig muß nach dem Start von XFree86 die horizontale oder vertikale Bildlage angepaßt werden, damit der Bildschirminhalt weiterhin in der richtigen Grösse und Lage erscheint. Hierbei zeigt sich, welche Vorteile ein Monitor hat, dessen Bedienelemente an der Vorderseite angebracht sind.

Sie sollten Ihren Monitor niemals mit den Frequenz- oder ModeLine-Werten anderer Geräte betreiben. Es kann sein, daß Sie ihn beschädigen oder gar zerstören, wenn Sie versuchen, den Monitor mit einer ungeeigneten Frequenz laufen zu lassen.

Der nächste Abschnitt der Datei XF86Config heißt Device; hier werden Parameter für Ihre Grafikkarte gesetzt. Ein Beispiel:

Section "Device"
        Identifier "#9 GXE 64"

        # Noch nichts; wir tragen diese Werte später nach

EndSection

Dieser Abschnitt gibt die Werte für eine bestimmte Grafikkarte an. Der Identifier ist eine beliebige Zeichenfolge zur Benennung der Karte; später werden Sie sich unter diesem Namen auf diese Karte beziehen.

Zunächst werden wir keinerlei Einträge im Abschnitt Device vornehmen -- außer dem Identifier. Wir werden nämlich den X-Server selbst die Eigenschaften der Grafikkarte herausfinden lassen, um sie dann im Abschnitt Device einzutragen. Der XFree86-Server ist in der Lage, den Grafikchipsatz, die Frequenzen, den RAMDAC und das vorhandene Video-RAM zu ermitteln.

Vorher müssen wir allerdings noch die Datei XF86Config komplettieren. Der nächste Abschnitt heißt Screen; hier wird die Kombination aus Monitor und Grafikkarte bestimmt, die für einen bestimmten Server benutzt werden soll.

 Section "Screen"
     Driver     "Accel"
     Device     "#9 GXE 64"
     Monitor    "CTX 5468 NI"
     Subsection "Display"
         Depth      16
         Modes      "1024x768" "800x600" "640x480"
         ViewPort   0 0
         Virtual    1024 768
     EndSubsection
 EndSection

Die Zeile Driver gibt an, welchen X-Server Sie benutzen werden. Driver kann folgende Werte annehmen:

Accel
Für die Server XF86_S3, XF86_Mach32, XF86_Mach8, XF86_8514, XF86_P9000, XF86_AGX und XF86_W32;

SVGA
Für den Server XF86_SVGA ;

VGA16
Für den Server XF86_VGA16 ;

VGA2
Für den Server XF86_Mono ;

Mono
Für die monochromen Nicht-VGA-Treiber in den Servern XF86_Mono und XF86_VGA16 .

Achten Sie darauf, daß /usr/X11R6/bin/X ein symbolischer Link auf den Server ist, den Sie benutzen.

(Im Abschnitt » Symbolische Verknüpfungen « in Kapitel 3 zeigen wir, wie ein symbolischer Link angelegt wird.)

Die Zeile Device enthält den Identifier aus dem Abschnitt Device. Weiter oben haben wir den Device-Abschnitt mit der Zeile:

Identifier "#9 GXE 64"

erstellt. Deshalb wird "#9 GXE 64" hier in die Device-Zeile eingetragen.

In ähnlicher Weise enthält die Zeile Monitor den Namen des Monitor-Abschnitts, der mit diesem Server benutzt werden soll. In diesem Beispiel ist "CTX 5468 NI" der Identifier aus dem weiter oben erstellten Abschnitt Monitor.

In Subsection »Display« werden einige Eigenschaften des XFree86-Servers für Ihre Kombination aus Monitor und Grafikkarte beschrieben. Alle diese Optionen werden in XF86Config im Detail beschrieben; die meisten davon sind quasi die Sahne im Kaffee und für das Funktionieren des Systems nicht unbedingt notwendig.

Folgende Optionen sollten Sie kennen:

Depth
Bestimmt die Farbtiefe -- also die Anzahl der Bits pro Pixel. In der Regel wird Depth auf 8 gesetzt. Für den Server VGA16 sollten Sie 4 einstellen, für den monochromen Server 1. Falls Sie eine beschleunigte Grafikkarte mit ausreichend Speicher benutzen, können Sie Depth auch auf 16, 24 oder 32 setzen. Wenn Sie mit Farbtiefen größer als 8 Probleme feststellen, können Sie zunächst 8 einstellen und später versuchen, die Ursache des Problems zu finden.

Modes
Hier steht eine Liste der Modus-Namen, die wir im Abschnitt Monitor mit der Anweisung ModeLine definiert haben. Weiter oben haben wir die ModeLines-Zeilen "1024x768", "800x600" und "640x480" eingetragen, deshalb enthält die Zeile Modes die Werte:
	Modes    "1024x768" "800x600" "640x480"

Der erste hier eingetragene Modus wird von XFree86 als Voreinstellung benutzt. Nach dem Start von XFree86 können Sie mit den Tastenkombinationen CTRL-ALT + dem Plus- bzw. Minuszeichen im Ziffernblock zwischen den hier aufgeführten Modi hin- und herschalten.

Vielleicht ist es eine gute Idee, XFree86 zunächst mit einer niedrigen Auflösung zu konfigurieren, etwa 640x480 -- diese Auflösung funktioniert auf den meisten Systemen. Wenn Sie dann eine funktionierende Konfiguration gefunden haben, können Sie XF86Config so anpassen, daß auch höhere Auflösungen unterstützt werden.

Virtual
Hier wird die Größe der virtuellen Arbeitsfläche eingestellt. XFree86 ist in der Lage, den gesamten Speicher Ihrer Grafikkarte zu nutzen, um die Arbeitsfläche zu vergrößern. Wenn Sie bei der Arbeit dann den Mauszeiger an den Rand des Bildschirms bewegen, wird die Anzeige gescrollt, so daß der Rest der Arbeitsfläche ins Blickfeld kommt. Das gibt Ihnen die Möglichkeit, Virtual auf den größten Wert einzustellen, den Ihre Grafikkarte unterstützt, auch wenn Sie nur mit einer niedrigen Auflösung von 800x600 arbeiten. Eine Grafikkarte mit einem Megabyte Speicher unterstützt bei Farbtiefe 8 bis zu 1024x768 Pixel; eine Zwei-MByte-Karte unterstützt 1280x1024 Pixel bei Farbtiefe 8 oder 1024x768 Pixel bei Farbtiefe 16. Natürlich können Sie zu einem bestimmten Zeitpunkt nicht die komplette Arbeitsfläche einsehen, aber Sie können trotzdem auf der ganzen Fläche arbeiten.

Mit Virtual können Sie zwar den Speicher Ihrer Grafikkarte ausnutzen, aber die Möglichkeiten sind doch irgendwie eingeschränkt. Wenn Sie mit einer richtigen virtuellen Arbeitsfläche arbeiten möchten, sollten Sie statt dessen den Fenster-Manager fvwm benutzen. Mit fvwm steht Ihnen eine ziemlich große virtuelle Arbeitsfläche zur Verfügung (z.B. durch versteckte Fenster realisiert, statt den kompletten Inhalt der Arbeitsfläche im Bildschirmspeicher zu halten). In der Manual-Page zu fvwm finden Sie Details zu diesem Punkt; die meisten Linux-Systeme benutzen fvwm als Voreinstellung.

ViewPort
Wenn Sie mit der Option Virtual arbeiten, die wir oben beschrieben haben, stellen Sie mit ViewPort ein, welche Koordinaten die linke obere Ecke der virtuellen Arbeitsfläche beim Start von XFree86 haben soll. Normalerweise wird ViewPort 0 0 eingestellt -- damit zeigt der Bildschirmausschnitt die obere linke Ecke der virtuellen Arbeitsfläche. Wenn Sie ViewPort nicht definieren, wird die Mitte der Arbeitsfläche angezeigt (was Sie vielleicht nicht haben wollen).

Es gibt viele weitere Optionen für diesen Abschnitt; in der Manual-Page zu XF86Config finden Sie eine vollständige Beschreibung. Allerdings brauchen Sie diese Optionen nicht, um XFree86 überhaupt zu starten.

Informationen zur Grafikkarte eintragen

Bis auf die kompletten Informationen zu Ihrer Grafikkarte ist die Datei XF86Config jetzt fertig. Wir werden den X-Server selbst die fehlenden Informationen ermitteln lassen und sie dann in XF86Config eintragen.

Statt diese Informationen für die Datei XF86Config vom X-Server ermitteln zu lassen, können Sie die Werte für viele Grafikkarten auch in den Dateien modeDB.txt , AccelCards und Devices nachschlagen. Alle diese Dateien stehen in /usr/X11R6 /lib/X11/doc . Außerdem gibt es verschiedene README -Dateien für bestimmte Chipsätze. Sie sollten in allen diesen Dateien nachsehen, ob Sie dort Informationen zu Ihrer Grafikkarte finden, und diese Informationen (Dot-Clock-Werte, Chipsatz, Optionen) in XF86Config eintragen. Für den Fall, daß Sie irgendeine Information nicht finden können, zeigen wir Ihnen hier, wie der X-Server sie ermittelt.

In diesen Beispielen zeigen wir die Konfiguration für die Grafikkarte #9 GXE 64 mit dem XF86_S3-Chipsatz. Das ist zufälligerweise die Karte, die der Schreiber benutzt, aber was wir hier besprechen gilt auch für andere Karten.

Als erstes müssen Sie feststellen, welchen Chipsatz Ihre Grafikkarte benutzt. Sie erhalten diese Information, indem Sie SuperProbe aufrufen (steht in /usr/X11R6 /bin ), aber Sie brauchen dazu den Namen des Chipsatzes, wie ihn der X-Server kennt.

Mit dem Befehl:

# X -showconfig

erhalten Sie eine Liste aller Chipsets, die Ihr X-Server kennt. (Auch die Manual-Pages zu den X-Servern enthalten diese Namen.) Für den beschleunigten Server XF86_S3 erhalten wir die Ausgabe:

XFree86 Version 3.1 / X Window System
(protocol Version 11, revision 0, vendor release 6000)
Operating System: Linux
Configured drivers:
  S3: accelerated server for S3 graphics adaptors (Patchlevel 0)
      mmio_928, s3_generic

Die gültigen Chipsatznamen für diesen Server sind also mmio_928 und s3_generic. In der Manual-Page zu XF86_S3 werden diese Chipsätze beschrieben und Sie erfahren dort, welche Karten diese Chipsätze benutzen. Für die Grafikkarte #9 GXE 64 ist mmio_928 korrekt.

Falls Sie nicht wissen, welchen Chipsatz Sie nehmen sollen, kann der X-Server das für Sie herausfinden. Geben Sie dazu:

# X -probeonly > /tmp/x.out 2>&1

ein, wenn Sie mit der bash arbeiten. In der csh versuchen Sie es mit:

% X -probeonly >& /tmp/x.out

Sie sollten diesen Befehl aufrufen, wenn das System nicht unter Last läuft, d.h., daß keine anderen Programme aktiv sein sollten. Dieser Befehl ermittelt auch die Dot-Clocks für Ihre Grafikkarte (siehe unten), und andere aktive Programme könnten diese Berechnung durcheinanderbringen.

Die Ausgabe des o.a. Befehls (in der Datei /tmp/x.out ) sollte etwa folgendes enthalten:

XFree86 Version 3.1 / X Window System
(protocol Version 11, revision 0, vendor release 6000)
Operating System: Linux 
Configured drivers:
  S3: accelerated server for S3 graphics adaptors (Patchlevel 0)
      mmio_928, s3_generic
	 .
	 .
	 .
(--) S3: card type: 386/486 localbus
(--) S3: chipset:   864 rev. 0
(--) S3: chipset driver: mmio_928

Hier sehen wir, daß mmio_928 und s3_generic die beiden gültigen Chipsätze für diesen Server (XF86_S3) sind. Der Server hat eine Karte gefunden, die den mmio_928 benutzt.

Tragen Sie jetzt im Abschnitt Device der Datei XF86Config eine Chipset-Zeile ein, die den Namen des vorgefundenen Chipsatzes enthält. Ein Beispiel:

Section "Device"
	# We already had Identifier here...
	Identifier "#9 GXE 64" 
	# Add this line:
	Chipset "mmio_928"
EndSection

Als nächstes müssen wir die Clock-Frequenzen ermitteln, die die Grafikkarte benutzt. Die Clock-Frequenz, oder Dot-Clock, gibt einfach die Geschwindigkeit an, mit der die Grafikkarte Pixel an den Monitor übertragen kann. Wir haben bereits gesehen, daß zu jeder Bildschirmauflösung eine bestimmte Dot-Clock gehört. Jetzt gilt es also festzustellen, welche Dot-Clocks die Grafikkarte bereitstellt.

Sie sollten zuerst in den bereits erwähnten Dateien (( modeDB.txt usw.) nachsehen, ob die Dot-Clocks Ihrer Grafikkarte dort aufgeführt sind. Die Dot-Clocks werden meist in Form einer Liste mit acht oder sechzehn Werten (in MHz) angegeben. In mode-DB.txt findet sich z.B. folgender Eintrag für die Grafikarte Cardinal ET4000:

# chip    ram   virtual   clocks                           default-mode  flags
 ET4000   1024  1024 768   25  28  38  36  40  45  32   0  "1024x768"   

Die Dot-Clocks für diese Karte sind also 25, 28, 38, 36, 40, 45, 32 und 0 MHz.

Im Abschnitt Devices von XF86Config sollten Sie eine Clocks-Zeile mit den Dot-Clocks Ihrer Karte einfügen. Mit den eben gefundenen Werten würde diese Zeile so aussehen:

	 Clocks 25 28 38 36 40 45 32 0

Diese Zeile steht im Abschnitt Devices hinter Chipset. Die Reihenfolge der Werte ist äußerst wichtig! Stellen Sie diese Liste auf keinen Fall um.

Wenn Sie keine passenden Dot-Clocks für Ihre Karte finden können, lassen Sie den X-Server diese Werte ermitteln. Der o.a. Befehl X -probeonly sollte auch Zeilen ausgeben, die etwa so aussehen:

(--) S3: clocks:  25.18  28.32  38.02  36.15  40.33  45.32  32.00  00.00

Anschließend können wir eine Clocks-Zeile einfügen, die alle Werte in dieser Reihenfolge enthält. Falls nicht alle Werte in eine Zeile passen (manchmal gibt es mehr als acht davon), können Sie in XF86Config auch mehr als eine Clocks-Zeile einfügen. Achten Sie darauf, daß die Reihenfolge der Werte erhalten bleibt.

Wenn Sie mit X -probeonly die Dot-Clocks ermitteln, darf im Abschnitt Devices der Datei keine Clocks-Zeile stehen (oder sie muß auskommentiert sein). Falls eine solche Zeile vorhanden ist, wird der Server die Dot-Clocks nicht ermitteln, sondern die Werte aus XF86Config benutzen.

Beachten Sie, daß einige beschleunigte Grafikkarten einen programmierbaren Clock-Chip benutzen. (In der Manual-Page zu XF86_Accel finden Sie Details hierzu; dies betrifft alle S3-, AGX- und XGA-2-Karten). Dieser Chip macht es möglich, daß der X-Server die Karte anweist, welche Dot-Clocks sie benutzen soll. Wenn Sie eine solche Karte haben, werden Sie in den o.a. Dateien wahrscheinlich keine Liste mit Dot-Clocks finden. Eventuell zeigt X -probeonly auch eine Liste an, die nur einen oder zwei verschiedene Werte enthält, und die anderen Werte sind identisch oder gleich null.

Für Karten mit einem programmierbaren Clock-Chip tragen Sie in der Datei XF86Config die Zeile ClockChip statt Clocks ein. Die ClockChip-Zeile enthält den Namen des Clock-Chips auf der Grafikkarte; Sie finden diese Namen in den Manual-Pages zu den einzelnen Servern. In der Datei README.S3 z.B. erfahren Sie, daß verschiedene S3-864-Grafikkarten den Clock-Chip »ICD2061A« benutzen; deshalb sollten wir in XF86Config die Zeile:

	ClockChip "icd2061a"

statt der Clocks-Zeile eintragen. Ebenso wie die Clocks-Zeile sollte auch diese Zeile im Abschnitt Devices hinter Chipset stehen.

Einige beschleunigte Karten erfordern außerdem einen Eintrag in der Datei XF86Config , der den benutzten RAMDAC-Typ bestimmt; dies geschieht in der Zeile Ramdac. In der Manual-Page zu XF86_Accel wird diese Option beschrieben. Meistens wird der X-Server in der Lage sein, den RAMDAC-Typ korrekt zu ermitteln.

Einige Typen von Grafikkarten erwarten im Abschnitt Devices der Datei XF86Config Einträge für bestimmte Optionen. Sie finden eine Beschreibung dieser Optionen in der Manual-Page zum Server und in den Dateien wie z.B. README.cirrus oder README.S3 . Diese Optionen werden in einer Option-Zeile aktiviert. Die Karte #9 GXE 64 z.B. erfordert zwei Optionen:

	Option "number_nine"
	Option "dac_8_bit"

In der Regel wird der X-Server auch ohne diese Optionen funktionieren, aber nur mit denselben erbringt Ihre Grafikkarte die volle Leistung. Es gibt mehr solcher Optionen, als wir hier auflisten können, und sie beziehen sich immer auf eine bestimmte Grafikkarte. Falls Sie solche Optionen benutzen müssen -- fürchten Sie sich nicht: In den Manual-Pages zum X-Server und in verschiedenen Dateien im Verzeichnis /usr/X11R6/lib/X11/doc finden Sie Details zu diesem Thema.

Wenn Sie fertig sind, sollten Sie einen Devices-Abschnitt erstellt haben, der etwa so aussieht:

Section "Device" 
	# Device section for the #9 GXE 64 only !
	Identifier "#9 GXE 64"
	Chipset "mmio_928"
	ClockChip "icd2061a"
	Option "number_nine"
	Option "dac_8_bit"
EndSection

Dieser Devices-Eintrag gilt nur für eine bestimmte Grafikkarte, die #9 GXE 64. Wir zeigen diesen Abschnitt hier nur als ein Beispiel. Die meisten Grafikkarten brauchen eine Clocks-Zeile statt der hier gezeigten ClockChip-Zeile.

Es gibt weitere Optionen, die im Abschnitt Devices stehen können. Schlagen Sie die Details in der Manual-Page zum X-Server nach; für die meisten Systeme sollte allerdings das ausreichen, was wir hier besprochen haben.

Die Arbeit unter XFree86

Sobald Ihre Datei XF86Config fertiggestellt ist, können Sie den X-Server starten und sich auf eine Spritztour begeben. Achten Sie darauf, daß /usr/X11R6/bin in Ihrem Pfad eingetragen ist.

Mit folgendem Befehl starten Sie XFree86:

startx

startx ist ein Front-End zu xinit (das Sie vielleicht von anderen UNIX-Systemen her gewohnt sind).

Dieser Befehl ruft den X-Server auf und führt die Befehle aus, die in der Datei .xinitrc in Ihrem Home-Verzeichnis stehen. .xinitrc ist einfach ein Shell-Skript, das einige X-Clients aufruft. Falls diese Datei nicht existiert, wird als Voreinstellung die Systemdatei /usr/X11R6/lib/X11/xinit/xinitrc benutzt.

Die übliche .xinitrc -Datei sieht etwa so aus:

#!/bin/sh

xterm -fn 7x13bold -geometry 80x32+10+50 &
xterm -fn 9x15bold -geometry 80x34+30-10 &
oclock -geometry 70x70-7+7 &
xsetroot -solid midnightblue &

exec twm

Dieses Skript ruft zwei xterm -Clients sowie die Uhr oclock auf und stellt den Hintergrund des Hauptfensters in mitternachtblau (midnightblue) dar. Anschließend wird der Fenster-Manager twm gestartet. Beachten Sie, daß twm mit dem Shell-Befehl exec ausgeführt wird; das hat zur Folge, daß der xinit -Prozeß durch twm ersetzt wird. Der X-Server wird sich deshalb beenden, sobald der twm -Prozeß beendet ist. Sie können die Menüs im Hauptfenster benutzen, um twm zu beenden; drücken Sie dazu die linke Maustaste, wenn der Mauszeiger auf dem Bildschirmhintergrund positioniert ist und wählen Sie aus dem Pop-up-Menü, das dann erscheint, den Punkt Exit Twm.

Achten Sie darauf, daß der letzte Aufruf in .xinitrc mit exec erfolgt und nicht als Hintergrundprozeß gestartet wird (also kein Kaufmanns-Und am Zeilenende). Der X-Server würde sich sonst beenden, sobald alle Clients aus der Datei .xinitrc aufgerufen wurden. Sie können X auch verlassen, indem Sie gleichzeitig die Tasten CTRL-ALT-BACKSPACE drücken. Damit beenden Sie den X-Server direkt und verlassen das X Window System.

Wir haben hier eine sehr, sehr einfache Konfiguration der Arbeitsfläche besprochen. Wenn Sie einige Arbeit in Ihre .xinitrc -Datei investieren möchten, stehen Ihnen etliche nette Programme und Anpassungsmöglichkeiten zur Verfügung. So können Sie z.B. den virtuellen Desktop des Fenster-Managers fvwm nutzen und Farben, Fonts, Fenstergrößen und -positionen gestalten, wie es Ihr Herz begehrt. Auch wenn das X Window System auf den ersten Blick vielleicht sehr einfach aussieht, ist es doch ziemlich komplex, wenn Sie erst einmal anfangen, eine Konfiguration nach Ihren Wünschen zu erstellen.

Für den Fall, daß Sie bisher noch nicht mit dem X Window System gearbeitet haben, möchten wir dringend empfehlen, daß Sie sich ein Werk wie z.B. The X Window System User's Guide besorgen.

Probleme mit XFree86

Oft stellt sich beim ersten Starten des X-Servers heraus, daß noch nicht alles richtig funktioniert. Fast immer liegt das Problem in der Datei XF86Config . Oft stimmen die Sync-Signale des Monitors nicht oder die Dot-Clocks der Grafikkarte sind verstellt. Wenn das Bild scheinbar rollt oder die Ränder unscharf sind, ist das ein klarer Hinweis auf verkehrtes Timing des Monitors oder falsche Dot-Clocks. Achten Sie auch darauf, daß der richtige Chipsatz für Ihre Grafikkarte spezifiziert ist; überprüfen Sie auch die anderen Optionen im Abschnitt Device der Datei XF86Config . Vergewissern Sie sich, daß Sie den richtigen X-Server benutzen und daß /usr/X11R6/bin/X ein symbolischer Link auf diesen Server ist.

Wenn alle Stricke reißen, können Sie noch versuchen, X »nackt«; zu starten; also mit einem Befehl wie:

X > /tmp/x.out 2>&1

Beenden Sie den X-Server dann (mit der Tastenkombination CTRL-ALT-BACKSPACE) und sehen Sie sich den Inhalt von /tmp/x.out an. Sie finden dort alle Warnungen und Fehlermeldungen des X-Servers wie z.B. eine Grafikkarte ohne eine Dot-Clock, die zu den möglichen Auflösungen des Monitors paßt.

In der Datei VideoModes.doc aus der XFree86-Distribution finden Sie einige Hinweise dazu, wie Sie die Werte in Ihrer XF86Config verändern können.

Denken Sie auch daran, daß Sie mit den Tastenkombinationen CTRL-ALT + der Plus- oder Minustaste aus dem Ziffernblock zwischen den Grafikmodi hin- und herschalten können, die in der Modes-Zeile im Abschnitt Screen der Datei XF86Config eingetragen sind. Falls die höchste Auflösung irgendwie merkwürdig aussieht, schalten Sie auf eine niedrigere Auflösung um. Vielleicht erfahren Sie dabei wenigstens, daß diese Abschnitte Ihrer X-Konfiguration in Ordnung sind.

Überprüfen Sie auch die Einstellungen für die horizontale und vertikale Bildlage an Ihrem Monitor; oft müssen diese beim Start von X angepaßt werden. Wenn das Bild z.B. leicht nach einer Seite verschoben ist, läßt sich das meist per Einstellung am Monitor beheben.

Die USENET-Newsgruppe comp.windows.x.i386unix widmet sich ganz der Diskussion rund um XFree86. Vielleicht ist es eine gute Idee, in dieser News-Gruppe nach Beiträgen Ausschau zu halten, die sich auf Ihre Grafikkonfiguration beziehen -- eventuell stellen Sie fest, daß jemand anderes dieselben Probleme hatte wie Sie.

X konfigurieren

Bevor wir auf einige Anwendungsprogramme eingehen, die unter X laufen, sollten wir noch die Grundlagen zur Konfiguration von X besprechen; es muß nicht sein, daß Sie sich mit der (oft unattraktiven) Standardkonfiguration vieler Systeme zufriedengeben.

xinit

Sie starten X mit dem Befehl startx . Dies ist ein Front-End für xinit , das Programm, das den X-Server (mit brauchbaren Einstellungen) und verschiedene X-Clients aufruft. xinit führt (via startx ) das Shell-Skript .xinitrc aus Ihrem Home-Verzeichnis aus. Dieses Skript enthält einfach die Befehle, die Sie beim Start von X aufrufen möchten -- z.B. xterm , xclock usw. Wenn Sie keine Datei .xinitrc angelegt haben, wird statt dessen als Voreinstellung die Systemdatei /usr/lib/X11/xinit/xinitrc benutzt.

Hier zeigen wir Ihnen ein Beispiel für eine .xinitrc -Datei und erklären, was darin passiert. Sie können dieses Beispiel als Ihre eigene .xinitrc übernehmen oder auch mit der Systemdatei xinitrc beginnen.

1  #!/bin/sh
2  # Sample .xinitrc shell script
3  
4  # Start xterms
5  xterm -geometry 80x40+10+100 -fg black -bg white &
6  xterm -geometry -20+10 -fn 7x13bold -fg darkslategray -bg white &
7  xterm -geometry -20-30 -fn 7x13bold -fg black -bg white &
8  
9  # Other useful X clients 
10 oclock -geometry 70x70+5+5 & 
11 xload -geometry 85x60+85+5 &
12 xbiff -geometry +200+5 &
13 xsetroot -solid darkslateblue &
14 
15 # Start the window manager
16 exec fvwm

Die Datei sollte weitgehend selbsterklärend sein, selbst wenn Sie noch keine Erfahrung mit X haben. Die ersten Zeile kennzeichnet sie als Shell-Skript, die zweite ist einfach ein Kommentar. In den Zeilen 5 bis 7 werden drei xterm -Clients gestartet (erinnern Sie sich, daß xterm ein Client zur Terminalemulation ist). In den Zeilen 10 bis 13 werden weitere Clients aufgerufen, und in Zeile 16 erfolgt der Start von fvwm , dem Fenster-Manager.

Wenn Sie startx mit der hier gezeigten Datei .xinitrc aufrufen, erhalten Sie einen Bildschirm, der etwa so aussieht wie Abbildung 5--2. . (1)

Abbildung 5-2. Der Bildschirm, den die Beispieldatei .xinitrc erzeugt

Wir wollen uns das genauer anschauen. In Zeile 5 wird xterm mit verschiedenen Optionen aufgerufen, nämlich -geometry , -fg und -bg . Die meisten X-Clients unterstützen neben einigen anderen auch diese »Standard«-Optionen. Mit der Option -geometry haben Sie die Möglichkeit, Größe und Anordnung von Fenstern auf dem Bildschirm zu bestimmen. Die Anweisung hat folgendes Format:

xwertxywert+xabstand+yabstand

Die Option -geometry 80x40+10+100 bewirkt, daß ein Fenster mit einer Breite von 80 Zeichen und einer Höhe von 40 Zeichen an der Position (10,100) auf dem Bildschirm plaziert wird (wobei (0,0) der linken oberen Ecke entspricht). Beachten Sie, daß xterm die Fenstergröße in Zeichen mißt und nicht in Pixeln. Der Font, der hier benutzt wird, entscheidet über die tatsächliche Größe des Fensters.

Mit den Argumenten -fg und -bg bestimmen Sie die Vordergrund- (Text-) und Hintergrundfarbe des xterm -Fensters. Wir haben hier die eher langweilige Kombination schwarz und weiß gewählt, die sowohl auf Farb- als auch auf Schwarz-Weißmonitoren funktionieren sollte. Unter X werden die Farben in der Regel mit ihren Namen bezeichnet, aber Sie können auch Ihre eigenen RGB-Werte definieren.

Eine Liste der Farbnamen (samt der dazugehörenden RGB-Werte) finden Sie in der Datei /usr/lib/X11/rgb.txt . (Wenn Sie xcolors aufrufen, werden diese Farben mit ihren Namen angezeigt.)

In Zeile 6 wird ein weiteres xterm gestartet, allerdings mit anderen Argumenten:

xterm -geometry -20+10 -fn 7x13bold -fg darkslategray -bg white &

Als Fenstergeometrie wird hier nur -20+10 angegeben. Ohne ausdrückliche Angabe der Größe wird xterm die voreingestellten Werte benutzen (meist 80x25). Weiterhin fällt auf, daß der xabstand mit einem - statt einem + versehen ist. Das hat zur Folge, daß das Fenster 20 Pixel vom rechten Rand des Bildschirms entfernt plaziert wird. Ebenso wird die Geometrieangabe -20-30 (wie in Zeile 7) das Fenster 20 Pixel vom rechten Rand und 30 Pixel vom unteren Rand des Bildschirms öffnen. Der Vorteil ist, daß die Anordnung der Fenster auf diese Weise in geringerem Maße von der speziellen Auflösung abhängig ist, die Sie benutzen.

Die Option -fn in den Zeilen 6 und 7 bestimmt, daß xterm den Font 7x13bold benutzen soll. Wenn Sie xlsfonts aufrufen, erhalten Sie eine Liste der auf Ihrem System vorhandenen Fonts; der X-Client xfontsel ermöglicht die interaktive Auswahl eines Fonts -- wir kommen weiter unten noch darauf zurück.

In Zeile 10 wird der Client oclock gestartet, der eine analoge Uhr anzeigt. Zeile 11 startet xload , eine grafische Anzeige der durchschnittlichen Systemauslastung (Anzahl der aktiven Prozesse), die sich im Laufe der Zeit ändert. In Zeile 12 rufen wir xbiff auf, das Ihnen anzeigt, ob E-Mail eingetroffen ist. In Zeile 13 lassen wir den langweiligen grauen Hintergrund verschwinden und stellen ein knalliges darkslateblue (dunkles Schieferblau) ein. (Fürchten Sie sich nicht; so macht X einfach mehr Spaß.)

Sie werden bemerkt haben, daß in den Zeilen 5 bis 13 die Clients im Hintergrund gestartet werden (das Kaufmanns-Und am Zeilenende sorgt dafür). Wenn Sie die Clients nicht im Hintergrund starteten, würde xinit das erste xterm aufrufen, darauf warten, daß es beendet wird (in der Regel nachdem Sie sich ausloggen), dann das nächste xterm aufrufen usw. Mit Hilfe der Kaufmanns-Und lassen Sie alle Clients gleichzeitig arbeiten.

Und was passiert in Zeile 16? Hier starten wir fvwm , einen Fenster-Manager, der auf vielen Linux-Systemen benutzt wird. Wir haben bereits erwähnt, daß der Fenster-Manager das Aussehen der Fenster bestimmt, das Verschieben von Fenstern mit der Maus ermöglicht usw. Allerdings wird fvwm mit dem Befehl:

exec fvwm

gestartet. Das hat zur Folge, daß der Prozeß fvwm den Prozeß xinit ersetzt . Auf diese Weise beendet sich der X-Server, (2) sobald Sie fvwm beenden. Dies ist dasselbe wie, allerdings einfacher als die Tastenkombination CTRL-ALT-BACKSPACE.

Ganz allgemein sollten Sie alle X-Clients in .xinitrc mit einem Kaufmanns-Und am Zeilenende starten und den Fenster-Manager am Ende der Datei mit exec aufrufen. Es gibt natürlich noch andere Wege ans Ziel, aber viele Benutzer gehen genau so vor.

Wenn Sie die Manual-Pages zu xterm und anderen X-Clients lesen, werden Sie weitere Optionen für die Befehlszeile finden, die wir hier nicht besprochen haben. Es gilt, was wir bereits gesagt haben: Fast alles unter X ist konfigurierbar. Der fvwm benutzt eine eigene Konfigurationsdatei, .fvwmrc , die in der dazugehörigen Man-Page beschrieben wird. (Falls Sie keine .fvwmrc -Datei einrichten, wird statt dessen die Systemdatei /usr/lib/X11/fvwm/system.fvwmrc benutzt.)

In den Manual-Pages und in Büchern zum Thema X (wie z.B. O'Reillys X Window System User's Guide ) finden Sie weitere Hinweise zur Konfiguration der einzelnen Clients.

Die Ressource-Datenbank von X

Sie werden nicht allzu lange mit X arbeiten können, ohne auf die X-Resources zu stoßen -- Sie finden diesen Begriff in fast jeder Manual-Page. Mit den X-Resources stehen Ihnen flexiblere und umfangreichere Möglichkeiten zur Konfiguration von X-Clients zur Verfügung, als solche Optionen auf der Befehlszeile wie -geometry und -fg bieten. Die X-Resources machen es möglich, daß Sie für ganze Gruppen von Clients die Voreinstellungen bestimmen; so könnten Sie z.B. den Font für alle Aufrufe von xterm auf 7x13bold voreinstellen, statt das jedesmal in der Befehlszeile anzugeben.

Zwei Schritte sind erforderlich, um die X-Resources zu benutzen. Zunächst müssen Sie eine Datei erstellen, die die Voreinstellungen für Ihre X-Resources enthält. Diese Datei trägt in der Regel den Namen .Xdefaults und steht im Home-Verzeichnis. Außerdem müssen Sie noch mit dem Befehl xrdb die X-Resources in den Server laden, damit Sie benutzt werden können. Im allgemeinen wird xrdb in der Datei .xinitrc vor dem Start irgendwelcher Clients aufgerufen.

Wir werden anhand der Befehlszeilen-Optionen für die Clients aus der oben gezeigten .xinitrc -Datei in einem einfachen Beispiel die Benutzung der X-Resources demonstrieren. Anschließend zeigen wir Ihnen, wie die Datei .xinitrc für die Arbeit mit den X-Resources angepaßt werden muß.

Vorab noch ein paar Worte zur Arbeitsweise der Ressourcen. Jede X-Anwendung ist Teil einer bestimmten Anwendungsklasse (application class). So gehört z.B. xterm zur Klasse XTerm. Sowohl xclock als auch oclock sind der Klasse Clock zugeordnet. Wenn Sie die Ressourcen für die Klasse Clock festlegen, wirkt sich das auf alle Applikationen aus, die zu dieser Klasse gehören -- da xclock (eine quadratische Analoguhr) und oclock (eine runde Analoguhr) sich ähnlich sind, gehören sie derselben Klasse an und benutzen dieselben Ressourcen. Die meisten Anwendungen gehören als einziges Mitglied ihrer eigenen Klasse an -- so ist z.B. xload das einzige Mitglied der Klasse XLoad. Sollte allerdings eine andere Anwendung auftauchen, die Ähnlichkeiten mit xload hat, so könnte es sein, daß auch diese Anwendung ein Mitglied der Klasse XLoad wird. Indem die X-Clients einer Anwendungsklasse zugeordnet werden, lassen sich die Res

Die »Standard«-X-Clients benutzen solche Ressourcen wie foreground, background, geometry und font. Viele X-Clients kennen außerdem noch eigene Ressourcen -- so benutzt z.B. xterm die Ressource logFile, so daß Sie eine Datei bestimmen können, in der die Terminalsitzung protokolliert wird. Auch die vorhandenen Ressourcen zu jedem X-Client werden in den entsprechenden Manual-Pages aufgeführt.

Auch die Ressourcen selbst werden in eine Klassenhierarchie eingeordnet. So ist z.B. die Ressource background ein Mitglied der Klasse Background. Die Ressource-Klassen machen es möglich, daß viele einzelne Ressourcen Mitglied derselben Klasse sind, so daß die Ressourcen einer ganzen Klasse mit Werten versehen werden können. Ein Beispiel: Die Ressource background bestimmt in der Regel die Standardfarbe für den Bildschirmhintergrund. Wenn ein Anwendungsprogramm allerdings verschiedene Bildschirmseiten darstellt ist es vielleicht wünschenswert, jeder Seite eine andere Hintergrundfarbe zuzuordnen. Sie könnten also die Ressourcen background1, background2 usw. einführen -- für jede Bildschirmseite eine; aber alle diese Ressourcen wären Mitglied der Ressourcen-Klasse Background. Wenn Sie den Wert für die Klasse Background bestimmen, legen Sie auch die Werte für alle Ressourcen in dieser Klasse fest.

Normalerweise brauchen Sie sich mit dem Unterschied zwischen den Ressourcen-Klassen und den Ressourcen innerhalb einer Klasse nicht zu befassen. Meistens ist es einfacher, die Werte der Ressourcen für eine ganzen Klasse festzulegen (z.B. Background), als die Werte einzelner Ressourcen in dieser Klasse.

Lassen Sie uns jetzt untersuchen, wie die Werte für Ressourcen in der Ressource-Datenbank festgelegt werden. Ein vollständiger Ressource-Eintrag hat das Format: (3)

(AnwendungsKlasse|anwendungsName)*(RessourceKlasse|ressourceName):wert

Der senkrechte Strich bedeutet, daß Sie »eine der Möglichkeiten wählen« können. Nehmen wir an, daß Sie die Hintergrundfarbe eines xterm -Fensters einstellen möchten. Der komplette Ressource-Eintrag könnte so aussehen:

xterm*background: darkslategray

Damit bestimmen Sie allerdings nur eine bestimmte Hintergrund-Ressource (und nicht alle Ressourcen, die möglicherweise der Klasse Background angehören); dies auch nur, wenn der Client xterm auch als xterm aufgerufen wird (mehr zu diesem Punkt weiter unten). Deshalb sollte man vielleicht besser die Ressource-Klasse benutzen:

XTerm*Background: darkslategray

Dieser Eintrag bezieht sich auf alle xterm -Clients sowie alle Ressourcen der Klasse Background, die von xterm benutzt werden.

Lassen Sie uns jetzt die Optionen aus der oben gezeigten .xinitrc -Datei als Ressourcen formulieren. Legen Sie in Ihrem Home-Verzeichnis die Datei .Xdefaults an. Analog zu der Datei .xinitrc weiter oben sollten Sie hier eintragen:

1  Clock*Geometry:         70x70+5+5
2  XLoad*Geometry:         85x50+85+5
3  XBiff*Geometry:          +200+5
4 
5  ! Defaults for all xterm clients
6  XTerm*Foreground:       white
7  XTerm*Background:       black
8
9  ! Specific xterms
10 xterm-1*Geometry:       80x40+10+110
11 
12 xterm-2*Geometry:       -20+10
13 xterm-2*Font:           7x13bold
14 xterm-2*Background:     darkslategray
15 
16 xterm-3*Geometry:       80x25-20-30
17 xterm-3*Font:           7x13bold

In den Zeilen 1 bis 3 wird die Ressource-Klasse Geometry für die Anwendungs-Klassen Clock, XLoad und XBiff bestimmt. In den Zeilen 6 und 7 legen wir die Ressource-Klassen Foreground und Background für die ganze Klasse XTerm fest. Alle xterm -Clients werden diese Werte als Voreinstellung für Foreground und Background benutzen.

In den Zeilen 10 bis 17 bestimmen wir die Ressourcen für die einzelnen Aufrufe von xterm . (Dies ist notwendig, weil die xterm s verschieden sind; sie haben z.B. unterschiedliche Geometrie-Werte.) Wir haben die verschiedenen xterm -Clients in diesem Beispiel mit xterm-1, xterm-2 und xterm-3 bezeichnet. Wie Sie sehen, haben wir in den Zeilen 10, 12 und 16 jeweils die Geometrie-Werte definiert. Für xterm-2 und xterm-3 haben wir außerdem die Klasse Font bestimmt; für xterm-2 bestimmen wir zusätzlich darkslategray als Wert für die Klasse Background.

Die Regeln für die Zuordnung von X-Ressourcen (binding rules) sind so gestaltet, daß bestimmte Zuordnungen den anderen übergeordnet sind. Für unser Beispiel bedeutet dies, daß die Festlegung einer Ressource für einen bestimmten Aufruf von xterm (wie »xterm-2*Background« in Zeile 14) Vorrang hat vor der Festlegung einer Ressource für die Klasse XTerm insgesamt (XTerm*Background in Zeile 7). Anders ausgedrückt: Die Zuordnungen für eine Anwendungs- oder Ressource- Klasse haben eine niedrigere Priorität als die Zuordnungen für eine bestimmte Instanz innerhalb dieser Klasse. Auf diese Weise haben Sie die Möglichkeit, Voreinstellungen für die ganze Klasse zu treffen, diese Standardwerte dann aber für bestimmte Instanzen der Klasse zu überschreiben.

Lassen Sie uns sehen, welche Änderungen wir in .xinitrc vornehmen müssen, um mit den gerade definierten X-Ressourcen arbeiten zu können. Als erstes müssen wir den Befehl xrdb einfügen, der die Anwendungs-Ressourcen in den Server lädt. Außerdem können wir die verschiedenen Optionen für die Befehlszeilen entfernen, weil diese durch die Ressourcen ersetzt werden. Also:

#!/bin/sh
# Sample .xinitrc shell script
# Load resources
xrdb -load $HOME/.Xdefaults

# Start xterms
xterm -name "xterm-1" &
xterm -name "xterm-2" &
xterm -name "xterm-3" &

# Other useful X clients
oclock &
xload &
xbiff &
xsetroot -solid darkslateblue &

# Start the window manager
exec fvwm

Wie Sie sehen, können wir mit dem Argument -name hinter den drei Aufrufen von xterm bestimmen, unter welchem Namen xterm die X-Ressourcen suchen wird. Die meisten X-Clients kennen das Argument -name nicht; man benutzt dann den Namen, unter dem der Client gestartet wird. Für die zahlreichen Benutzer, die mehr als ein xterm auf einmal aufrufen, ist es allerdings von Vorteil, wenn sie beim Bestimmen der Ressourcen die xterm s auseinanderhalten können.

Sie sollten jetzt in der Lage sein, Ihre X-Arbeitsumgebung bis zu einem gewissen Grade anzupassen. Selbstverständlich hängt die Fähigkeit, X zu konfigurieren, zum Teil auch davon ab, wie sehr Sie mit den vielen X-Anwendungen und dem Fenster-Manager (sowie seiner Konfiguration) vertraut sind. Im Rest dieses Abschnitts werden wir einige X-Anwendungen für Linux vorstellen und einen Fenster-Manager, den fvwm , im Detail besprechen.

Der Fenster-Manager fvwm

Der Fenster-Manager, für den Sie sich entscheiden, bestimmt in hohem Maße das Look-and-Feel Ihrer X-Umgebung. Viele Fenster-Manager bieten auch Menüs an, aus denen heraus Sie mit der Maus andere X-Anwendungen aufrufen können sowie eine virtuelle Arbeitsfläche, die Ihre Arbeitsfläche insgesamt enorm vergrößern kann.

fvwm ist ein Fenster-Manager für eine virtuelle Arbeitsfläche (desktop), der von vielen Linux-Benutzern eingesetzt wird. Er beruht zum Teil auf dem Code des twm , dem klassischen Fenster-Manager, der mit der X11-Distribution des MIT ausgeliefert wird. fvwm hat man allerdings so kompakt gestaltet, daß er nur etwa halb so viel Arbeitspeicher benötigt wie twm -- ein großer Vorteil für Linux-Systeme mit acht Megabytes physikalischem RAM oder weniger. fvwm kennt viele besondere Möglichkeiten, über die andere Fenster-Manager nicht verfügen; deshalb, und weil er speziell für Linux entwickelt wurde, wollen wir ihn hier besprechen.

Anders als twm und einige andere Fenster-Manager wird fvwm ständig weiterentwickelt. Das hat zur Folge, daß ein paar der Punkte, die wir hier besprechen, in einer neueren Version der Software eventuell nicht mehr in derselben Form vorhanden sind. In der Manual-Page zu fvwm können Sie nachlesen, ob die hier besprochenen Features enthalten sind.

fvwm bietet unter anderem:

Zu den herausragenden Besonderheiten von fvwm gehört der virtuelle Desktop , der die Anordnung von Fenstern auf einer Fläche ermöglicht, die viel größer ist als die sichtbare Bildschirmfläche. Mit der Maus können Sie zwischen verschiedenen Bereichen des virtuellen Desktops hin- und herschalten (blättern). Wenn Sie den Mauszeiger z.B. an den rechten Rand des Bildschirms bewegen, wird die Arbeitsfläche um eine Bildschirmbreite nach links verschoben, so daß weitere Fenster im Blickfeld erscheinen. Auf diese Weise können Sie die Fenster auf einer Fläche anordnen, die größer ist als Ihr Bildschirm, wobei Sie immer einen Ausschnitt aus dem gesamten Desktop vor Augen haben.

Die Abbildung 5--2. im Abschnitt » xinit « zeigt ein Beispiel für eine Arbeitsfläche. Jedes Fenster hat einen dekorativen Rahmen mit konfigurierbaren Schaltflächen (Buttons) darin, der von fvwm erzeugt wird. Weiter unten in diesem Abschnitt werden wir zeigen, wie Sie die Rahmen nach Ihren Wünschen gestalten können.

Eines der Fenster in Abbildung 5--2. verdeckt gerade den Pager, der den gesamten vrtuellen Desktop aus der »Vogelperspektive« zeigt. Mit dem Pager können Sie außerdem Fenster auf der virtuellen Arbeitsfläche verschieben und auswählen, welcher Ausschnitt des Desktops gerade angezeigt werden soll.

fvwm konfigurieren

Wenn Sie den fvwm benutzen wollen, müssen Sie in Ihrem Home-Verzeichnis die Konfigurationsdatei .fvwmrc anlegen. In diesem Abschnitt wollen wir einige der Möglichkeiten des fvwm beschreiben und zeigen, wie Sie diese von .fvwmrc aus nutzbar machen. Vielleicht sollten die meisten dieser Punkte in Ihrer eigenen .fvwmrc enthalten sein, damit Sie die Fähigkeiten des Fenster-Managers optimal ausnutzen können.

Wir müssen darauf hinweisen, daß die verschiedenen Versionen von fvwm für einige der Optionen eine unterschiedliche Syntax benutzen; falls Sie auf Probleme stoßen, sollten Sie die Manual-Page lesen. Vielleicht fällt der Start leichter, wenn Sie die Systemdatei .fvwmrc als Ausgangspunkt benutzen (steht in der Regel in /usr/lib/X11/system.fvwmrc ).

Die grundlegenden Anpassungen für fvwm beziehen sich auf die Farben und Fonts der Fensterrahmen und Menüs. Sie könnten in Ihre Datei .fvwmrc z.B. folgendes eintragen:

# Set up colors
StdForeColor            white
StdBackColor            midnightblue
HiForeColor             white
HiBackColor             red
Font                    -adobe-helvetica-medium-r-normal-*-*-120-*
WindowFont              -adobe-helvetica-bold-r-normal-*-*-120-*

Die Wirkung einiger Befehle hängt davon ab, welches Fenster im Fokus ist, d.h., welches Fenster gerade Eingaben entgegennimmt. (Meistens bewegen Sie einfach die Maus in ein Fenster, um es in den Fokus zu bringen.) Für die Fenster außerhalb des Fokus, für Menüs und den Pager werden die Farben StdForeColor und StdBackColor benutzt; das Fenster im Fokus hat die Farben HiForeColor und HiBackColor. Die Vordergrundfarbe wird in der Regel für den Text benutzt (also für Fenster-Namen usw.), die Hintergrundfarbe für den Fensterrahmen selbst. Seien Sie kreativ! WindowFont bezeichnet den Font in der Titelzeile der Fenster; Font wird für Menüs benutzt (und für Icons, solange Sie nichts anderes bestimmen).

Mit dem Befehl:

eggplant$ showrgb | more

erhalten Sie eine Liste der auf Ihrem System definierten Farben.

Die meisten fvwm -Benutzer arbeiten auch mit dem virtuellen Desktop. Um diese Arbeitsfläche zu konfigurieren, sollten Sie etwa folgende Zeilen in Ihre .fvwmrc einfügen:

# Configure virtual desktop
DeskTopSize   3x3
DeskTopScale  50
Pager         -10 -10
EdgeScroll    100 100

Damit legen wir fest, daß die virtuelle Arbeitsfläche (DeskTopSize) je drei Bildschirme hoch und breit sein soll. Mit DeskTopScale bestimmen wir das Größenverhältnis für den Pager; in diesem Beispiel sollen die Fenster im Pager mit 1/50 der tatsächlichen Größe dargestellt werden. Außerdem wird der Pager in der unteren rechten Ecke des Bildschirms aktiviert. Das Pager-Fenster gewährt uns den Blick auf den kompletten virtuellen Desktop; ein Mausklick im Pager-Fenster bringt den entsprechenden Ausschnitt der Arbeitsfläche auf den Bildschirm.

EdgeScroll gibt den Prozentsatz an, um den der Bildschirm scrollen soll, wenn der Mauszeiger den Bildschirmrand erreicht. Die Angabe EdgeScroll 100 100 bewirkt, daß der Mauszeiger am Bildschirmrand die Arbeitsfläche um eine Bildschirmgröße weiterbewegt; das sieht dann so aus, als ob auf einen völlig anderen Bildschirm umgeschaltet würde. Auf diese Weise können Sie Ihre Fenster auf der gesamten virtuellen Arbeitsfläche anordnen und die Maus benutzen, um zwischen den Fenstern umzuschalten.

Mit der Anweisung Style können Sie eine ganze Reihe von Attributen für Ihre Fenster setzen. Wenn z.B. xbiff immer die anderen Fenster auf dem Bildschirm überlagern soll, tragen Sie ein:

Style "XBiff" StaysOnTop

Danach hat kein anderes Fenster mehr die Chance, xbiff zu verdecken. Neben StaysOnTop kennt Style noch folgende Optionen:

Style kann z.B. die Namen der Fenster oder Anwendungsklassen als Argument mitbekommen. ältere Versionen von fvwm kannten die Anweisung Style nicht. Statt dessen benutzen sie eine Reihe von Anweisungen wie StaysOnTop, NoTitle usw. Diese haben folgendes Format:

StaysOnTop XBiff

Etliche der Anweisungen in .fvwmrc beziehen sich auf Icons . Wie bei anderen Fenster-Managern auch, können Sie unter fvwm ein Fenster zu einem Icon verkleinern, das ein kleines Sinnbild mit dem Namen des Fensters und eventuell dem Fenstertyp anzeigt. fvwm unterstützt sowohl schwarz-weiße als auch farbige Icons.

IconFont    -adobe-helvetica-medium-r-*-*-*-120-*
IconPath    /usr/include/X11/bitmaps/
PixmapPath  /usr/include/X11/pixmaps/

IconBox     700 0 1080 50
Style "*" Icon unknown.xpm
Style "XTerm" Icon xterm.xpm
Style "Mosaic" Icon mosaic.xpm

IconFont bezeichnet den Font, der für Icons benutzt wird. IconPath und PixmapPath enthalten durch Doppelpunkte getrennte Pfadnamen, unter denen Icons abgelegt sind. Dabei verweist IconPath auf Bitmaps (XBM) und PixmapPath zeigt auf farbige Pixmaps (XPM).

IconBox gibt einen Bereich an, in dem die Icons dargestellt werden sollen; Sie können bis zu vier IconBoxes definieren. In diesem Fall sollten Sie die Icons in einem unsichtbaren Bereich unterbringen, dessen obere linke Ecke die Koordinaten (700,0) und dessen untere rechte Ecke die Koordinaten (1080,50) hat.

Unter IconBox stehen verschiedene Style-Anweisungen, die Icons mit Fenstern verknüpfen. Für unser Beispiel wollen wir alle XTerm-Fenster die Datei xterm.xpm und Mosaic die Datei mosaic.xpm benutzen lassen. Der Name der Icon-Datei kann als kompletter Pfadname oder relativ zu IconPath oder PixmapPath angegeben werden. Mit dem Befehl:

Style "*" Icon unknown.xpm

wird das Icon unknown.xpm als Standard-Icon gewählt.

Falls Ihr fvwm die Anweisung Style nicht unterstützt, benutzen Sie solche Anweisungen wie:

Icon "" unknown.xpm
Icon "XTerm" xterm.xpm
Icon "Mosaic" mosaic.xpm
Weitere Anpassungen

Die meisten Benutzer von fvwm haben mindestens die hier vorgestellten Optionen in ihrer Datei .fvwmrc . fvwm hat aber darüber hinaus die Fähigkeit, die Menüs auf dem Desktop zu konfigurieren, Funktionen über die Schaltflächen in der Fenstertitelzeile aufzurufen usw. Wir werden in diesem Abschnitt einige dieser erweiterten Möglichkeiten vorstellen.

Wir wollen damit beginnen, daß wir die Pop-up-Menüs des fvwm konfigurieren, die nach einem Mausklick auf das Hauptfenster erscheinen. Aus diesen Menüs heraus können Sie Befehle ausführen, die Fenster verändern usw.

Popup "Xclients"
  Title   "Xclients"
  Exec    "Mosaic"        exec Mosaic &
  Exec    "xterm"         exec xterm &
  Exec    "emacs"         exec emacs -w &
  Nop     ""
  Exec    "eggplant"      exec xterm -e rlogin eggplant &
  Exec    "papaya"        exec xterm -e rlogin papaya &
  Nop     ""
  Exec    "screensaver"   exec xscreensaver-command -activate &
  Exec    "xcalc"         exec xcalc &
  Exec    "xman"          exec xman &
  Exec    "xlock"         exec xlock -mode rotor &
EndPopup

Zwischen den Zeilen Popup und EndPopup wird das Menü zusammengestellt. Jedes Menü bekommt einen Namen, unter dem es später angeprochen wird (in diesem Beispiel »Xclients«).

Das Format ist ziemlich leicht zu durchschauen. Die Anweisung Title gibt dem Menü einen Namen und Nop bewirkt eine Leerzeile zwischen Menüeinträgen. Die Funktion Exec führt einen Befehl aus, wenn dieser Menüpunkt gewählt wird. Das erste Argument zu Exec ist der Name, den dieser Menüpunkt trägt; die anderen Argumente legen fest, welcher Befehl ausgeführt werden soll.

Wir wollen ein zweites Menü namens fvwm erstellen, das die Funktionen zur Manipulation der fvwm -Fenster enthält.

Popup "Fvwm"
  Title   "Window Ops"
  Move    "Move Window"
  Resize  "Resize Window"
  Raise   "Raise Window"
  Lower   "Lower Window"
  Iconify "Iconify Window"
  Stick   "Stick Window"
  Nop     " "
  Popup   "Xclients"  Xclients
  Nop     " "
  Destroy "Destroy Window"
  Delete  "Delete Window"
  Nop     " "
  Exec    "Load Xdefaults"   exec xrdb -load $HOME/.Xdefaults
  Restart "Restart Fvwm"     fvwm
  Restart "Start twm"        twm
  Quit "Quit Fvwm"   
EndPopup

Die internen Funktionen Move, Resize, Lower usw. werden in der Manual-Page zu fvwm beschrieben. Eine wichtige Funktion ist Popup, mit der ein vorab definiertes Pop-up-Menü als Untermenü des aktuellen Menüs geöffnet wird. Wir benutzen im Beispiel das oben definierte Xclients als Untermenü.

Wir haben außerdem Befehle eingefügt, mit denen der fvwm erneut gestartet oder statt dessen ein anderer Fenster-Manager ( twm ) aufgerufen wird.

Unter dem fvwm haben Sie auch die Möglichkeit, die Funktion der Maustasten in Abhängigkeit vom Kontext zu ändern. Das übernimmt die Anweisung Mouse, die folgendes Format hat:

Mouse taste kontext sondertasten funktion

Die Taste steht für 1, 2, 3, oder 0 (mit der Bedeutung »beliebige Taste«). Der Kontext gibt an, für welchen Bereich diese Tastendefinition gelten soll und kann folgende Werte annehmen:

Der Kontext TSIF z.B. steht für Titelzeilen, Rahmen, Rahmenecken sowie Icon-Fenster.

Die Ziffern 0 bis 9 im Kontext verknüpfen eine Funktion mit einer Schaltfläche (Button) in der Titelzeile des Fensters. Als Standard sind zwei Buttons vorhanden -- je einer links und rechts in der Titelzeile. Wenn Sie weitere Funktionen auf Buttons legen, werden auch diese Schaltflächen sichtbar. Die Buttons links in der Titelzeile tragen ungerade Nummern (1, 3, 5, 7 und 9), die Buttons rechts haben gerade Nummern (2, 4, 6, 8, 0). Abbildung 5--3. zeigt ein Fenster, in dem alle Schaltflächen sichtbar sind, mit den entsprechenden Nummern. Die meisten Buttons bleiben unsichtbar, solange keine Funktion mit ihnen verknüpft ist.

Abbildung 5-3. Buttons in der fvwm-Titelzeile

Die Sondertasten definieren einige Tastenkombinationen, die zusammen mit einem Mausklick benutzt werden. Gültige Werte für Sondertasten sind C für CONTROL, M für META, S für SHIFT, N für »keine Taste« und A für »beliebige Taste«. Ein Beispiel: Wenn Sie C als Sondertaste definieren, müssen Sie die Taste CTRL gleichzeitig mit dem Klicken der Maustaste drücken.

Hier einige Beispiele für die Belegung von Maustasten:

#     Button    Context Modifi  Function
Mouse 1         R       N       PopUp "Fvwm"
Mouse 2         R       N       PopUp "Xclients"
Mouse 3         R       N       WindowList

Diese Zeilen verknüpfen die Maustasten mit den oben beschriebenen Pop-up-Menüs fvwm bzw. Xclients, oder mit dem Befehl WindowList, hinter dem sich ein Pop-up-Menü mit Einträgen für alle Fenster auf der Arbeitsfläche verbirgt.

# Window titlebar buttons
Mouse 1         1       N       Popup "Fvwm"
Mouse 1         3       N       Iconify
Mouse 1         4       N       Destroy
Mouse 1         2       N       Resize

Hier haben wir die Schaltflächen 1, 2, 3 und 4 in der Titelzeile (je zwei Buttons links und rechts) mit Funktionen belegt. Die Schaltfläche ganz links öffnet das fvwm -Menü, die Schaltfläche daneben verkleinert das Fenster zum Icon usw. In der Manual-Page zu fvwm finden Sie alle vorhandenen Funktionen wie z.B. Resize, Move und RaiseLower beschrieben.

Mit der Anweisung Key können Sie auch die Tasten der Tastatur mit Funktionen belegen. Die Syntax ist ähnlich wie bei den Maustasten:

Key taste kontext sondertaste funktion

wobei Kontext und Sondertaste dieselbe Bedeutung haben wie oben beschrieben. Hier einige Beispiele:

Key Up          A       C       Scroll +0   -100
Key Down        A       C       Scroll +0   +100
Key Left        A       C       Scroll -100 0
Key Right       A       C       Scroll +100 +0

Diese Verknüpfungen bewirken, daß Sie sich mit CTRL- Pfeiltaste auf dem Desktop um eine volle Seite in die angegebene Richtung bewegen. Sie können auf diese Weise beliebige Tasten mit fvwm -Funktionen belegen; die Funktionstasten z.B. heißen F1, F2 usw.

Lesen Sie auf jeden Fall die Man-Page zu fvwm . Die Syntax für die Konfiguration kann sich in neuen Versionen geringfügig ändern, und gelegentlich kommen neue Fähigkeiten hinzu.

X-Anwendungen

Es gibt Tausende von Programmen, die unter X laufen. Die Spanne reicht von einfachen Hilfsprogrammen (wie den bereits besprochenen xterm und xclock ) über Editoren und Programmierhilfen hin zu Spielen und Multimedia-Anwendungen. Wir können hier nur einen kleinen Ausschnitt aus der Masse der Software für X vorstellen. In diesem Abschnitt wollen wir die Anwendungen besprechen, mit denen jeder Benutzer von X vertraut sein sollte. Das sind nicht unbedingt die aufregendsten Programme, die es gibt, aber sie sollten doch ein Teil Ihrer Ausstattung sein.

In The X Window System User's Guide finden Sie eine umfassendere Beschreibung von X-Anwendungen.

xterm -- Ihr Ausgangspunkt

Lassen Sie uns die Erforschung von X-Anwendungen mit xterm beginnen, dem Arbeitspferd, mit dem Sie die meiste Zeit verbringen werden. Es handelt sich dabei einfach um ein Fenster, das eine UNIX-Shell enthält, die einen Prompt anzeigt, Befehle entgegennimmt und wie ein Terminal scrollt.

Vielleicht wundern Sie sich mit mir über die Vorstellung, einen hochauflösenden Farbmonitor anzuschaffen und mehrere Megabytes an Grafiksoftware zu installieren, um sich dann mit der Emulation eines alten VT100-Terminals konfrontiert zu sehen. Aber Linux ist eben kein Betriebssystem, das ausschließlich mit der Maus bedient wird. Obwohl es eine Menge an optisch ansprechenden grafischen Anwendungen gibt, werden Sie doch häufig mit Texten arbeiten wollen, und dafür bietet die Befehlszeile nach wie vor die umfangreichsten Werkzeuge.

Lassen Sie uns also einen Blick auf ein xterm -Fenster werfen. Abbildung 5--4. zeigt ein Fenster, in dem wir bereits ein paar Befehle eingegeben haben. Übrigens: Falls Sie den Abschnitt » X konfigurieren « gelesen haben, finden Sie vielleicht Spaß daran, sich einige der Dateien in /usr/lib/X11/app-defaults anzusehen; hier können Sie das Standardverhalten von X-Anwendungen betrachten, die noch nicht von einem Benutzer angepaßt wurden.

Abbildung 5-4. xterm-Fenster

xterm starten

Vielleicht sollten wir zuerst erklären, wie wir dieses Fenster aufgebaut haben. Mit der Anweisung:

eggplant$ xterm  -geometry 80x25-20-30  -fn 7x13bold  -sb  -name xterm-3

erzeugen Sie dieses Fenster. Die Optionen haben folgende Bedeutung:

-geometry 80x25-20-30
Das Fenster ist 80 Zeichen breit, 25 Zeilen hoch und wird 20 Pixel vom linken Bildschirmrand sowie 30 Pixel vom unteren Rand entfernt plaziert.

-fn 7x13bold
Text wird in einer mittleren Auflösung und fett dargestellt. (Es steht eine große Auswahl an Fonts zur Verfügung; in »Einen Font wählen« zeigen wir, wie Sie die Fonts anzeigen können.)

-sb
Eine Bildlaufleiste (Scrollbar) wird angezeigt.

-name xterm-3
Der Text »xterm-3« erscheint in der Titelzeile des Fensters sowie auf dem Icon, wenn das Fenster zum Icon verkleinert wird.

Natürlich wollen wir uns nicht die Mühe machen, diesen langen Befehl jedesmal einzugeben, wenn wir ein xterm starten. Statt dessen haben wir (Sie können das im Abschnitt » X konfigurieren « nachlesen) folgende Optionen in unsere Datei .Xdefaults eingetragen:

 ! Defaults for all xterm clients
  XTerm*scrollBar:                true

 ! Specific xterms
  xterm-3*Geometry:       80x25-20-30
  xterm-3*Font:           7x13bold

und beim Einloggen wurde in unserer Datei .xinitrc folgender Befehl aufgerufen:

xterm -name "xterm-3" &

der dieses Fenster erzeugte. Wie Sie bereits im Abschnitt »Der Fenster-Manager fvwm« gesehen haben, ist es recht einfach, ein entsprechendes Menü zu erstellen und eine Maus- oder Funktionstaste mit dem Aufruf von xterm zu belegen.

Geben Sie »exit« ein oder drücken Sie CTRL-D, um das Fenster zu schließen. Falls Ihnen dies zu gefährlich erscheint (weil Sie durch ein versehentliches CTRL-D Ihr Fenster verlieren könnten), sollten Sie xterm mit der Option -ls starten (»login shell«). Anschließend können Sie das Fenster nur noch mit »logout« schließen. (Diese Option bewirkt auch noch andere Dinge. In der Shell bash wird die Datei ~/.bash_ profile ausgeführt, in der C-Shell die Datei ~/.login .)

Selection: ausschneiden und einfügen

Im Alltag bietet xterm einiges mehr als ein VT100-Terminal. Ein Hilfsmittel sind seine umfangreichen Fähigkeiten, Texte auszuschneiden und wieder einzufügen (Cut-and-Paste).

Werfen Sie noch einmal einen Blick auf Abbildung 5--4. . Nehmen wir an, daß wir nicht das Verzeichnis app-defaults meinten, sondern zu den Fonts in /usr/lib/X11/fonts wechseln wollten. (Dies ist keine allzu interessante Anwendung; es soll nur ein Beispiel sein.)

Wir wollen zuerst den Teil des cd -Befehls markieren, der uns interessiert. Bewegen Sie den Mauszeiger auf die Leerstelle links vom c in cd. Drücken Sie die linke Maustaste und ziehen Sie die Maus, bis der Schrägstrich hinter X11 invers dargestellt wird. Abbildung 5--5. zeigt das Ergebnis:

Abbildung 5-5. Markierter Text in xterm

Haben Sie zu viele oder nicht genug Zeichen markiert? Kein Problem -- halten Sie die SHIFT-Taste gedrückt und klicken Sie mit der linken Maustaste irgendwo in den markierten Text. Anschließend können Sie den markierten Bereich verkleinern oder vergrößern.

Drücken Sie die mittlere Maustaste, wenn Sie genau den gewünschten Bereich markiert haben. xterm fügt den ausgewählten Text in der aktuellen Befehlszeile ein. Das Ergebnis stellt Abbildung 5--6. dar:

Abbildung 5-6. xterm-Fenster nach dem Einfügen des Textes

Anschließend können Sie den Rest des Verzeichnisnamens »fonts« eintippen und mit RETURN den Befehl ausführen.

Sie können einen beliebig großen Bereich aus dem Fenster markieren -- sowohl Ein- als auch Ausgaben. Klicken Sie zweimal mit der linken Maustaste, wenn Sie ein ganzes Wort statt einzelner Zeichen markieren möchten. Mit dreifachem Klikken markieren Sie eine ganze Zeile. Auch das Markieren mehrerer Zeilen ist möglich. Dies ist bei der Eingabe von Befehlen nicht unbedingt hilfreich, aber immer dann, wenn Sie mit dem Editor vi arbeiten und längere Textpassagen zwischen den Fenstern hin- und herkopieren möchten.

Passen Sie bei langen, umgebrochenen Zeilen auf; der markierte Bereich wird einen Zeilenende-Code enthalten, auch wenn Sie beim Tippen der Zeile kein RETURN eingegeben haben.

Scrollen

Nachdem Sie in Ihrer xterm -Sitzung einige Befehle eingegeben haben, werden die ersten Zeilen nach oben aus dem Bildschirm verschwinden. Für diesen Fall haben wir beim Aufruf von xterm die Bildlaufleiste (Scrollbar) eingerichtet. Die Benutzung der Laufleiste ist recht einfach (wie das bei allen mit der Maus bedienbaren Tools sein sollte), aber es gibt ein paar nette Tricks dabei. Die Techniken, die wir hier vorstellen, sollten übrigens in fast allen Anwendungen mit Scrollbars funktionieren. Eine X-Anwendung arbeitet immer so, wie der Programmierer das festgelegt hat, aber die meisten Entwickler halten sich an die Konventionen, die von xterm vorgegeben werden.

Lassen Sie uns zunächst das Fenster mit einer Menge Text füllen. Einer der folgenden Befehle sollte dazu ausreichen:

eggplant$ ls /bin 
eggplant$ ls /usr/bin 
eggplant$ cat ~/.*

Die Ausgabe des Befehls wird natürlich so schnell über den Bildschirm huschen, daß Sie nicht mitlesen können; wir können uns aber anschließend rückwärts durch den Text bewegen und ihn lesen. Beachten Sie die Laufleiste auf der linken Seite des Fensters -- Sie sehen dort einen dunkel dargestellten »Zeiger« am unteren Ende. Seine Größe zeigt an, wieviel der Ausgabe Sie im Moment auf dem Bildschirm sehen. Die Position des Zeigers gibt Ihre Position innerhalb der Ausgabe an (in diesem Beispiel stehen Sie am Ende).

Bewegen Sie den Mauszeiger auf das untere Ende der Laufleiste und drücken Sie die rechte Maustaste. Damit blättern Sie um eine ganze Bildschirmseite zurück; der Text, der sich vorher am oberen Bildschirmrand befand, erscheint jetzt am unteren Rand. Wenn Sie in der Nähe des oberen Endes der Laufleiste klicken, bewegen Sie sich damit um einige Zeilen nach oben. Ein Klick auf die Mitte der Leiste blättert um eine halbe Bildschirmseite zurück. Beachten Sie, daß der Zeiger in der Laufleiste mit den Mausklicks seine Position ändert.

Wenn Sie wieder vorwärts blättern möchten, benutzen Sie die linke Maustaste. Auch hier gilt, daß ein Klick am oberen Ende der Laufleiste einige Zeilen weiterblättert, während ein Klick am unteren Ende Sie eine ganze Bildschirmseite weiterbringt.

Nachdem Sie eine größere Menge Text markiert haben, möchten Sie vielleicht schnell zum Anfang oder Ende des Textpuffers springen. Dazu können Sie die mittlere Maustaste einsetzen. Klicken Sie damit irgendwo auf die Laufleiste, und Sie werden im entsprechenden Bereich des markierten Textes landen. Ein Klick auf das obere Ende der Leiste bringt Sie also an den Anfang des Puffers, ein Klick auf das untere Ende läßt Sie zum Ende des Puffers springen. Sie haben außerdem die Möglichkeit, direkt auf die Bildlaufleiste zu klicken, die Taste gedrückt zu halten, und den Zeiger in den gewünschten Bereich zu ziehen.

Falls Sie lieber mit der Tastatur arbeiten, müssen Sie zum Blättern nicht die Maus benutzen. Sie können auch die SHIFT-Taste festhalten und gleichzeitig mit der Bild-hoch-Taste zurück oder mit der Bild-runter-Taste vorwärts blättern.

Diese Tastenkombinationen funktionieren übrigens auch auf einer virtuellen Konsole in dieser Weise (siehe auch den Abschnitt » Virtuelle Konsolen « in Kapitel 3 ).

Sie werden feststellen, daß xterm in der Voreinstellung nicht allzu viele Zeilen der Ausgabe puffert. Mit der Option -sl anzahl oder mit einem Eintrag wie:

XTerm*saveLines:                400

können Sie eine größere Anzahl an Zeilen zwischenspeichern lassen.

Einen Font wählen

Sie finden Ihre Fonts (Schrifttypen) häßlich oder zu klein? Es gibt genug andere zur Auswahl. In beinahe jeder X-Anwendung können Sie bestimmen, welcher Font für die Anzeige von verschiedenen Textarten (Menüs usw.) benutzt werden soll. Sie müssen nur wissen, wie die Fonts heißen und wie sie aussehen.

Mit dem Befehl xlsfonts lösen Sie das erste Problem. So wie ls Dateien auflistet, liefert xlsfonts eine Liste mit Fonts. Wenn Sie den Befehl allerdings ohne Argumente eingeben, bekommen Sie mehr angezeigt, als Sie sehem möchten. Vorteilhafter ist es, zunächst zu überlegen, welche Arten von Fonts Sie brauchen, und dann nur diese anzuschauen.

Die Fonts im X Window System haben unglaublich lange Namen. Ein typisches Beispiel ist:

-misc-fixed-bold-r-normal--13-100-100-100-c-70-iso8859-1

Die Bindestriche teilen die Namen in Felder ein. Was uns im Augenblick interessiert, ist das Feld hinter dem elften Bindestrich, das in diesem Beispiel ein »c« enthält.

Für xterm und viele andere Anwendungen brauchen Sie eine Sperrschrift . Das bedeutet, daß alle Buchstaben gleich breit sind -- im Gegensatz zur Proportionalschrift , bei der ein »m« breiter ist als ein »i«. Proportionalschriften eignen sich ganz hervorragend für die Darstellung der Ausgaben eines Textformatierers wie TEX, aber Sie sehen absolut unmöglich aus, wenn Sie in einem Programm benutzt werden, das nicht auf die Handhabung der verschiedenen Zeichenbreiten eingerichtet ist. Wenn im elften Feld eines Fontnamens ein »c« oder »m« steht, handelt es sich um eine Sperrschrift.

Auch andere Felder können Ihnen helfen, einen Font zu wählen. Im dritten Feld erfahren Sie die Strichstärke für diesen Font -- entweder »medium« für normale Strichstärke oder »bold« für Fettdruck. Im siebten Feld, das in unserem Beispiel 13 enthält, erfahren Sie die Größe des Fonts (genauer gesagt die Höhe des größten Zeichens in Pixel).

Wir wollen uns jetzt für einen Font entscheiden und prüfen, ob das System einen solchen zur Verfügung stellt. Mit dem Befehl xlsfonts bestimmen Sie einen Font mit Hilfe der Option -fn ; benutzen Sie dabei ein Sternchen als Platzhalter für Werte, die keine Rolle spielen. Wenn wir die Werte im dritten und elften Feld für einen Font genau angeben wollen und die anderen Parameter nicht wichtig sind, geben wir ein:

eggplant$ xlsfonts -fn -*-*-bold-*-*-*-*-*-*-*-m-*-*

Die Felder eins und zwei interessieren uns nicht, aber im dritten Feld muß »bold« stehen. Auch das elfte Feld haben wir genau definiert; dort steht ein m. Als Ergebnis erhalten wir eine Liste der fett dargestellten Sperrschriften. Falls das System eine solche nicht kennt, bekommen wir die Nachricht:

xlsfonts: pattern "-*-*-bold-*-*-*-*-*-*-*-m-*-*" unmatched

Ersetzen Sie jetzt das m durch ein c, und sehen Sie sich die anderen Sperrschriften an.

In Wirklichkeit brauchen wir solche komplizierten Namen nicht. In den Beispielen weiter oben in diesem Kapitel haben wir den Kurznamen 7x13bold benutzt. Solche Namen nennt man auch Alias-Namen ; Sie ersetzen die Namen von der langen Sorte. Wenn Sie eine kurze Liste der Sperrschriften unter Benutzung dieser Alias-Namen sehen möchten, geben Sie ein:

eggplant$ xlsfonts *x*

Wir haben bereits einigen Aufwand betrieben, nur um eine Liste mit Namen anzuzeigen. Aber wie sehen die Fonts eigentlich aus? Ein einfacher Versuch, diese Frage zu beantworten, ist die Definition eines Fonts in Ihrem xterm -Aufruf:

eggplant$ xterm -fn -misc-fixed-bold-r-normal--13-100-100-100-c-70-iso8859-1

Wenn Sie jedes einzelne Zeichen des Fonts anzeigen möchten, sollten Sie den Befehl xfd benutzen (»X font display«). Sie erhalten ein Gitternetz mit einem Feld für jedes Zeichen:

eggplant$ xfd -fn -misc-fixed-bold-r-normal--13-100-100-100-c-70-iso8859-1

Sobald Sie einen Font gefunden haben, der Ihnen gefällt, halten Sie ihn fest, indem Sie ihn in Ihrer Datei .Xdefaults verewigen:

XTerm*Font:           7x13bold
Die Uhren

Glauben Sie wirklich, daß Ihr Bildschirm komplett ist, solange er nicht von einer Uhr geschmückt wird, auf der Sie ablesen können, wieviel Zeit Sie mit der Gestaltung des Bildschirms verschwendet haben? Sie können genau die Uhr anzeigen lassen, die Ihnen am besten gefällt: quadratisch oder rund, analog oder digital, groß oder klein. Selbstverständlich kann die Uhr Ihnen auch akustisch mitteilen, was die Stunde geschlagen hat.

In der .xinit -Datei weiter oben in diesem Kapitel steht eine Zeile, die oclock startet:

oclock -geometry 70x70+5+5 &

Abbildung 5--2. zeigt Ihnen, wie diese Uhr aussieht. Vielleicht ist Ihnen die quadratische Uhr lieber, die vom Programm xclock angezeigt wird:

xclock -geometry 150x150+5+5 &

Wenn es eine winzige Digitaluhr am unteren Bildschirmrand sein soll:

xclock -digital -geometry +10-10

oclock gibt sich farbenprächtiger, während xclock Ihnen bei anderen Gestaltungselementen mehr Freiheiten läßt; in den Manual-Pages finden Sie die Details hierzu. Wenn Sie jede halbe Stunde auch akustisch markiert haben möchten, rufen Sie xclock mit der Option -chime auf.

Die Mail-Programme xbiff und xmh

Das Programm xbiff zeigt einen Briefkasten an, der beim Eintreffen neuer E-Mail die Farbe wechselt und dazu piepst. Außerdem wird ein Winker am Briefkasten aufgestellt -- ein nettes Bild aus dem ländlichen Amerika, das wahrscheinlich innerhalb des Pendler-Umkreises rund um das MIT (das xbiff verteilt) gar nicht zu finden ist.

In Ihrer .Xdefaults -Datei können Sie selbst bestimmen, welche Bilder xbiff anzeigen soll. Voreingestellt sind die Bitmaps flagdown (wenn keine E-Mail wartet) und flagup (wenn E-Mail eingetroffen ist). Die folgenden Einträge für .Xdefaults bringen Bitmaps für einen leeren Briefkasten und einen mit Brief darin auf den Bildschirm. Weitere vordefinierte Bitmaps finden Sie in /usr/local/X11/include/bitmaps .

xbiff*emptyPixmap:              mailempty
xbiff*fullPixmap:               mailfull

Falls Ihnen das Piepsen von xbiff schrecklich laut oder zu leise vorkommt, können Sie einen anderen Wert für die Option -volume eingeben. Mögliche Werte sind 0 bis 100, und 33 ist die Voreinstellung. Natürlich haben Sie auch die Möglichkeit, in Ihrer Datei .Xdefaults einen Wert fest vorzugeben -- wie bei den meisten Optionen in X-Anwendungen:

xbiff*volume:           20

Falls Sie gerne Scrollbars und Buttons benutzen, können Sie damit auch Ihre E-Mail bearbeiten. xmh ist ein ziemlich umfangreiches Mail-Programm, das die üblichen Funktionen der Mailer unter UNIX beherrscht. Sie können Mails in verschiedenen Verzeichnissen ablegen, Nachrichten eines bestimmten Absenders lesen oder solche Nachrichten, die einen bestimmten Begriff enthalten usw. Weil xmh ein Front-End zum textorientierten Programm mh ist, muß auch dieses Programm auf Ihrem System installiert sein.

Die meisten Leute arbeiten anscheinend lieber mit textbasierten Mailern wie Elm oder Pine, und die meisten Funktionen sind auch in Emacs enthalten.

In Kapitel 7, Vernetzung und Kommunikation zeigen wir, wie Elm installiert wird. An dieser Stelle wollen wir Sie mit den Grundlagen von xmh vertraut machen, damit Sie entscheiden können, ob Sie einen Versuch wagen wollen. Sicherlich lohnt es sich, die Möglichkeiten von xmh kennenzulernen, weil die anderen Mailer ähnliche Funktionen bieten -- nur die Befehle lauten anders.

xmh bietet die angenehme Möglichkeit, eine Liste der Nachrichten einzusehen, während Sie eine Nachricht lesen; Sie brauchen also nicht hin- und herzuwechseln. Außerdem lassen sich Mails ohne viel Tipparbeit von einem Verzeichnis in ein anders kopieren.

Vor dem Aufruf von xmh sollten wir noch die Größe der Fenster anpassen, weil die Voreinstellungen in der Regel zu kleine Fenster anzeigen. Fügen Sie in Ihrer Datei .Xdefaults diese Zeilen ein:

Xmh*geometry                    : 675x700
Xmh.clip*compGeometry           : 675x500

Die erste Zeile bestimmt die Größe des Hauptfensters, das wir Ihnen etwas weiter unten zeigen. Die zweite Zeile legt die Größe des Arbeitsfensters fest, in dem Sie Ihre Nachrichten schreiben. Rufen Sie jetzt das Programm auf:

eggplant$ xmh

Es erscheint ein Fenster wie das in Abbildung 5--7. . Weil die Anzeige im ersten Augenblick verwirrend sein kann, haben wir in der Abbildung die einzelnen Komponenten des Fensters benannt. Es sind bereits einige Nachrichten eingetroffen, und das kleine schwarze Quadrat in der Schaltfläche inbox zeigt an, daß weitere Nachrichten gelesen werden wollen.

Abbildung 5-7. xmh-Fenster

Wir wollen unsere E-Mail-Sitzung damit beginnen, daß wir neu eingetroffene Nachrichten lesen. Bewegen Sie den Mauszeiger auf den Button Table of Contents am oberen Bildschirmrand. Halten Sie eine beliebige Maustaste gedrückt, ziehen Sie die Maus nach unten, und lassen Sie die Taste über dem Menüpunkt Incorporate New Mail los.

Für diejenigen, die lieber die Tastatur als die Maus benutzen, gibt es für diese Funktion (wie für viele andere auch) eine Funktionstaste oder -tastenkombination; in der Welt von X nennt man diese Tasten Accelerator (Gaspedal, Beschleuniger). In diesem Fall handelt es sich um eine etwas artistisch anmutende Tastenkombination (Sie werden beide Hände brauchen): Halten Sie die Tasten SHIFT und ALT gedrückt und drücken dann gleichzeitig »I«.

Die neue E-Mail sollte im mittleren Teil des Fensters aufgelistet sein (dem Teil mit der Titelzeile »inbox:all«), und die aktuelle Nachricht sollte mit einem Pluszeichen versehen sein. Die aktuelle Nachricht erscheint unten auf dem Bildschirm; benutzen Sie die Bildlaufleiste, um sich dorthin zu bewegen und die Nachricht zu lesen.

Falls diese Nachricht zum Aufbewahren nicht wichtig genug erscheint, öffnen Sie das Menü Message und wählen Sie dort den Punkt Delete. Mit den Tasten ALT-d erreichen Sie dasselbe. Die Löschung kann allerdings noch rückgängig gemacht werden; erst wenn Sie den Punkt Commit Changes aus dem Menü Table of Contents anklicken oder SHIFT-ALT-C drücken, wird die Nachricht endgültig gelöscht.

Wenn Sie diese Nachricht aufbewahren möchten, können Sie mit dem Punkt View Next Message aus dem Menü Message oder mit einer der Tastenkombinationen ALT-SPACE bzw. ALT-n mit dem Lesen der nächsten Nachricht fortfahren. Aber lassen Sie uns einfach aus Spaß an der Freude diese Nachricht in einem anderen Folder (Verzeichnis) ablegen. Die Folder helfen Ihnen, die Nachrichten zu verschiedenen Themen an verschiedenen Stellen aufzubewahren.

Wir wollen einen Folder mit dem Namen »local« anlegen. Öffnen Sie dazu einfach das Menü Folder und klicken Sie auf Create Folder (für diesen Schritt gibt es keinen Accelerator). Geben Sie dann am Prompt »local« ein und drücken Sie RETURN. Der neue Folder erscheint in Form eines Ovals nahe dem oberen Rand des Bildschirms (siehe Abbildung 5--8. ).

Abbildung 5-8. xmh-Fenster mit neuem Folder

Noch sind Sie nicht ganz soweit, daß Sie die Nachricht speichern können. Klikken Sie auf den neuen Folder local. Der Name erscheint jetzt anstelle von »inbox« in der Titelzeile der Mail-Liste und zeigt damit an, daß der Folder local jetzt bereit ist, Nachrichten entgegenzunehmen. (Ein Nachteil von xmh besteht in den sehr zurückhaltenden Hinweisen darauf, was Sie gerade tun und wo Sie sich befinden; man muß schon sehr genau hinsehen.)

Wenn Sie jetzt die aktuelle Nachricht in local ablegen möchten, öffnen Sie dazu das Menü Message und wählen den Punkt Move. Sie können das Ergebnis überprüfen, indem Sie den Punkt Open Folder im Menü Folder anklicken. Damit wird der Inhalt des Folders local angezeigt. Kehren Sie dann wieder zu Ihrem »Eingangskorb« zurück, indem Sie auf das Oval inbox klicken und dann wieder den Punkt Open Folder auswählen.

Wenn Sie auf eine Nachricht antworten möchten, öffnen Sie dazu das Menü Message und wählen den Punkt Reply, oder drücken Sie ALT-r. Zum Schreiben einer völlig neuen Nachricht wählen Sie den Punkt Compose Message aus dem Menü Message. In beiden Fällen erscheint ein neues Fenster. Leider können Sie bei xmh (anders als bei den meisten UNIX-Mailern) nicht selbst bestimmen, welchen Editor Sie benutzen möchten. Sie sind statt dessen auf einen einfachen Editor angewiesen, der als Teil des X Window Systems entwickelt wurde. Dieser Editor ist allerdings gar nicht so schlecht; wenn Sie sich mit Emacs auskennen, werden Sie feststellen, daß einige Befehle identisch sind. Wenn Sie Ihre Nachricht abschicken möchten, klicken Sie auf die Schaltfläche Send unten im Fenster; schließen Sie das Fenster dann mit einem Klick auf Close Window.

Wir wollen noch eine weitere, ausgesprochen nützliche Fähigkeit von xmh vorstellen: die Möglichkeit, die Anzahl der angezeigten Nachrichten einzuschränken. Sie müssen dazu eine Zeichenkette angeben sowie die Stelle, an der dieser String stehen soll (z.B. in der Betreffzeile, in der Zeile »From:«, im Textteil der Nachricht usw.). Anschließend werden alle Nachrichten verborgen, die nicht diese Zeichenkette an der richtigen Stelle enthalten. Es gibt außerdem die Möglichkeit, eine zeitliche Begrenzung festzulegen.

Lassen Sie uns annehmen, daß wir alle Nachrichten zum Thema Schule (LSB) ansehen wollen. öffnen Sie zunächst das Menü Sequence und wählen Sie den Punkt Pick. Daraufhin erscheint ein neues Fenster voller Optionen, auf die wir hier nicht eingehen werden. Abbildung 5--9. zeigt dieses Fenster.

Abbildung 5-9. Pick-Fenster in xmh

Klicken Sie in den Kasten neben »Subject:« und geben Sie »LSB« ein. Außerdem sollten Sie den Nachrichten mit diesem Betreff (subject) einen sinnvollen Namen geben, damit sie später wiedergefunden werden können. Klicken Sie dazu in das Feld neben »Creating sequence«, löschen Sie eventuell vorhandenen Text, und geben Sie dann »lsb« ein. Das Ergebnis sehen Sie in Abbildung 5--10. Schließen Sie den Vorgang mit einem Klick auf den Button OK am unteren Rand ab. Das Fenster wird geschlossen und eine neue Liste mit Nachrichten erscheint in Ihrem Eingangskorb.

Abbildung 5-10. Pick-Fenster in xmh, ausgefüllt

Zum Verlassen von xmh öffnen Sie das Menü Folder und klicken auf Close Window.

Emacs

Die Integration von X und Emacs wird immer ausgereifter. Die Version 19 von Emacs verfügt über Pull-down-Menüs, unterschiedliche Schrifttypen für die verschiedenen Bereiche Ihres Fensters sowie die vollständige Integration von Cut-and-Paste-Funktionen mit der X-Umgebung.

Lassen Sie uns als erstes ein paar schöne Farben für die verschiedenen Bereiche des Emacs-Fensters definieren. Versuchen Sie es damit:

eggplant$ emacs  -bg ivory  -fg slateblue  -ms orangered  -cr brown

Mit diesem Befehl setzen Sie die Farben für den Hintergrund, den Vordergrund, den Mauszeiger und den Cursor. Der Cursor ist das kleine Rechteck, das im Fenster erscheint; in Emacs wird der Cursor »Point« genannt -- das ist die Stelle, an der Sie Text eingeben. Wir werden etwas weiter unten auf die Farben zurückkommen.

Nach dem Start von Emacs fallen zunächst die Menüleiste oben und die Bildlaufleiste rechts auf (siehe Abbildung 5--11. ).

Abbildung 5-11. Emacs-Fenster

Die Laufleiste funktioniert genau so wie die Leiste unter xterm . In der Menüzeile sind einige der gängigen Funktionen enthalten. Einige Modi, etwa der C- und der TEX-Modus, benutzen eigene Pull-down-Menüs. Diese Menüs sind nirgendwo dokumentiert; Sie werden also durch Probieren herausfinden müssen, welche Emacs-Funktionen sich dahinter verbergen.

Wenn Sie einmal eine Funktion benutzen möchten, für die es keine einfache Tastenkombination gibt -- oder wenn Sie die Kombination vergessen haben -- sind die Menüs ganz praktisch. Wenn Sie z.B. nur selten eine Suche mit regulären Ausdrücken starten (ein mächtiges Werkzeug, das zu beherrschen sich lohnt), dann führt der einfachste Weg dahin über den Punkt Regexp Search im Menü Edit.

Ein weiterer nützlicher Punkt ist Choose Next Paste aus dem Menü Edit. Damit haben Sie Zugriff eine Funktion, die Sie nur auf diesem Weg erreichen: eine Liste der Textblöcke, die Sie kürzlich ausgeschnitten haben. Mit anderen Worten: Sie werfen einen Blick auf den Kill-Ring. Hier können Sie aussuchen, welchen Textblock Sie als nächstes einfügen möchten; mit dem nächsten C-y (die CTRL-Taste zusammen mit y) wird dieser Textblock in den aktuellen Text eingefügt.

Sie haben auch die Möglichkeit, die Laufleiste und das Menü zu verbergen; fügen Sie dazu folgende Zeilen LISP-Code in Ihre Datei .emacs ein:

(if (getenv "DISPLAY")
    (progn (menu-bar-mode -1)
	   (scroll-bar-mode -1))

Auch die Maus erwirbt unter X einige interessante Fähigkeiten. Mit ihrer Hilfe können Sie genau so Text ausschneiden und einfügen (Cut-and-Paste), wie Sie es von xterm her gewohnt sind. Das funktioniert sogar zwischen verschiedenen Fenstern -- wenn Sie also die Ausgabe, die in einem xterm -Fenster angezeigt wird, in eine Datei übertragen möchten, schneiden Sie den Text in xterm aus und fügen ihn in den Emacs-Puffer ein. Alle Texte, die Sie nicht mit der Maus markiert haben (sondern z.B. mit C-w), werden ebenso in die Maus-Selection aufgenommen wie die mit der Maus ausgeschnittenen Texte. Sie können also auch Text in Ihrem Emacs-Puffer markieren und in ein xterm -Fenster einfügen.

Die rechte Maustaste funktioniert in etwas ungewöhnlicher Weise. Wenn Sie mit der linken Taste einen Text markiert haben, wird dieser mit einem Klick auf die rechte Taste kopiert. Ein zweiter Klick löscht den Text. Mit der mittleren Taste fügen Sie den gelöschten Text vor der aktuellen Position des Mauszeigers wieder ein.

Sie haben einen Fehler gemacht? Kein Problem: Mit dem Befehl Undo machen Sie ihn ebenso wieder rückgängig wie jede andere Emacs-Funktion auch. (Wählen Sie dazu Undo aus dem Menü Edit oder drücken Sie einfach C-_.)

Falls Sie die Mauserei über alles lieben, können Sie auch die Maustasten mit beliebigen Funktionen belegen -- wie die Tasten auf der Tastatur auch. Probieren Sie folgenden Befehl in Ihrer Datei .emacs aus:

(define-key global-map [S-mouse-1] 'mail)

Wenn Sie anschließend die SHIFT-Taste festhalten und dazu die linke Maustaste drücken, öffnet sich ein Fenster, in dem Sie Ihre E-Mail schreiben können.

Wir empfehlen Ihnen, keine bestehenden Mausfunktionen umzudefinieren, aber zusammen mit den Tasten SHIFT, CONTROL und META bleiben noch genug Möglichkeiten offen. Sie können die Kürzel S-, C- und M- für eigene Definitionen in beliebigen Zusammensetzungen kombinieren:

(define-key global-map [S-C-mouse-1] 'mail)

Lassen Sie uns ein wenig mit Fenstern herumspielen. Emacs hat schon immer ein eigenes Fenster gehabt -- lange bevor das X Window System entstand. Deshalb ist ein Fenster unter Emacs nicht dasselbe wie ein Fenster unter X. Was unter X als Fenster bezeichnet wird, heißt im Emacs-Umfeld Rahmen (frame).

Wie würde es Ihnen gefallen, in mehreren Fenstern gleichzeitig zu arbeiten? Drücken Sie dazu C-x52, und ein weiteres Fenster öffnet sich. Der neue Rahmen stellt die aktuelle Editorsitzung noch einmal dar. Sie können in den beiden Rahmen verschiedene Puffer bearbeiten, aber alles, was Sie in einem Rahmen ändern, wirkt sich auch auf den entsprechenden Puffer im anderen Rahmen aus. Wenn Sie Emacs mit C-x C-c verlassen, werden beide Rahmen geschlossen. Wenn Sie nur einen Rahmen schließen möchten, sollten Sie C-x50 eingeben.

Zum Abschluß unserer Erkundung von Emacs unter dem X Window System wollen wir zeigen, welche phantastischen Dinge Sie mit Farben anstellen können. Sie können die Farben während einer Emacs-Sitzung ändern; das vereinfacht das Testen verschiedener Kombinationen. Drücken Sie M-x und tippen Sie dann »set-background-color« ein. Schicken Sie den Befehl mit RETURN ab. Am Prompt geben Sie dann »ivory« oder die von Ihnen bevorzugte Farbe ein. (Emacs benutzt die Schreibweise M-x, während wir in den anderen Teilen dieses Buches META-x oder Alt-x benutzen.)

Achten Sie darauf, daß die Farben für den Vorder- und Hintergrund so verschieden sind, daß Sie den Text noch lesen können! Neben set-background-color kennt Emacs noch set-foreground-color, set-cursor-color und set-mouse-color.

Dies kommt Ihnen vielleicht wie eine nette Spielerei vor, aber ihr wahres Gesicht zeigen die Farben dann, wenn Sie verschiedene Bereiche des Textpuffers in unterschiedlichen Farben darstellen lassen. Wenn Sie z.B. in C oder LISP programmieren, können Sie für Strings, Kommentare, Funktionen und Schlüsselwörter unterschiedliche Farben vergeben.

Sie müssen vor den Farbmanipulationen noch den Font-Lock-Modus einstellen. Am einfachsten geht das mit folgenden Zeilen in Ihrer Startdatei .emacs :

(add-hook 'c-mode-hook '(lambda () (font-lock-mode 1)))
(add-hook 'c++-mode-hook '(lambda () (font-lock-mode 1)))
(add-hook 'lisp-mode-hook '(lambda () (font-lock-mode 1)))
(add-hook 'emacs-lisp-mode-hook '(lambda () (font-lock-mode 1)))

Diese ziemlich komplexen Befehle bewirken, daß die Major-Modi immer den Font-Lock-Modus einschalten, sobald ein Puffer in einem dieser Major-Modi geöffnet wird. Der Font-Lock-Modus wird also immer dann aktiviert, wenn Sie z.B. eine Datei mit dem Suffix .c bearbeiten.

Als nächstes wollen wir uns die verschiedenen Schrifttypen unter Emacs ansehen. Drücken Sie M-x und geben Sie den Befehl list-faces-display ein. Sie erhalten etwa folgende Liste:

               bold abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
	bold-italic abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
            default abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
	  highlight abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
             italic abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
	   modeline abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
             region abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
secondary-selection abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
	  underline abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ

Jetzt haben Sie die Möglichkeit, für jeden Schrifttyp interaktiv die Vorder- und Hintergrundfarbe zu bestimmen. Ein Beispiel:

  1. Geben Sie M-x set-face-background ein.

  2. Tippen Sie am ersten Prompt »modeline«.

  3. Geben Sie am zweiten Prompt »lemonchiffon« ein.

Sie werden die Veränderung sofort bemerken. Setzen Sie dann die Vordergrund-(Text-)farbe:

  1. Geben Sie M-x set-face-foreground ein.

  2. Tippen Sie am ersten Prompt »modeline«.

  3. Geben Sie am zweiten Prompt »green« ein.

Damit ist der Kontrast allerdings für das bequeme Lesen nicht groß genug. Wiederholen Sie diesen Vorgang und setzen Sie die Vordergrundfarbe auf »maroon«; das sieht besser aus.

Suchen Sie sich einen Puffer mit C- oder LISP-Code darin und versuchen Sie, die anderen Schrifttypen mit neuen Farben zu versehen. Die Schrifttypen werden den Elementen des Programmcodes ziemlich willkürlich zugeordnet. Die Verwendung von Farben fügt Ihrem Code neue Dimensionen hinzu. Im C- und C++-Modus erscheinen z.B.:

Es empfiehlt sich wahrscheinlich, die intensiveren Farben für kurze Texte zu reservieren, die nur selten vorkommen.

Wenn Sie eine Farbzusammenstellung gefunden haben, die Ihnen gefällt, sollten Sie diese mit Hilfe der entsprechenden LISP-Funktionen in Ihrer Datei .emacs verewigen. Hier ein Beispiel:

(set-background-color "ivory")
(set-foreground-color "slateblue")
(set-cursor-color "brown")
(set-mouse-color "orangered")
(set-face-foreground 'bold "black")
(set-face-background 'bold "lightpink")
(set-face-foreground 'bold-italic "red")
(set-face-background 'bold-italic "wheat")
(set-face-foreground 'italic "darkolivegreen")
(set-face-background 'modeline "lemonchiffon")
(set-face-foreground 'modeline "maroon")
(set-face-foreground 'underline "violet")

Sie haben auch die Möglichkeit, in Ihrer Datei .Xdefaults die Farben einzustellen; weil das aber mehr Aufwand erfordert, wollen wir hier nicht darauf eingehen.

Ghostview -- PostScript anzeigen

Adobe PostScript, das sich zu einem Standard entwickelt hat, ist eines der beliebtesten Formate für den Austausch von Dokumenten in der Welt der EDV. Viele Akademiker verbreiten ihre Schriften im PostScript-Format. Das Linux Documentation Project bietet seine Handbuchseiten unter anderem auch in Form von PostScript-Dateien an. Das ist ganz praktisch für die Leute, die keine Zeit haben, LATEX-Dokumente zu formatieren, oder die über ausreichende Netzwerkkapazitäten verfügen, um Dateien zu übertragen. Wenn Sie selbst Schriftstücke mit groff oder TEX erstellen, ist es sicherlich von Vorteil, wenn Sie diese zunächst am Bildschirm betrachten können, bevor Sie teure Ausdrucke auf Papier herstellen.

Ghostview, eine GNU-Anwendung, bietet eine angenehme Arbeitsumgebung zum Betrachten von PostScript unter dem X Window System. Ghostview ist sehr einfach. Rufen Sie es zusammen mit dem Namen der anzuzeigenden Datei auf:

eggplant$ ghostview article.ps

Das Ghostview-Fenster ist riesig; es kann ohne weiteres den größten Teil des Bildschirms einnehmen. Die erste Seite des Dokuments wird zusammen mit einer senkrechten Bildlaufleiste am rechten Rand und einer horizontalen Leiste am unteren Rand angezeigt. Die Menüs erscheinen auf der linken Seite des Fensters und die Seitenzahlen stehen rechts daneben.

Wie bei den meisten X-Anwendungen können auch in Ghostview häufig benutzte Funktionen über die Menüs oder per Tastatur (Accelerator-Tasten) aufgerufen werden. So gelangen Sie z.B. auf die nächste Seite, indem Sie entweder das Menü Page öffnen und dort Next anklicken, oder indem Sie einfach die SPACE-Taste drücken.

Sie gelangen auf die vorhergehende Seite, indem Sie Previous aus dem Menü Page wählen. Wenn Sie auf eine ganz bestimmte Seite wechseln möchten, bewegen Sie den Mauszeiger auf die entsprechende Zahl in der Spalte mit den Seitenzahlen und drücken dann die mittlere Maustaste. Mit Quit aus dem File-Menü verlassen Sie Ghostview -- oder geben Sie einfach q ein.

Schriftstücke aus verschiedenen Ländern haben oft unterschiedliche Seitenlängen. Die Voreinstellung für Ghostview ist das amerikanische Format »letter«. (Sie können das in der PostScript-Datei ändern.) Sie haben auch die Möglichkeit, auf der Befehlszeile ein anderes Format einzustellen:

eggplant$ ghostview -a3 article.ps

oder in Ihrer .Xdefaults -Datei:

Ghostview*pageMedia:            A3

Schließlich können Sie zur Laufzeit noch ein anderes Seitenformat aus dem Menü Media auswählen.

Ghostview ermöglicht es, die Seite in einem anderen Maßstab darzustellen, was bei der Kontrolle von Details Ihrer Formatierungsarbeit sehr nützlich ist. (Ein Wort zur Warnung: Die Fonts auf dem Bildschirm sind nicht identisch mit den Druckerfonts; deshalb wird das Aussehen der Zeichen unter Ghostview nicht den gedruckten Zeichen entsprechen.) Wenn Sie einen Ausschnitt aus der Seite vergrößern möchten, können Sie den Mauszeiger dorthin bewegen und eine beliebige Maustaste drücken. (Die rechte Maustaste liefert die stärkste, die linke Maustaste die geringste Vergrößerung.)

Sie können außerdem aus dem Menü Magstep heraus den voreingestellten Maßstab zur Anzeige des kompletten Schriftstücks ändern. Je größer der Wert ist, den Sie einstellen, desto stärker wird der Text vergrößert. Negative Werte verkleinern das Dokument.

Zum Drucken einer Seite wählen Sie Print aus dem Menü File oder geben nur p ein. Sie haben dann noch Gelegenheit, den richtigen Drucker auszuwählen; Sie können die Vorgabe löschen und einen anderen Namen eintragen. Der vorgegebene Name stammt aus Ihrer UNIX-Umgebung. Wenn Sie also einen Drucker namens »doorway« haben, sollte in Ihrer Startdatei etwa folgender Shell-Befehl stehen:

export PRINTER=doorway

Sie können auch mehrere Seiten auf einmal drucken. Einzelne Seiten wählen Sie mit einem Klick der mittleren Maustaste auf die entsprechenden Zahlen aus. Sie können zusammenhängende Seiten ausdrucken, indem Sie die erste Seite mit der linken und die letzte Seite mit der rechten Maustaste anklicken; nach der Eingabe von p werden alle diese Seiten gedruckt.

xman: Per Mausklick zu den Manual-Pages

Die Manual-Pages, mit dem Befehl man aufgeblättert, verkörpern die höchste Authorität auf einem UNIX-System. Andere Bücher können zwar die Funktionalität eines Befehls weitgehend erklären -- und das oft in einer angenehmer zu lesenden Form -- aber nur in der Man-Page finden Sie alle Details.

Im Abschnitt » Manual-Pages « in Kapitel 3 finden Sie alles Wichtige zu den Manual-Pages.

Mit dem Befehl xman steht Ihnen eine einfache X-Schnittstelle zu den Manual-Pages zur Verfügung. Wie es sich für ein Tool zur Anzeige von Texten gehört, enthält es auch eine ziemlich gute Beschreibung seiner selbst. Damit Sie diese Dokumentation bequem lesen können, sollten Sie das Programm mit einem großen Seitenformat starten:

eggplant$ xman -pagesize 650x600

Sie sehen als erstes einen kleinen Kasten mit drei Schaltflächen. Klicken Sie auf den Button Manual Page, um das Hauptfenster zu öffnen, in dem Sie den überwiegenden Teil der Arbeit erledigen werden.

Jetzt blicken Sie auf die Dokumentation zu xman . Lesen Sie hier bei einer anderen Gelegenheit weiter; im Augenblick sollten Sie das Menü Options öffnen und den Punkt Search anklicken -- oder drücken Sie CTRL-S. (Sie können das Options-Menü auch öffnen, indem Sie die CTRL-Taste gedrückt halten und mit der linken Maustaste klicken.) Geben Sie in dem Kasten, der sich dann öffnet, einen Befehl oder eine Funktion ein, über die Sie mehr erfahren möchten; beenden Sie die Eingabe mit RETURN. Der Inhalt des Hauptfensters wird dann durch die entsprechende Man-Page ersetzt.

Falls Sie nicht wissen, wonach Sie suchen müssen, können Sie auch das Menü Sections öffnen oder die CTRL-Taste zusammen mit der mittleren Maustaste drücken. Wählen Sie aus dem Menü, das dann erscheint, eine Section (Abschnitt) aus. Sie erhalten eine lange Liste mit den Namen von Manual-Pages. Sobald Sie einen der Namen mit der linken Maustaste anklikken, wird die Man-Page auf dem Bildschirm dargestellt.

Eine andere bewährte Methode der Suche nach Information ist der Befehl apropos (den wir bereits im Abschnitt » Manual-Pages « in Kapitel 3 besprochen haben. Drücken Sie wieder CTRL-S, geben Sie dann einen Begriff zu dem Thema ein, das Sie interessiert, und klicken Sie dann auf die Schaltfläche Apropos. Falls es Man-Pages gibt, die zu Ihrem Suchbegriff passen, werden die Namen zusammen mit einer kurzen Beschreibung angezeigt. Leider lassen sich die entsprechenden Manual-Pages nicht mit einem Mausklick aufrufen; diese kleine Vereinfachung fehlt in xman . Sie müssen also CTRL-S drücken und den Namen der gesuchten Man-Page eintippen.

Das Blättern innerhalb einer Manual-Page ist einfach. Mit der SPACE-Taste oder f bewegen Sie sich um eine Seite weiter, mit b geht es eine Seite zurück. Sie können auch die Laufleiste benutzen, wie Sie es von xterm her gewohnt sind.

Jetzt haben Sie die Dokumentation im Griff! Klicken Sie auf die Schaltfläche Help in dem kleinen Fenster, das beim Start von xterm erscheint. Zum Verlassen des Programms können Sie entweder CTRL-Q drücken, auf den Button Quit klicken oder den Punkt Quit im Menü Options anklicken.


Fußnoten

(1)
Na gut ein Kunstwerk ist das nicht gerade, aber wir brauchten ein einfaches Beispiel, das auf den meisten Bildschirmen funktioniert!
(2)
Falls Sie schon mit fvwm gearbeitet haben, werden Sie festgestellt haben, daß das Drücken der linken Maustaste, während der Cursor auf dem Fensterhintergrund steht, ein Menü öffnet. Mit dem Menüpunkt Quit fvwm verlassen Sie fvwm.
(3)
In Wirklichkeit haben die Ressource-Einträge eine viel komplexere Syntax als wir hier zeigen, und die Regeln zur Verknüpfung von Ressourcen mit ihren Werten sind reichlich kompliziert. Um die Sache überschaubar zu halten, zeigen wir ein brauchbares Modell für die Ressourcen eines Anwendungsprogramms und verweisen wißbegierige Leser auf ein gutes Buch zum Thema X.


Inhaltsverzeichnis Vorherige Abschnitt Nächste Abschnitt