X11 Konfiguration
Willemers Informatik-Ecke

Auch unter dem X Window System lassen sich die meisten Konfigurationen über Textdateien erreichen, die man mit einem beliebigen Editor bearbeitet.

Farbbeschreibung

Unter X-Window können die verwendeten Farben der meisten Anwendungen bei ihrem Aufruf konfiguriert werden. Oben war schon einmal als Beispiel ein xterm mit blauen Buchstaben auf gelbem Grund gezeigt worden:

xterm -fg red -bg yellow &

Farbnamen stehen in rgb.txt

Die Datei rgb.txt findet sich im lib-Verzeichnis des X, beispielsweise unter /usr/lib/X11. Hier werden die RGB-Umsetzungen der bekannten Farbnamen abgestellt. Aus diesem Grund kann man viele Farben über ihre englischen Namen ansprechen. In den meisten Fällen kann man auch die Attribute light oder dark verwenden, wie beispielsweise lightcyan oder darkblue.

255 250 250             snow
248 248 255             GhostWhite
245 245 245             WhiteSmoke
255 228 181             moccasin
255 248 220             cornsilk
255 255 240             ivory
255 250 205             LemonChiffon
240 255 255             azure
240 248 255             alice blue
240 248 255             AliceBlue
230 230 250             lavender
255 255 255             white
  0   0   0             black
 47  79  79             DarkSlateGray
105 105 105             DimGray

Man kann auch direkt die Definition der RGB-Farben verwenden. Der Syntax lautet:

rgb:Rotanteil/Grünanteil/Blauanteil

Die Werte für die jeweiligen Anteile werden hexadezimal, ein- bis vierstellig angegeben.

Schriften

xlsfonts zeigt Liste aller Schriften

Mit dem Kommando xlsfonts kann man sich alle Zeichensätze ansehen, die X zur Verfügung stehen. Die Liste dürfte im Normalfall recht lang sein. Die Namen der Schriften enthalten auch technische Details, die man bei der Angabe eines Zeichensatzes ungern mit angeben möchte. Hier hilft X, mit der Möglichkeit bei der Auswahl der Schriften Wildcards zu verwenden, wie man sie von der Shell kennt. Der * steht wie dort für beliebig viele beliebige Zeichen. Wenn ein Kommando mit einem Stern für die Schriften in der Shell aufgerufen wird, muss der entsprechnde Parameter in Anführungszeichen stehen, damit die Shell nicht versucht, ihn aufzulösen.

xfd zeigt eine Schrift

Zum Betrachten eines Zeichensatzes dient das Programm xfd. Der gewünschte Zeichensatz wird mit der Option -fn angegeben. Mit diesem Tool kann man nicht nur das Aussehen der Zeichensätze anzeigen lassen. Man kann sich auch die Größe jedes einzelnen Zeichens ansehen. Dazu kann man erkennen, ob die Schriftbezeichnung, die man beim Aufruf von xfd verwendet hat, auch eine Schrift anzeigt, wie man sie sich vorgestellt hat.

gaston > xfd -fn "*helvetica*-180-*" 
gaston > xterm -fn "*helvetica*-180-*" 

Im ersten Schritt läßt man sich den Font mit dem Namen helvetica anzeigen. In der zweiten Zeile wird gezeigt, dass man den gleichen Parameter bei den meisten X-Programmen verwenden kann, um deren Schrift zu bestimmen.

Die oben angegebene Schrift heißt korrekt auf meinem System

-Adobe-Helvetica-Bold-O-Normal--18-180-75-75-P-104-ISO8859-1

Trotzdem nach >>helvetica<< gesucht wurde, wurde >>Helvetica<< gefunden. Man sieht deutlich, dass bei den Schriftnamen Klein- und Großschreibung nicht relevant ist. Der Name der Schrift enthält mehrere Informationen über die Schrift selbst.

Adobe
Der Hersteller der Schrift.
Helvetica
Die Schriftfamilie. Daneben gibt es noch Schriften wie Times oder Courier. Übrigens ist die Schrift Arial fast nur unter MS-Windows verfügbar. Darum sollte man sie nicht unbedingt im Internet verwenden oder wenn man seine Dokumente mit einem Macintosh-Besitzer austauscht.
Bold
Dies bezeichnet, wie fett die Schrift ist. Wer auf Diät ist, sollte statt bold (fett) lieber light oder medium verwenden.
O
Das O steht für oblique und bezeichnet die Neigung der Schrift. Alternativ steht hier R für roman oder I für italic (kursiv).
18
Die Zeichenhöhe in Pixeln
180
Der Schriftgrad in zehntel Punkt. Diese Schrift ist also eine 18 Punkt Schrift. Ein Punkt ist eine Maßeinheit aus dem Satzgewerbe und entspricht etwa 1/72 Zoll.
75-75
Die horizontale und vertikale Auflösung des Gerätes, für das die Schrift entwickelt wurde. In diesem Fall ist die Auflösund des Zielgerätes 75 dpi in der Breite und in der Höhe. Ein Bildschirm liegt normalerweise etwa in der Auflösung zwischen 75 und 100 dpi.
P
Das P steht für proportional, bei Schriften mit festem Zeichenabstand wird ein M für monospaced verwendet.
ISO8859-1
Das ist der Zeichensatz, der verwendet wird. Es handelt sich um das >>Latin Alphabet No. 1<<, dass mehrere europäische Sprachen unterstützt.

Will man eine Schrift der Familie Times mit mittlerer Dicke ohne Neigung in der Größe 12 Punkt ansehen, würde man folgende Bezeichnung verwenden:

xfd -fn "*-Times-Medium-R-*-120-*"
xlsfonts "*-Times-Medium-R-*-120-*"

Der Aufruf von xfd zeigt den ersten passenden Zeichensatz an. Der Aufruf von xlsfonts zeigt an, welche passenden Schriften installiert sind.

Wer seinem System Schriften hinzufügen will, findet weitere Informationen auf den Manpages von mkfontdir, xset und dem Font Manager xfs.

Bitmaps

bitmap

X liefert das Programm bitmap zum Erstellen von Icons mit. Damit kann kann man Mauszeiger oder Symbole für Programme gestalten. Die Bedienung von bitmap ist intuitiv. Man bekommt ein Raster in dem man sein Icon malen kann. Mit der linken Maustaste setzt man einen Punkt, mit der rechten Taste löscht und mit der mittleren invertiert man den Punkt.

Das Icon wird als Textdatei abgespeichert, genauer gesagt findet man darin sogar den C Quelltext. Mit den Programmen atobm bzw. bmtoa kann die Bitmap konvertiert werden.

xsetroot

Das Programm xsetroot bestimmt den Bildschirmhintergrund. Mit der Option -bitmap kann man auch Icons als Hintergrund verwenden. Sie werden dann gekachelt. Die Option -solid Farbe wird der Hintergrund eingefärbt.

Ressourcen

Ressourcen sind Vorgabeeinstellungen

Unter Ressourcen versteht man unter X Vorgabedateien, in denen man definieren kann, welche Vorgabewerte ein Programm bekommt. Je nach Programm können dort Programmparameter angepasst werden. Vor allem kann man die Eigenschaften bezüglich des grafischen Erscheinungsbildes verändern.

Es gibt verschiedene Dateien, in denen die Ressourcen definiert werden können.

/usr/lib/X11/app-defaults/Klassenname
Diese Datei enthält für die Applikation der Klasse Klassenname die für das System geltenden Ressourcen.
$HOME/Klassenname
Hier stehen die vom Anwender spezifizierten Ressourcen für die Applikation der Klasse Klassenname.
$HOME/.Xdefaults
Hier stehen die vom Anwender definierten Ressourcen
$HOME/.Xdefaults-host

Als Beispiel soll die Uhr xclock mit rotem Hintergrund und blauen Zeigern erscheinen. Dazu legt man im eigenen Heimatverzeichnis die Datei XClock an und schreibt folgendes hinein:

*foreground: blue
XClock*background: red

xprop

Nach dem Start von xclock erscheint eine Uhr mit rotem Hintergrund und blauen Minutenunterteilungen. Nennen wir die Datei XClock in xclock um, passiert dies nicht mehr. Der Grund liegt darin, dass XClock der Klassenname des Programms xclock ist. Daraus stellt sich die Frage, wie man diesen Namen erfährt. Da kann das Programm xprop helfen. Nach dem Start aus einer Shell verwandelt sich der Cursor in ein Kreuz. Klickt man nun ein Fenster an, erhält man diverse Informationen. Unter WM_CLASS findet man zwei Namen. Der zweite ist normalerweise der Klassenname. Es folgt das Protokoll. Zuerst wurde xclock in den Hintergrund gestartet. Nach dem Aufruf von xprop ändert sich der Mauscursor zum Fadenkreuz. Durch das Anklicken des Fensters von xclock erscheint die untenstehende Ausgabe.

gaston> xclock &
[1] 3094
gaston> xprop
_NET_WM_ICON_GEOMETRY(CARDINAL) = 980, 602, 38, 20
WM_PROTOCOLS(ATOM): protocols  WM_DELETE_WINDOW
_NET_WM_DESKTOP(CARDINAL) = 1
_KDE_NET_WM_FRAME_STRUT(CARDINAL) = 4, 4, 20, 8
_NET_WM_VISIBLE_NAME(UTF8_STRING) = 0x78, 0x63, 0x6c, 0x6f,...
WM_STATE(WM_STATE):
                window state: Normal
                icon window: 0x0
SM_CLIENT_ID(STRING) = "11c0a86d90000102321350600000010070034"
WM_CLIENT_LEADER(WINDOW): window id # 0x4000009
WM_LOCALE_NAME(STRING) = "C"
WM_CLASS(STRING) = "xclock", "XClock"
WM_HINTS(WM_HINTS):
                Client accepts input or input focus: False
                Initial state is Normal State.
                bitmap id # to use for icon: 0x4000001
                bitmap id # of mask for icon: 0x4000003
WM_NORMAL_HINTS(WM_SIZE_HINTS):
                program specified size: 164 by 164
                window gravity: NorthWest
WM_CLIENT_MACHINE(STRING) = "gaston"
WM_COMMAND(STRING) = { "xclock" }
WM_ICON_NAME(STRING) = "xclock"
WM_NAME(STRING) = "xclock"
gaston>

Manpages informieren über Ressourcen

Die nächste Frage ist, woher man weiß, dass man mit background den Hintergrund und mit foreground die Minutenstriche färbt. Die einfachste Lösung ist ein Blick in die Manpages. Dort stehen normalerweise die Attribute dokumentiert, die man per Ressource verändern kann.

Sterne als Platzhalter

Zu guter Letzt stellt sich die Frage nach den Sternen. Auch hier in den Ressourcen verwendet man den Stern für beliebig viele beliebige Zeichen. Die obere Zeile gibt an, dass alles, was auf foreground endet, blau sein soll. Die darunter liegende Zeile schränkt die angesprochenden Objekte stärker ein. Zuerst muss XClock erscheinen, dann irgend etwas und zu guter Letzt background. Da beides in der Datei XClock steht, kann es nur xclock betreffen. Wenn beides aber in der .Xdefaults stünde, wäre die Einschränkung auf XClock schon wichtig.

Jedes einzelne Widget kann angesprochen werden. Um mehrere Widgets in einer Zeile zu definieren, kann der Stern verwendet werden. Eine solche Datei kann beispielsweise aussehen:

bitmap*Dashed:  off
XTerm*cursorColor:  gold
XTerm*multiScroll:  on
XTerm*jumpScroll:  on
XTerm*reverseWrap:  on
XTerm*curses:  on
XTerm*Font:  6x10
XTerm*scrollBar: on
XTerm*scrollbar*thickness: 5
XTerm*multiClickTime: 500
XTerm*charClass:  33:48,37:48,45-47:48,64:48
XTerm*cutNewline: off
XTerm*cutToBeginningOfLine: off
XTerm*titeInhibit:  on
XTerm*ttyModes:  intr ^c erase ^? kill ^u
XLoad*Background: gold
XLoad*Foreground: red
XLoad*highlight: black
XLoad*borderWidth: 0
emacs*Geometry:  80x65-0-0
emacs*Background:  rgb:5b/76/86
emacs*Foreground:  white
emacs*Cursor:  white
emacs*BorderColor:  white
emacs*Font:  6x10
xmag*geometry: -0-0
xmag*borderColor:  white

Jeder Benutzer kann in seinem Verzeichnis unter dem Namen .Xdefaults eine Datei anlegen, die bei Start automatisch zu den Systemressourcen hinzugeladen wird.

Konfiguration des Fenstermanagers

Die Startupdatei liegt bei den meisten Fenstermanagern im Verzeichnis /usr/lib/X11. Darin befindet sich ein Verzeichnis mit dem Namen des Fenstermanagers, in dem sich wiederum eine system.XXwmrc findet. Hierin werden Menüs, Tastenzuordnungen und Mausaktionen definiert.

Menu DefaultRootMenu
{
        "Root Menu"             f.title
        "New Window"            f.exec "xterm -e /bin/bash &"
        "Shuffle Up"            f.circle_up
...
        "Restart fvwm"          f.restart "fvwm"
        "Quit..."               f.quit_mwm
}

Fenstermanager haben untschiedlichen Syntax

Der Ausschnitt stammt aus der Konfigurationsdatei eines twm. Dieser Syntax gilt aber leider nicht für alle Fenstermanager. Entsprechend macht es wenig Sinn, an dieser Stelle das Thema besonders zu vertiefen. Informationen über den Syntax und die Möglichkeiten des jeweiligen Fenstermanagers finden sich in dessen Manpage.

Fokus und Z-Anordnung

Aktive Fenster

Unter dem Fokus versteht man bei grafischen Oberflächen das Element, das auf die Tastatureingabe anspricht. Man kann auch vom aktiven Fensterelement sprechen. Unter der Z-Anordnung versteht man die Rangfolge der Fenster übereinander. Vom Macintosh und auch später von MS-Windows sind PC-Benutzer es gewohnt, dass das Fenster, das als letztes angeklickt wurde, nach vorn kommt und damit in der Z-Anordnung die erste Position einnimmt und den Fokus erhält. Dieses Verhalten ist bei X konfigurierbar. Standardmäßig wurde X immer so ausgeliefert, dass das Fenster oder auch Element unter dem Mauszeiger den Fokus erhielt. Das bedeutet nicht zwingend, dass dieses Fenster auch nach >>vorn<< kommt. Das geschieht durch Anklicken oder durch eine einstellbare Verzögerungszeit.

schneller Fokuswechsel

Man muss auf solchen Systemen ein wenig aufpassen, wo man den Mauszeiger auf dem Bildschirm hinschiebt. Hat man sich an diese Technik gewöhnt, geht das Arbeiten mit mehreren Fenstern aber sehr viel schneller.

Seit Motif: click to focus

Unter Motif wurde erstmals das vom Mac gewohnte Verfahren als Standard verwendet. Man spricht vom >>click to focus<<. Die Behandlung des Fokus wird bei Motif in den Ressourcen festgelegt. Dort stehen drei Variablen für Mwm zur Verfügung, mit denen das Fokusverhalten bestimmt wird. Wenn ein Benutzer ein anderes Verhalten haben möchte, als das vom System vorgegebene, so kann er dies durch Einträge in die Datei ~/.Xdefaults umstellen. Die folgende Einstellung erzeugt die klassische Art des Fokus unter der Maus und wartet 250ms bis das Fenster nach vorn springt.1)

Mwm*keyboardFocusPolicy: pointer
Mwm*focusAutoRaise: True
Mwm*autoRaiseDelay: 250

autoRaiseDelay beruhigt den Bildschirm

Der Grund, warum man eine Verzögerung beim Hochkommen der Fenster einbaut, liegt darin, dass ansonsten bei einer schnellen Bewegung mit der Maus über den Bildschirm alle Fenster hin- und herspringen. Die Standardeinstellung der FocusPolicy heißt explicit.

Auch unter den modernen Desktops wie KDE, GNOME und CDE läßt sich die Fokusstrategie auf diese Weise einstellen. Man findet sie im KDE Kontrollzentrum bzw. im CDE Window Style Manager jeweils unter Window Behavior.


1 vgl. OSF/Motif User's Guide. Open Software Foundation. Revision 1.2. 1992. pp. 5-17,5-18.

Diese Seite basiert auf Inhalten aus dem Buch Arnold Willemer: Wie werde ich UNIX-Guru?