Beschreibung: Prüfungskandidaten sollten in der Lage sein, eine systemweite Desktopumgebung und/oder einen Window Manager einzurichten und ein Verständnis der Anpassungsprozedur für Menüs der Fenstermanager und oder der Desktop-Panele demonstrieren. Dieses Lernziel beinhaltet die Auswahl und Konfiguration des gewünschten X-Terminals (xterm, rxvt, aterm etc.), das Prüfen und Auflösen von Bibliotheksabhängigkeiten von X-Anwendungen und das Exportieren der Ausgabe von X-Anwendungen auf einen Client.
Die wichtigsten Dateien, Bezeichnungen und Anwendungen:
Erst durch das Starten eines Window-Managers wird der X-Server zur arbeitsfähigen Graphikstation. Erst der Window-Manager erlaubt es dem User, Fenster zu verschieben, in der Größe zu verändern oder in ein Icon zu verwandeln. Er definiert meist auch Menüs, die durch Drücken der verschiedenen Maustasten aktiviert werden können (wenn sich der Mauszeiger nicht innerhalb eines Fensters befindet).
Die Konfiguration der einzelnen Window-Manager ist so unterschiedlich, daß sich keinerlei allgemeine Regeln dazu formulieren lassen außer der, daß fast immer eine persönliche Konfigurationsdatei im jeweiligen Home-Verzeichnis eines Users befindet, die immer mit einem Punkt beginnt und auf rc endet. dazwischen steht meist der Name des Window-Managers. Also hat Motif eine .mwmrc-Datei, olwm wird in .olwmrc konfiguriert und fvwm2 in .fvwm2rc.
Die beiden Desktop-Umgebungen KDE und Gnome bieten zusätzlich zu den Features der Window-Manager noch eine vereinheitlichte Darstellung der jeweils verwendeten Programme und eine Schnittstelle für Programmierer, um ihre Programme entsprechend für diese Umgebungen auszustatten. Auch Features wie Drag&Drop werden dabei unterstützt.
Diese beiden Spezialfälle, die heute wohl eher als die Regel statt die Ausnahme zu bezeichnen sind, bieten vor allem eine Möglichkeit, ihre Konfiguration auf eine Art und Weise vornehmen zu lassen, wie sie die BenutzerInnen von Windows gewohnt sind. Kontextmenüs über die rechte Maustaste und Controlcenter in denen die gesamte Konfiguration graphisch vorgenommen werden kann, gehören zur Grundausstattung.
Auf anderen Fenstersystemen wie MS-Windows oder dem Macintosh-Finder werden alle Anwendungen auf der Anwendungsebene konfiguriert. Das macht Sinn, weil sowohl DOS als auch das Mac-OS Single-User-Systeme sind. Alle Konfiguration kann zentral gespeichert werden.
X11-Programme müssen anderen Anforderungen standhalten. Erstens ist Unix ein Mehrbenutzersystem und es ist daher nötig, daß alle User ihre individuellen Einstellungen machen können, zweitens weiß das X11-Programm noch nicht, auf welchem Server es dargestellt werden soll, es muß also auch in dieser Hinsicht konfigurierbar sein.
Es stehen bei allen X11-Clients zwei Konfigurationsmöglichkeiten zur Verfügung, die Kommandozeilenparameter und die Resourcen.
xterm -fn -misc-fixed-bold-r-normal--13-100-100-100-c-70-iso8859-1 &Damit ist ein xterm mit anderer Schrift gestartet. Vorsicht ist übrigens angesagt bei der Verwendung von anderen Schriftfamilien. In der Regel ist das kein Problem, aber ein xterm-Fenster simuliert eben ein Terminal. Werden hier Proportionalschriften verwendet, die für ein i weniger Platz als für ein o benutzen, so kann es zu heftigen Problemen beim Arbeiten mit bildschirmorientierten Programmen kommen. Eine Aufteilung in untereinanderliegende Spalten ist ja dann nicht mehr möglich. Xterm sollte also immer mit Schriften der Familie fixed benutzt werden.
Ein X-Client kann mit dem Parameter -geometry auf zweierlei Arten konfiguriert werden. Die Größe und die Position des Fensters auf dem Schirm kann angegeben werden. Zunächst zur Größe:
Wir wollen ein xterm-Fenster, das statt der Standardgröße 80 Spalten in 24 Zeilen jetzt 90 Spalten in 30 Zeilen besitzt. Kein Problem:
xterm -geometry 90x30 &Nach dem -geometry folgt also die Angabe der Spalten und Zeilen durch ein x getrennt. (Wem das geometry zu lang ist, der kann beruhigt sein - in den meisten Fällen funktioniert auch ein -g statt dessen).
Achtung: Die Angabe von Zeilen und Spalten bezog sich beim xterm auf Zeichen statt auf Pixel. Graphikorientierte Programme rechnen hier mit Pixel, zeichenorientierte Programme mit Zeichen. Um also etwa ein Programm wie xeyes (die wohlbekannten Augen) in der Größe zu verändern, muß mit Pixeln gerechnet werden.
Die andere Aufgabe, die mit -geometry erfüllt werden kann ist die Positionierung eines Fensters auf dem Schirm. Dazu wird der Offset zum Rand des Schirms angegeben, ein Pluszeichen meint den oberen bzw. den linken Rand, ein Minuszeichen den unteren bzw. rechten:
xterm -geometry +10+50 &positioniert die obere linke Ecke des Fensters also 10 Pixel vom linken Rand entfernt und 50 Pixel vom oberen Rand. Bei dieser Angabe sind übrigens immer Pixel die Maßangabe, nie Zeichen. Um sich auf die untere linke Ecke zu beziehen können wir schreiben:
xterm -geometry -30-100 &Wir erhalten ein Fenster, dessen untere rechte Ecke 30 Pixel vom rechten Rand des Bildschirms und 100 vom unteren Rand entfernt ist. Es ist sogar möglich, diese Angaben zu mischen. Die Zeile
xterm -geometry +10-100 &meint also ein Fenster, dessen linker Rand 10 Pixel vom linken Rand des Bildschirms entfernt ist und dessen untere Begrenzung 100 Pixel Abstand zum unteren Rand aufweist.
Die Angaben von Größe und Position lassen sich auch kombinieren. Dabei wird immer die Größe zuerst angegeben, danach (ohne Leerzeichen aber mit Vorzeichen + oder -) die Positionsangaben. Um etwa ein xterm mit 90 Spalten in 30 Zeilen an der Position 10,100 zu erhalten schreiben wir:
xterm -geometry 90x30+10+100 &Wird keine Angabe zur Position gemacht, so übernimmt der Window-Manager die Positionierung. Dabei kann meist eingestellt werden, auf welche Art und Weise diese Positionierung erfolgt (Userdefiniert mit Maus, zufällig, auf freien Bildschirmteilen, ...).
Um also ein xterm mit blauem Hintergrund und gelber Schrift zu erhalten benutzen wir die folgende Zeile:
xterm -bg blue -fg yellow &
xterm -geometry 90x30-10-10 \ > -fn -misc-fixed-bold-r-normal--13-100-100-100-c-70-iso8859-1\ > -fg blue -bg bisque2 &Zugegebenerweise wäre das etwas umständlich zu tippen. Um oft gebrauchte Einstellungen fest zu verändern steht uns das Resource-System zur Verfügung. Resources sind einfach nur Variablen, die ein Programm benutzt und die von außerhalb des Programms verändert werden können.
Die Grundeinstellungen dieser Resourcen stehen im Verzeichnis /etc/X11/app-defaults. Jeder User kann aber diese Werte verändern, so daß für ihn (und nur für ihn) Programme mit anderen Werten gestartet werden. Das geschieht in der Regel über die Datei .Xresources oder .Xdefaults im jeweiligen Home Verzeichnis des Users. Dort können Zeilen wie die folgenden eingetragen werden:
XTerm*font: -misc-fixed-bold-r-normal--13-100-100-100-c-70-iso8859-1 XTerm*Background: bisque2 XTerm*Foreground: blue XTerm*geometry: 90x40Diese Werte werden dann beim nächsten Start des X-Servers in den Speicher geladen und aktiviert. Jedesmal, wenn Sie jetzt xterm ohne Parameter aufrufen erscheint ein Fenster mit Hintergrundfarbe bisque2, Vordergrundfarbe blau, fetter Schrift und der Größe 90x40...
Um die Datei während des Betriebs zu laden (ohne den Server neu zu starten) kann der Befehl
xrdb -merge .Xresourcesangegeben werden. Der Parameter -merge sorgt dafür, daß die bestehenden Resourcendefinitionen, die durch die Veränderungen nicht betroffen wurden erhalten bleiben.
Welche Resourcen ein Client versteht kann in der Regel in seiner Handbuchseite nachgelesen werden.
Die grundsätzliche Form der Eingabe ist immer die gleiche:
XTerm*scrollbar:trueeine Scrollbar (Rollbalken) zugefügt werden. Damit alle diese Resourcen auch über die Kommandozeile möglich sind, gibt es den Parameter -xrm, dem ein Resourcenstring folgen kann. Damit ist es also auch möglich, Programmeinstellungen über die Kommandozeile zu machen, für die es zwar Resourcen gibt aber keine Parameter.
Einen ähnlichen Vorgang gibt es, wenn der X-Server vom Display-Manager gestartet wird. In diesem Fall wird die Datei /etc/X11/xdm/Xsession abgearbeitet.
Wenn im Homeverzeichnis eines Users ebenfalls eine Datei ~/.Xsession existiert, so wird auch diese Datei abgearbeitet. So kann jeder User seine Einstellungen persönlich verändern.
In vielen Distributionen rufen sowohl xinitrc, als auch Xsession einfach nur ein anderes Script auf, um zu einer gemeinsamen Konfiguration zu gelangen.
Damit es unter X11 möglich ist, lokale X-Clients ohne die Nennung eines Displays zu starten, wird beim Starten von X eine Umgebungsvariable DISPLAY definiert, die den Wert :0.0 beinhaltet. Dadurch wissen XClients auf welchen XServer sie zugreifen sollen, wenn keiner explizit angegeben wurde.
Ein Beispiel:
Wir sind im Rechner marvin eingeloggt und wollen hier das Programm netscape starten. Die Ausgaben dieses Programmes sollen aber auf dem XServer des Rechners hal ausgegeben werden. Wir schreiben also:
netscape -display hal:0.0Natürlich kann auch hier wieder statt dem Rechnernamen die IP-Adresse stehen.
Das Programm, mit dem diese Kontrolle realisiert wird heisst xhost und ist sehr einfach anzuwenden:
xhost [+|-] xhost Hostname xhost -HostnameWenn xhost ohne Argumente aufgerufen wird, so zeigt es den Status der Zugriffskontrolle (an- oder ausgeschaltet) und die Liste der authorisierten Rechner an.
Durch den Aufruf von xhost + wird alle Zugriffskontrolle ausgeschaltet, jeder Rechner kann jetzt auf den Server zugreifen.
Mit xhost - werden die Zugriffskontrollmechanismen wieder aktiviert, nur authorisierte Rechner dürfen auf den Server zugreifen.
Durch die Nennung eines Rechnernamens nach xhost (also etwa xhost hal) wird der angegebene Rechner in die Liste der authorisierten Rechner aufgenommen. Programme auf diesem Rechner können also jetzt ihre Ausgaben auf dem Server machen.
Die Zeile xhost -hal würde den Rechner hal wieder von der Liste der authorisierten Rechner streichen.
Selbstverständlich können diese Einstellungen auch beim Start von X11 automatisch ablaufen. Es ist nur nötig, sie in die jeweils verwendete xinitrc Datei zu schreiben. Also entweder in die systemweite in /etc/X11/xinit/xinitrc oder in die private $HOME/.xinitrc
Eleganter ist allerdings die Möglichkeit, eine Datei namens /etc/Xn.hosts zu verwenden, die eine Liste aller Rechner enthält, die Zugriff auf den Server haben sollen. Das n im Dateinamen steht für die Servernummer, in unserem Fall also immer die 0. Diese Datei ist nicht standardmäßig vorhanden, sie muß bei Bedarf vom Systemverwalter angelegt werden.