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.