Home Index Search Links About Us  
[LinuxFocus Image]
[Navegation Bar]
  Neuigkeiten   Archiv   Firmen   Tips  

X - Konfiguration:

Wozu sind eigentlich all diese "Punkt"-Dateien da?

von Joel McCarty

Aus dem Englischen ins Deutsche übersetzt von Wolfgang Bornath
 

Einleitung

.xinitrc

.Xclients

.Xresources

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


Für weitergehende Informationen
  • Lesen der manual pages für xinit und X. 
    •  
© 1998 Joel McCarty 
Diese Webseite wird unterhalten von Miguel A. Sepulveda und Franz-Josef Lücke.