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....
|