Einleitung
Möchten Sie als neuer System-Administrator oder als Stand-Alone-User gerne größere
Flexibilität bei der Einrichtung von angepassten X-Sessions für sich selbst oder Ihre
User erwerben? Dieser Artikel verrät ihnen alles nötige dazu.
Er geht davon aus, daß das X Window System bereits installiert ist und mit
"startx" gestartet werden kann. Die Konfiguration eines Mehrbenutzersystems mit
xdm wird das Thema eines weiteren Artikels sein. Die wichtigsten Dateien werden im
Folgenden beschrieben:
.xinitrc
.xinitrc ist ein Shell-Skript, das vom startx-Befehl an xinit übergeben wird. Dieses
Skript setzt im Allgemeinen einige globale Variablen (Screensaver-Einstellungen,
Tastatur-Definitionen, etc.). Der gesamte Startvorgang wird von den Einstellungen
beeinflußt, die in diesem Skript vorgenommen werden.
.Xclients
Diese "Punkt"-Datei liegt im Home-Verzeichnis des Users und startet
benutzerspezifische Programme (im Unterschied zur globalen .xinitrc).
.Xresources
Diese Datei wird verwendet, um systemweite Voreinstellungen bestimmter 'Resourcen'
(Farben, Schriften, generelles Look and Feel) per Benutzer anpassen oder überschreiben zu
können. Damit lassen sich einige spektakuläre graphische Effekte erreichen.
Nun, da wir gesehen haben, welche Dateien für die X-Konfiguration eine Rolle spielen,
springen wir einfach mitten hinein ...
.xinitrc
Wenn der startx-Befehl gegeben wird, wertet xinit (der verantwortliche Befehl für den
X-Startprozess) entweder die globale /etc/X11/xinit/xinitrc oder, falls vorhanden, die
lokale ~/.xinitrc aus. Falls keine der beiden Dateien vorhanden ist, wird xinit die
Konfiguration übernehmen (keine gute Wahl). Die Datei xinitrc (lokale hat Vorrang vor der
globalen) ist ein Shellskript, das verschiedene X-Clients und zuletzt mittels des Befehls
"exec" den gewünschten Window Manager startet.
Die einfachste xinitrc könnte so oder so ähnlich aussehen:
# /etc/X11/xinit/xinitrc
#!/bin/sh
exec /usr/X11R6/bin/fvwm2
Diese Datei startet nur den F(eeble) Virtual Window Manager 2 und keine anderen
Clients. Nicht sehr nützlich, aber sinnvoll, wenn Sie in aller Eile ein Setup für einen
neuen Window Manager zusammen"hacken" wollen. Wenn wir einige Definitionen
einsetzen und einige zusätzliche Clients eintragen, die wir bei jedem Start von X zur
Verfügung haben wollen, wird die Sache schon interessanter...
#/etc/X11/xinit/xinitrc
#!/bin/sh
# Beseitigung des störenden Backspace Problems
xmodmap -e "keycode 22=BackSpace"
# Hintergrund
xsetroot -solid LightSlateGrey
# Screensaver nach 5 Minuten
xset s 300
# X-Clients, die immer gestartet werden sollen
xterm -g 80x20+150+8 & # startet ein xterm-Fenster
xterm -g 80x20+150+325 & # startet ein 2.xterm darunter
xload -g +4+0 & # startet ein cpu load meter
xclock -g +815+0 -digital & # startet eine Digitaluhr
# Start Window Manager
exec fvwm2
Screenshot einer X-Session mit dieser Konfiguration
Nun haben wir eine Datei, die das lästige Backspace Problem beseitigt (meistens),
unser NumLock setzt, den schlimmen Moiré-Hintergrund versteckt und ein paar Programme bei
jedem Start von X aufruft.
Zur Erinnerung: Wenn sie existiert, wird immer die lokale .xinitrc im Home-Verzeichnis
des Users benutzt. Dabei werden die Systemeinstellungen ignoriert. Beachten Sie bitte auch
die -g Option in den meisten Befehlszeilen. Das ist die für viele X-Programme verfügbare
Geometry-Option. Sie ermöglicht die Angabe von Größe und Position des Programmfensters.
Dazu wird folgende Syntax verwendet:
Breite x Höhe + x-Position + y-Position
Hier sollte man beachten, daß xterm (und die meisten Terminalprogramme) die Beite und
Höhe als Zeichen- und Zeilenanzahl versteht, während die anderen Programme für diese
Werte Pixel einsetzen. Wenn Sie dies nicht beachten, können sie ein paar überraschend
kleine Fenster bekommen! Schließlich sollten Sie auch das "&" am Ende aller
Programmaufrufe (außer dem Window Manager) beachten. Dieses Zeichen bewirkt, daß das
jeweilige Programm im Hintergrund läuft. Anderenfalls könnten Sie das nächste Programm
erst starten, wenn das vorherige beendet ist - und das macht keinen Sinn. Also wird NUR
der Window Manager im Vordergrund gestartet. Wenn Sie X verlassen, beendet er dadurch alle
Programme, die durch xinit gestartet wurden.
Jetzt haben wir ein recht funktionales Skript, das man global verwenden oder auch in
das Benutzerverzeichnis ablegen kann. Dort kann es weiter für bestimmte User angepasst
werden (z.B., ein spezielles Skript für jede Abteilung, sodaß eine technische Abteilung
eine andere X-Umgebung vorfindet als die Buchhaltung). Während es dabei interessante
Aspekte gibt, haben wir hier viele Möglichkeiten ausgelassen. Da xinitrc ein Shellskript
ist, kann man alle normalen Befehle einbinden und sie abarbeiten lassen.
Lassen Sie uns nun einen Blick auf ein fertiges Beispiel werfen, das die Befehle
xmodmap und xrdb benutzt um die User-spezifischen Einstellungen mit der systemweiten
xinitrc zu verbinden. Das erspart uns die Arbeit, eine spezielle .xinitrc in jedem
Benutzerverzeichnis anzulegen (Die Benutzung von Xclients und Xresources wird weiter unten
deutlich.
#/etc/X11/xinit/xinitrc
#!/bin/sh
# Pfad-Definition für globale and lokale Ressourcen
userclients=$HOME/.Xclients
userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap
sysresources=/usr/X11R6/lib/X11/xinit/.Xresources
sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap
# merge system and user Xdefaults and keyboard maps
if [ -f $sysresources ]; then xrdb -merge $sysresources; fi
if [ -f $sysmodmap ]; then xmodmap $sysmodmap; fi
if [ -f $userresources ]; then xrdb -merge $userresources; fi
if [ -f $usermodmap ]; then xmodmap $usermodmap; fi
# fix that annoying backspace problem
xmodmap -e "keycode 22=BackSpace"
# set background
xsetroot -solid LightSlateGrey
# screen saver after five minutes
xset s 300
# check for ~/.Xclients and execute else execute system
# default clients ( local and global are NOT merged)
if [ -f $userclients ]; then
exec $userclients
else
# start some default clients
xterm -g 80x20+150+8 &
xterm -g 80x20+150+325 &
xload -g +4+0 &
xclock -g +815+0 -digital &
# start window manager
fvwm2
fi
Screenshot
einer X-Session mit dieser Konfiguration
Hier haben wir zuerst alle systemweiten Tastatur- und Programmvorgaben geladen, die in
.Xmodmap und .Xresources festgelegt werden. Danach folgen die userspezifischen
Einstellungen aus dem jeweiligen Home-Verzeichnis. Als Nächstes fügen wir die
zusätzlich gewünschten Einstellungen hinzu, auch wenn sie nicht in den systemweiten oder
speziellen Vorgaben existieren (z.B. für die Backspacetaste oder Numlock). Nun prüfen
wir, ob der User in seinem Home-Verzeichnis Xclients definiert hat. Falls ja, wird es
geladen, anderenfalls starten wir einige systemweite Einstellungen. Beachten Sie, daß
diese zwei Zeilen im Unterschied zu den Vorigen nicht verbunden werden. Wenn der User
Xclients nicht definiert hat, wird sein Bildschirm so aussehen wie unser erster Screenshot im Gegensatz zu dem zuletzt gezeigten Screen; so haben wir die
Möglichkeit, mit einer xinitrc sowohl ein systemweites Look & Feel als auch
eine weitgehend angepasste Umgebung zu konfigurieren. Schließlich prüfen wir noch, ob
der/die gewünschte(n) Window Manager vorhanden ist/sind. Falls nicht, wird der "gute
alte" fvwm2 oder, falls auch der nicht existiert, der twm geladen. Jetzt haben wir
ein Setup, in dem wir, ohne jemals wieder unser Skript anzufassen, weitestgehende
Anpassungen für unsere User nur durch das Benutzen von entweder systemweiten oder
individuellen Skripte durchführen können. Dazu müssen nur noch die systemweiten Dateien
angepasst werden.
Lassen Sie uns einen Blick auf die im obigen Beispiel erwähnten Dateien
werfen...
.Xclients
Die Datei ~/.Xclients enthält User-spezifische Clients, die beim Start einer X-Session
eingelesen und ausgeführt werden sollen. Die Syntax entspricht vergleichbaren Befehlen in
der xinitrc. Dies ist die ~/.Xclients-Datei, die im oben gezeigten Beispiel aufgerufen wird:
xv -rmode -noresetroot -quit /usr/local/backgrounds/slate.xpm &
kfm &
kcontrol -init &
kbgndwm &
krootwm &
kpanel &
kvt &
kwm
Wie Sie an dem vorhergehenden Screenshot sehen, kann man .Xclients dazu einsetzen, mit
einem zentralen xinitrc angepasste Desktop-Umgebungen zu schaffen. In der oben gezeigten
.xinitrc werden keine Clients gestartet, wenn eine ~/.Xclients vorhanden ist. Ich benutze
dieses Setup so,
daß jeder User seinen bevorzugten Window Manager über .Xclients starten kann. Falls
system-spezifische Clients generell geladen werden sollen, muß das vor dem Aufruf einer
~/.Xclients geschehen (wenn .Xclients einen Aufruf eines Window Mangers enthält). Falls
Sie an meiner Desktop-Konfiguration aus dem letzten Beispiel interessiert sind, so sehen
Sie sich die Home-Page von KDE an. Die dritte
Beta-Version ist gerade herausgekommen und enthält eine Menge schöner Tools zur
Konfiguration der graphischen Oberfläche.
.Xresources
Ressourcen in X legen Programmeinstellungen entweder lokal (~/.Xresources) oder global
(/usr/X11R6/lib/X11/xinit/.Xresources) fest. X-Programme rufen Widgets auf, welche
spezielle Bibliotheken zur Programmierung der X-Window-Oberfläche sind. Es sind
graphische Kontrollelemente; es gibt Widgets, die Textfenster, Scrollbars,
Fensterhintergründe etc. implementieren. Die graphische Oberfläche eines X-Programms
besteht aus Widgets und ist daher weitreichend konfigurierbar.
Die graphische Oberfläche eines X-Programms ist gewöhnlich hierarchisch aufgebaut.
Z.B. können innerhalb eines Menü-Widgets mehrere Widgets für die einzelnen
Menüeinträge enthalten sein. Um Änderungen an einem bestimmten Widget zuordnen zu
können muß die Position (der Pfadname) der entsprechenden Komponente innerhalb der
Hierarchie angegeben werden. Als Beispiel sehen Sie einen Teil meiner ~/.Xdefaults, der
die Einstellungen meiner Terminalfenster festlegt:.
XTerm*Font: -misc-fixed-bold-r-normal-15-140-75-75-c-90-iso8859-1
XTerm*Background: black
XTerm*Foreground: cyan
XTerm*scrollBar: true
XTerm*saveLines: 500
Xterm*VT100.geometry: 80x24
Wildcards sind in dieser Datei erlaubt, daher definiert
*Foreground: cyan
*Background: black
ein Standard Look & Feel für alle Programme, die ansonsten keine definierten
Xresources-Einstellungen haben. Wenn Sie wie ich mehr Flexibilität (als durch die
Wildcards erlaubt) wünschen, sich aber keine Widgets-Hierarchien merken können, sehen
Sie sich editres an! editres ist ein GUI basiertes Konfigurationstool, das es Ihnen
erlaubt, bis ins Kleinste konfigurierte Einstellungen zu erstellen, ohne eine
.Xdefault-Datei schreiben zu müssen. Hier sehen Sie einen
Screenshot von editres in Aktion !
Nun sollten Sie langsam erkannt haben, daß Xdefaults einige aufregende Möglichkeiten
bietet, sowohl ein allgemeines Look & Feel zu erstellen als auch einzelne Programme
sehr komplex und detailliert zu konfigurieren. Sehen Sie sich an, was Xdefaults aus diesem
einfachen xcalc machen kann. Auf der X-Tips-Seite von Isolation
befindet sich ein Step-by-Step-Tutorial, mit dem man alle Fähigkeiten von editres
ausschöpfen kann.
Nun, das wär´s für diesen Monat. Ich hoffe, Sie wissen nun, daß X so
standardmäßig oder so speziell aussehen kann, wie Sie wollen, ohne daß Sie stundenlang
Skripte für jeden neuen User schreiben müssen. In der nächsten Ausgabe werden wir
(falls der Chefredakteur Miguel A .Sepulveda
erlaubt) uns anschauen, wie man mehrere X-Logons auf der gleichen Workstation mit Hilfe
des X-Display-Managers bekommt. Wenn Sie Fragen oder Kommentare haben, schreiben Sie mir. Bis nächstes Mal....
|