[Next] [Previous] [Top]

UNIX-Lehrtext

11. Das X-Window-System


Das X-Window-System ist ein frei erhältliches Window-System, das am MIT entwickelt wurde. Es läuft auf vielen verschiedenen Plattformen und gestattet es, sich Fenster über das Netz von einer anderen Maschine öffnen zu lassen. Die Portabilität und die Netzwerkfähigkeit von X machen es anderen Window-Systemen (wie etwa Sunview) überlegen. Es gibt einige kommerzielle Produkte (z.B. Openlook und Motif), die auf X aufbauen und daher ähnlich zu benutzen sind. Die derzeit aktuelle Version von X ist X11, momentan Release 5 (oft als X11R5 bezeichnet). Die folgenden Ausführungen beziehen sich auf X11. In graphischen Oberflächen, die auf X11 aufbauen, haben die Kommandos oft andere Namen und Optionen. Die prinzipielle Funktionsweise ist aber dieselbe.

Loggt man sich an einer X-fähigen Maschine ein, so erfolgt oft schon das Login unter X, und nach dem Einloggen erscheinen dann meistens mehrere Fenster. An manchen Systemen muss X11, d.h. der X-Server, erst gestartet werden. Das dafür notwendige Kommando ist oft so etwas wie xinit oder xstart, eine feste Regel gibt es jedoch nicht.

Es gibt viele Anwendungen unter X11:

Viele Dinge um X herum, z.B. welcher Window-Manager verwendet wird oder welche Graphikprogramme zur Verfügung stehen, sind völlig von der lokalen Installation abhängig und werden daher hier nicht diskutiert. Auf den folgenden Seiten werden einige grundlegende Dinge zu X erklärt, so dass es Ihnen möglich sein sollte, sich durch Ihr lokales System durchzukämpfen -- auch wenn es sich dabei um einen wahren X-Dschungel handeln sollte!

11.1 Die Rolle der Maus

Sitzt man vor einem X-Window-Bildschirm mit einigen offenen Fenstern, so sieht man, dass das Bewegen der Maus den sog. Mauscursor über den Bildschirm bewegt. Wenn er sich innerhalb eines Fensters befindet, so kann dieses als aktiv, d.h. zur Eingabe bereit, markiert werden. So eine Markierung erfolgt etwa über einen Farbwechsel der Titelleiste. Manche Window-Manager verlangen hingegen, dass ein Fenster durch eine zusätzliche Aktion wie das Drücken eines Mausknopfes aktiviert wird. Wenn kein Fenster aktiv ist und man dennoch eine Eingabe versucht, so geschieht überhaupt nichts.

Der reine Hintergrund, auf dem sich all die Fenster und sonstigen Anwendungen befinden, heisst "Root Window".

Die Wirkung, die durch das Drücken eines der drei Mausknöpfe erzielt wird, hängt vom Kontext ab, in dem dieser Knopf gedrückt wird. Der Kontext bestehtaus

Hier ist eine Liste von gebräuchlichen Kontexts und ihren Wirkungen. Die resultierenden Aktionen, die in dieser Liste aufgeführt werden, können nur Beispiele sein, da sie in den meisten Fällen vom Window-Manager - z.B. mwm - und lokalen Konfigurationen abhängen.

Titelleiste eines Fensters
Bewegen eines Fensters, sowie Aendern der Position des Fensters im Fenster-Stapel; abhängig vom Windowmanager.
Grössenversteller in der Titelleiste
dient zum Aendern der Fenster-Grösse; hängt vom Windowmanager ab, wird aber sehr häufig verwendet (oft ein kleines Kästchen am rechten Rand der Titelleiste). Der genaue Mechanismus ist aber für verschiedene Windowmanager unterschiedlich.
Icon-Marke in der Titelleiste
verwandelt das Fenster in ein kleines Kästchen (Icon), das am Rand des Bildschirms erscheint. Hängt vom Windowmanager ab, wird aber sehr häufig verwendet.
Icon
der Mausdruck auf ein Icon restauriert das Fenster wieder, von dem das Icon erzeugt wurde.
Am besten probieren Sie gleich einmal aus, welchen Effekt die verschiedenen Mausknöpfe auf den diversen Kontexten auf Ihrem System haben!

11.2 Startup-Dateien in X

Aehnlich wie die Shell hat auch das X-Window-System Startup-Dateien. Diese kontrollieren z.B., welche Farbe und Schriftart ein xterm als Voreinstellung hat, welche Anwendungen automatisch nach dem Login gestartet werden, wo System-Meldungen erscheinen sollen usw. Leider gibt es keine Konventionen, wie diese Startup-Dateien heissen. Die Namen hängen daher von der lokalen Installation ab. Beispiele: ".xinitrc", ".Xdefaults", usw.

11.3 Der Window-Manager

Dieses Ding ist -- neben Ihnen -- verantwortlich für das Chaos auf Ihrem Bildschirm. Meistens führt der Windowmanager an der Seite des Bildschirms eine Liste aller derzeit laufenden X-Anwendungen. Er stattet die xterms mit Titelleiste, Grössenversteller und Icon-Marke aus. Oft werden auch mehrere Pull-Down-Menüs zur Verfügung gestellt, die durch Drücken der Mausknöpfe vor dem Root-Window zugänglich werden.

Eine der Aufgaben des Windowmanagers ist es, Fenster zu bewegen und an die richtige Stelle zu setzen. Erscheint ein neues Fenster, so zeigt der Windowmanager meist ein Gitter, das am Maus-Cursor hängt. Mithilfe des Mauscursors kann nun dieses Gitter an die gewünschte Stelle des Bildschirmes gebracht werden. Drücken eines Mausknopfes positioniert das Fenster.

Auch der Windowmanager hat eine Startup-Datei. So heisst die Startup-Datei des twm ".twmrc", bzw. des mwm ".mwmrc". In dieser Datei befindet sich u.a. die Beschreibung der Menüs, die unter verschiedenen Kontexten verfügbar sind.

11.4 Die Terminalemulation xterm

Der einfachste Weg, ein xterm zu starten, ist durch Eingabe des Kommandos

xterm &
Dabei nicht das &-Zeichen für den Start im Hintergrund vergessen, da sonst das Terminal, von dem aus das Kommando abgesetzt wurde, darauf wartet, dass das neue xterm beendet ist, bevor der Prompt wieder erscheint.

Es gibt einige Optionen, mit denen man das Erscheinungsbild des xterm steuern kann. Hier eine kleine Liste:

-fn <Schriftart>
das Fenster erscheint mit der angegebenen Schriftart (Font). Leider gibt es keine einfache und bequeme Möglichkeit, sich alle verfügbaren Schriftarten anzusehen. Die Kommandos xlsfonts, xfd fontname und xfontsel können dabei helfen, sofern sie auf Ihrem System vorhanden sind (siehe auch die entsprechenden Manuale). Einige gebräuchliche Schriftarten sind 6x10 (sehr klein), 6x13, 7x14, 10x20 (gross). Diese Fontnamen sind übrigens Abkürzungen; Fontnamen unter X sind nämlich sehr lang. Siehe dazu auch die Manuale zu X und xterm.
-geometry <Geometrie>
dient zur Angabe von Grösse und Plazierung des Fensters. Geometrie ist ein Ausdruck der Form "Spalten x Reihen +xoffset +yoffset". Das bedeutet, dass ein xterm so viele Zeichen pro Zeile haben soll, wie Spalten, und so viele Zeilen, wie Reihen angegeben sind. xoffset und yoffset bestimmen den Ort des Fensters. Sie werden in Pixeln vom linken Bildrand bzw. vom oberen Bildrand aus gemessen. Ersetzt man die "+" Zeichen durch "-", so wird von rechts bzw. von unten aus gemessen. Es können auch nur die Reihen und Spalten oder nur die Plazierung angegeben werden. Innerhalb der Option dürfen keine Leerzeichen auftauchen.
-bg <Farbe>
setzt die Hintergrund-Farbe. Farben können mit besonderen Farbnamen angegeben werden. Die Farbnamen können durch showrgb aufgerufen werden.
-fg <Farbe>
setzt die Farbe des Fenstervordergrundes.
-n <Name>
Der Name des Fenster im iconifizierten Zustand.
-T <Titel>
Der Titel des Fensters, der in der Titelleiste erscheint.
-e <Kommando>
Kommando wird ausgeführt, wenn das Fenster aktiviert wurde. Diese Option muss als letzte angegeben werden.

xterm -fn 7x14 -g 80x60 -n Manual -T Manual -e man xterm &

startet ein langes Fenster mit einem etwas grösseren Font, das als Icon und in der Titelleiste "Manual" genannt wird. In diesem Fenster wird die Manualseite für xterm aufgerufen. Einige Windowmanager können einen Teil dieser Optionen ignorieren.

11.5 Benutzung von X im Netzwerk (xhost, DISPLAY)

Stellen Sie sich ein xterm vor, in dem Sie ein rlogin an eine andere Maschine laufen haben. Sie wollen nun auf dieser anderen Maschine eine X-Anwendung starten, aber diese natürlich auf der Maschine, vor der Sie sitzen, dargestellt haben. Diese Situation ist ziemlich häufig gegeben, wenn spezielle Programme nur an einigen Maschinen verfügbar sind. Damit das funktioniert, müssen Sie nun zwei Dinge tun:

1.) xhost

Erlauben Sie der entfernten Maschine, Fenster auf Ihrem Bildschirm zu öffnen. Dies könnte theoretisch durch Absetzen des Kommandos

 xhost Name_der_entfernten_Maschine
auf der lokalen Maschine geschehen.
Aber Achtung! Irgendein User auf der entfernten Maschine, z.B. rzuaix, kann sich nun Ihren Bildschirm anschauen. Das Zentrum Informatikdienste empfiehlt daher eine zweite Methode, den MAGIC-COOKIE-Mechanismus, der an einem anderen Ort beschrieben ist... Siehe

 man xauth
Dabei befindet sich auf der lokalen Maschine im Homedirectory ein File mit dem Schlüssel, das nur der Eigentümer lesen kann; es heisst ".Xauthority". Dieser Schlüssel muss dem zutrittsberechtigten User geschickt werden, welcher den Schlüssel in sein eigenes .Xauthority-File einbaut. Dieses File, das angeschaut werden kann, wird mit dem xauth-Programm verwaltet. Das Ganze ist etwas umständlich und muss nach jedem Starten des X-Servers auf der lokalen Maschine neu gemacht werden (.xinitrc), da der Schlüssel neu generiert wird und nicht ewig gilt.

2.) DISPLAY

Teilen Sie der entfernten Maschine mit, wo die X-Anwendung dargestellt werden soll. Dazu setzen Sie die Variable DISPLAY auf der entfernten Maschine auf den Display-Namen Ihrer lokalen Maschine. Der Display-Name ist

 Maschinenname:0
falls an der Maschine nur ein Bildschirm hängt. Bei mehreren Bildschirmen ändert sich lediglich die Ziffer am Ende des Display-Namens. Das Setzen der DISPLAY Variable würde in ksh durch folgendes Kommando auf der entfernten Maschine geschehen:

 export DISPLAY=lokaler_Maschinenname:0

Sind diese beiden Schritte durchlaufen, so genügt es, das Kommando für die X-Anwendung auf der entfernten Maschine zu geben.

Es gibt einige besonders dumme Programme, die sich unter X beschweren, wenn man sie auf der eigenen, lokalen Maschine ausführen will. Zunächst sollte man nachsehen, ob die Variable DISPLAY richtig gesetzt ist (das gilt auch für weniger dumme Programme) und sie eventuell richtig setzen. Hilft das immer noch nichts, muss man das Kommando xhost auf der lokalen Maschine mit dem lokalen Maschinennamen angeben.

11.1 Die Rolle der Maus
11.2 Startup-Dateien in X
11.3 Der Window-Manager
11.4 Die Terminalemulation xterm
11.5 Benutzung von X im Netzwerk (xhost, DISPLAY)

UNIX-Lehrtext - 23 SEP 94
[Next] [Previous] [Top]

Generated with WebMaker