11 Konfiguration von X-Server und grafischer Ober- fläche

Transcription

11 Konfiguration von X-Server und grafischer Ober- fläche
11 Konfiguration von X-Server und grafischer Oberfläche
In diesem Kapitel lernen Sie:
• Die Architektur des X-Window-Systems kennen
• Das X-Window-System mit Hilfe des Konfigurationsprogramms zu konfigurieren
• Wie man das X-Window-System startet
• Die Funktionsweise von Display-Managern kennen
• Das grafische Login zu aktivieren
• Die Bedeutung von X-Ressourcen kennen
• Wie man einen Window-Manager konfiguriert
11.1 Einleitung
Das X-Window-System ist eine Sammlung von Funktionen und Protokollen, mit deren Hilfe grafische Informationen auf dem Bildschirm ausgegeben werden können.
Die Protokolle und Funktionen sind auch für die Verwaltung der Maus und der Tastatur zuständig. Die große Stärke von X liegt in seiner konsequenten Client-ServerArchitektur, die es Programmen, die unter dem X-Window-System laufen, auch ermöglicht, Ausgaben über das Netzwerk an entfernte Rechner zu schicken.
Das X-Window-System wurde vom Massachusetts Institute of Technology (MIT) entwickelt und ist auch die Basis der grafischen Schnittstelle unter Linux. Das X-System
besteht aus zwei Hauptkomponenten: Dem X-Server und dem Window Manager. Der
X-Server stellt eine Schnittstelle zwischen dem X-Window-System und der Hardware
dar. Der Window-Manager ist für die Darstellung der Fenster auf dem Bildschirm verantwortlich. Er gibt den Fenstern ihr charakteristisches Aussehen und ihre Bedienelemente, mit denen sie minimiert, geschlossen oder vergrößert werden können.
Da das Aussehen der Fenster vom Window-Manager abhängt und es eine sehr große
Zahl von Window-Managern gibt, ist das Aussehen der Fenster und ihrer Bedienelemente nicht standardisiert. Darüber hinaus hängt das Aussehen der Bedienelemente
innerhalb der Fenster (Menüleisten, Schalter, Schieberegler, usw.) von der vom Programm benutzten Bibliothek ab, was weiter zur Verwirrung beiträgt. Es gibt zwar
Desktop-Projekte, die eine Vereinheitlichung anstreben, aber es sind wiederum mindestens zwei, nämlich Gnome und KDE, die sich bislang nicht auf gemeinsame Standards einigen konnten.
267
Konfiguration von X-Server und grafischer Oberfläche
Zwei Eigenschaften des X-Window-Systems sind die virtuellen Desktops und virtuelle
Screens. Dabei erlaubt X, die Bildschirmfläche größer zu definieren als das tatsächlich
vom Monitor dargestellte Bild. Das Bild wird automatisch verschoben, sobald die
Maus das Ende des gerade dargestellten Bildschirmausschnitts erreicht. Außerdem
können praktisch alle Window-Manager unterschiedliche virtuelle Bildschirme verwalten, mit denen gleichzeitig gearbeitet werden kann. Wenn Sie dabei noch über die
entsprechende Hardwareaustattung verfügen, können Sie die Bildschirme über unterschiedliche Grafikkarten auf verschiedenen Monitoren ausgeben. Diese Arbeitsweise
ist gerade im CAD-Bereich weit verbreitet.
Im Moment sind zwei Versionen von XFree86 im Gebrauch:
Version 3.3 hat eine monolithische Architektur. Das heißt, es gibt mehrere X-Server,
in die Treiber für verschiedene Grafikchipsätze fest eingebunden sind. Dieses
Vorgehen hat den Nachteil, daß Hersteller keine Grafiktreiber entwickeln konnten, ohne wegen der Lizenz von XFree86 zwangsweise den Quellcode offenlegen zu müssen. Damit würden die Hersteller der Konkurrenz Einblicke in die
Architektur ihrer Hardware geben.
Version 4.2 ist dagegen modular aufgebaut. Grafiktreiber können also einfach als Modul geladen werden. Damit können Hersteller Treiber in Binärform liefern, ohne den Quellcode offen legen zu müssen. Außerdem enthält sie Neuerungen,
wie etwa die Unterstützung von Hardware-3D-Beschleuniger-Karten oder Grafiktablets, sowie eine verbesserte Fontdarstellung, die nun auch Anti-Aliasing
ermöglicht.
Im weiteren Verlauf des Kapitels wird die Konfiguration von XFree86 Version 4 erklärt. Davon zu unterscheiden ist die Version des X-Window-Systems selber, da ja
XFree86 nur eine von vielen Implementationen ist. Die aktuelle Version ist X11R6,
was für X Version 11 Release 6 steht.
11.2 Architektur
Das X-Window-System ist, wie alle anderen TCP/IP-Applikationen, eine Client/ServerApplikation, die mehreren Clients die Verwendung des vom Server gesteuerten Bildschirms ermöglicht. Der Server verwaltet neben dem Bildschirm auch die Tastatur und
die Maus. Der Client kann entweder auf dem gleichen Rechner oder auf einem entfernten Rechner ausgeführt werden. Der Unterschied zwischen dem lokalen und entfernten
Client liegt im Kommunikationsprotokoll zwischen Client und Server. Die Abbildung
zeigt die Kommunikation zwischen den X-Clients und dem X-Server sowohl auf dem
gleichen Rechner als auch über entfernte Rechner.
268
11.2 Architektur
X−Window−Architektur
Lokaler Host
Entfernter Host 1
Display
Window−
Manager
lokaler
Prozeß
Client 1
Client 2
Entfernter Host 2
Client 1
Client 3
lokaler
Prozeß
Unix Domain
Sockets
Client 2
Entfernter Host 3
X−Server−Prozeß
TCP/IP
Client 3
xfs
(X Font Server)
Der entfernte Client Der entfernte Client verwendet das verbindungsorientierte
TCP-Protokoll, um mit dem Server zu kommunizieren. Dabei öffnet der X-Server
beim Start einen TCP Port (passive open) mit der Port-Nummer 6000 + n, wobei n
die Display-Nummer identifiziert. Sobald der Client startet, öffnet dieser aktiv den
Port 6000 +n und der Datenaustausch kann beginnen. Das X-Protokoll definiert hierzu
ca. 150 Nachrichten, die über einen 8-Bit-Nachrichtencode verschickt werden. Jedem
Client wird dabei eine eigene TCP-Verbindung zugeordnet. Der Ziel-Socket ist dabei
immer der Socket 6000 + n.
Der lokale Client Findet die Kommunikation zwischen dem X-Client und dem XServer nicht über ein Netzwerk statt, so ist die Kommunikation über das TCP-Protokoll
äußerst ineffektiv durch den großen Protokoll-Overhead. Deshalb werden für die lokale Kommunikation Mechanismen der lokalen Inter Process Communication (IPC )
verwendet. Der Client erkennt die Art der Kommunikation anhand des Displaynamens,
der den Rechnernamen und die Displaynummer enthält. Wird kein Rechnername angegeben, so handelt es sich um eine lokale Kommunikation:
$ DISPLAY=:0
Wird zusätzlich der Rechnername angegeben, so findet die Kommunikation über das
TCP-Protokoll statt:
269
Konfiguration von X-Server und grafischer Oberfläche
# DISPLAY=orion.space.com:0
Der Inhalt DISPLAY-Variable ist wie folgt aufgebaut:
[Host]:Display[.Screen]
Die Bestandteile der DISPLAY-Variablen haben folgende Bedeutung:
Host gibt an, auf welchem Host die Fenster der in dieser Shell gestarteten X-Clients
aufgemacht werden sollen. Wird die Hostangabe weggelassen, so bezeichnet das
den lokalen Rechner.
Display bezeichnet den X-Server auf dem Rechner. Ein Rechner kann durchaus
mehrere X-Server parallel gestartet haben, sei es, um per virtuellen Terminals
zwischen grafischen Oberflächen hin- und herzuschalten, oder, es handelt sich
um Software wie VNC (mit deren Hilfe man Rechner im Netz fernsteuern kann),
die einen virtuellen X-Server erzeugt, den man dann mit Hilfe einer ClientSoftware bedienen kann.
Screen Diese Ziffer gibt den Bildschirm bei einem multiheaded X-Server an, das
heißt, daß zu einem Display mehrere Monitore angeschlossen sind. Der erste
Monitor hat die Nummer 0.
Sie können sich die Funktionsweise des X-Servers leicht verdeutlichen, indem Sie sich
zum Beispiel per telnet auf einen anderen Rechner verbinden (auf dem die grafische
Oberfläche nicht gestartet sein muß). Wenn Sie dort die DISPLAY-Variable entsprechend setzen und dann eine grafische Applikation starten, dann wird diese auf Ihrem
lokalen Bildschirm dargestellt. Nehmen wir an, Ihr lokaler Rechner heißt linux1, der
entfernte server1:
Beispiel:
# xhost +server1
# telnet server1
Trying server1...
Connected to server1
Escape character is ’ˆ]’.
Welcome to SuSE Linux 7.2 (i386) - Kernel 2.4.4-4GB (3).
server1 login: user1
Password:
Last login: Wed Mar 13 08:31:34 from console
270
.
11.3 Der X-Server
Have a lot of fun...
[user1@server1 ˜] export DISPLAY=linux1:0.0
[user1@server1 ˜] xclock &
Nun sollten Sie auf Ihrem Bildschirm eine Uhr sehen. Die Applikation läuft auf
server1, nur die Darstellung erfolgt lokal auf linux1. Sie können das mit dem Kommando ps leicht überprüfen.
Z
Hinweis: Sollte das nicht funktionieren, so ist möglicherweise der Zugriff auf Ihren
X-Server beschränkt. Versuchen Sie in diesem Fall, den anderen Rechner freizuschalten. In unserem Beispiel müßten Sie auf dem Rechner linux1 den Befehl
xhost +server1
verwenden. Es ist aber auch möglich, den X-Server mit der Option X -nolisten
tcp zu starten, um sicherzustellen, daß er überhaupt keine Anfragen über das Netzwerk annimmt. Das ist zum Beispiel vorteilhaft, wenn Sie mit Ihrem Linux-Rechner
ins Internet gehen wollen.
11.3 Der X-Server
Die am weitesten verbreiteten X-Server sind XFree86 , Metro X und InsideX , wobei
nur der X-Server XFree86 frei verfügbar ist, und eine Portierung des X-Systems auf
386-kompatible Computer darstellt. Dieser X-Server unterstützt mittlerweile die meisten Grafikkarten. Hersteller, die Schnittstellen zu ihren Grafikkarten nicht freigeben,
werden nicht unterstützt. Die Installation und Konfiguration des X-Server sollte umsichtig durchgeführt werden, da falsche Einstellungen zur Zerstörung des Monitors
führen können, falls sich dieser bei Übertaktung nicht ausschaltet (was bei modernen
Monitoren allerdings die Regel ist).
Voraussetzung für den Start der grafischen Oberfläche ist zunächst die erfolgreiche
Konfiguration des X-Servers, wobei die Konfigurationsdatei /etc/X11/XF86Config13
erzeugt wird. Für die Konfiguration des X-Servers stehen unterschiedliche Hilfsprogramme zur Verfügung, wobei der größte Teil der Konfiguration aber auch leicht von
Hand ausgeführt werden kann.
Die Datei /etc/X11/XF86Config besteht aus mehreren Abschnitten, die mit dem
Schlüsselwort Section eingeleitet und mit EndSection abgeschlossen werden. Die
meisten dieser Abschnitte definieren reale Geräte, wie etwa Grafikkarten und Monitore, oder virtuelle Geräte, wie Screens oder Server. Diese Abschnitte können mehrfach auftreten, da das X-Window-System durchaus den gleichzeitigen Betrieb mehrerer Monitore, Mäuse und Grafikkarten gestattet.
13 Bei älteren RedHat-Versionen in denen sowohl XFree86 3.x und 4 verwendet werden kann, heißt
die Datei für XFree86 Version 4: /etc/X11/XF86Config-4
271
Konfiguration von X-Server und grafischer Oberfläche
Files: Hier werden die Pfade zu den Font-Dateien, zu den Modulen des X-Servers,
sowie zur RGB-Datenbank angegeben. Letztere definiert die Farben, die dem
X-Server namentlich bekannt sind, durch ihre Rot-Gelb-Blau-Werte. Dieser Abschnitt kann nur einmal auftreten.
Section "Files"
FontPath
FontPath
FontPath
FontPath
FontPath
ModulePath
RgbPath
EndSection
"unix/:7100"
"/usr/X11R6/lib/X11/fonts/misc:unscaled"
"/usr/X11R6/lib/X11/fonts/75dpi:unscaled"
"/usr/X11R6/lib/X11/fonts/100dpi:unscaled"
"/usr/X11R6/lib/X11/fonts/Type1"
"/usr/X11R6/lib/modules"
"/usr/X11R6/lib/X11/rgb"
Bemerkenswert dabei ist FontPath "unix/:7100", was bedeutet14 , daß X11
über Port 7100 des lokalen Rechners auf einen Fontserver wie z.B. xfs zurückgreift. Ein Fontserver übernimmt stellvertretend für X11 das Laden und Rendern
von Fonts. Ein Fontserver ist z.B. für das Laden von TrueType-Fonts notwendig.
Der Fontserver xfs wird mittels der Datei /etc/X11/fs/config konfiguriert.
ServerFlags: In diesem Abschnitt werden allgemeine Optionen für den X-Server gesetzt. Die Option AllowMouseOpenFail wird hier ausgeschaltet, so daß der XServer gar nicht erst startet, wenn keine Maus verfügbar ist. Auch dieser Abschnitt kann nur einmal auftreten.
Section "ServerFlags"
Option
"AllowMouseOpenFail"
EndSection
"off"
Module: Dieser Abschnitt lädt optionale Module in den X-Server. Es handelt sich dabei meist um Erweiterungen, wie zum Beispiel die Unterstützung für PostScript
Type 1 und TrueType Fonts. Auch dieser Abschnitt kann nur einmal auftreten.
Section "Module"
Load
"GLcore"
# OpenGL-Basismodul
Load
"bitmap"
# Für Bitmap-Fonts
Load
"dbe"
# Doublebuffer-Erweiterung
Load
"ddc"
# Digital Datachannel
# für Monitor<->Grafikkarte-Kommunikation
Load
"dri"
# 3D-Beschleunigung
14 Das
272
Format ist dabei Protokoll/Host:Port
11.3 Der X-Server
Load
Load
Load
Load
Load
Load
Load
Load
Load
#
Load
EndSection
"extmod"
# versch. X-Erweiterungen
"freetype" # TrueType-Fontunterstützung
"glx"
# 3D-Unterstützung (OpenGL)
"int10"
# BIOS-Unterstützung
"pex5"
# 3D-Unterstützung (PEX)
"record"
# Modul für Aufnahme und
# Wiedergabe von Benutzeraktionen
"speedo"
# skalierbare Speedo-Fonts
"type1"
# PostScript Type1-Fonts unterstützen
"vbe"
# VESA-Bildschirmmodi
"xtt"
# Alternative TrueType-Engine
InputDevice: In der Regel gibt es mindestens zwei InputDevice-Abschnitte, nämlich
für die primäre Tastatur (CoreKeyboard) und das primäre Zeigergerät (CorePointer). Es können aber durchaus auch mehr als zwei sein, zum Beispiel wenn
Sie an einen Laptop mit Trackball eine Maus anschließen. Sie können die Option CorePointer, bzw. CoreKeyboard entweder in diesem Abschnitt setzen,
oder im Abschnitt ServerLayout. Der Identifier wird ebenfalls im Abschnitt
ServerLayout benötigt, um die Geräte zu identifizieren.
Im folgenden Beispiel wird die Tastatur als deutsche PC-Tastatur mit 104 Tasten definiert. Die Option nodeadkeys besagt, daß Sie keine Akzente verwenden
wollen. Tasten wie ’ und ‘ und ˆ erzeugen also direkt eine Ausgabe, ohne daß
Sie danach noch ein Leerzeichen eingeben müssen. Wollen Sie häufig französische Texte schreiben, dann sollten Sie diese Option nicht unbedingt wählen.
Section "InputDevice"
Driver
"Keyboard"
Identifier
"Keyboard[0]"
Option
"Protocol"
Option
"XkbLayout"
Option
"XkbModel"
Option
"XkbRules"
Option
"XkbVariant"
EndSection
"Standard"
"de"
"pc104"
"xfree86"
"nodeadkeys"
Die Maus wird als PS/2-Maus definiert. Die Emulation der mittleren Maustaste
ist aktiviert, so daß auch bei einer Zweitastenmaus die unter X häufig benutzte
mittlere Taste zur Verfügung steht, wenn man beide Tasten gleichzeitig drückt.
Section "InputDevice"
Driver
"mouse"
273
Konfiguration von X-Server und grafischer Oberfläche
Identifier
Option
Option
Option
Option
Option
EndSection
"Mouse[1]"
"Device"
"Emulate3Buttons"
"Emulate3Timeout"
"InputFashion"
"Protocol"
"/dev/psaux"
"on"
"50"
"Mouse"
"ps/2"
Device: In diesem Abschnitt wird im Wesentlichen der Treiber für die verwendete
Grafikkarte ausgewählt. Es kann wiederum mehrere Device-Abschnitte geben,
falls mehrere Grafikkarten in den Rechner eingebaut sind. Die zur Verfügung
stehenden Optionen sind abhängig vom ausgewählten Treiber. Im folgenden Beispiel handelt es sich um den Treiber nv für Grafikkarten des Herstellers Nvidia.
Section "Device"
BoardName
"GeForce 2 GTS (rev 1)"
BusID
"1:0:0"
Driver
"nv"
Identifier
"Device[0]"
Screen
0
VendorName
"Nvidia"
EndSection
Monitor: Auch hier kann es wieder mehrere Abschnitte geben, sofern mehrere Monitore zur Verfügung stehen (zum Beispiel beim Laptop). Die neben dem
Identifier wichtigsten Optionen sind die horizontale und vertikale Bildwiederholfrequenz, die man dem Handbuch des Monitors entnehmen kann, sowie
der Verweis auf die zu verwendenden Auflösungen (Modes).
Section "Monitor"
HorizSync
31-91.1
Identifier
"Monitor[0]"
ModelName
"1280X1024@85HZ"
VendorName
"--> VESA"
VertRefresh
50-85
UseModes
"Modes[0]"
EndSection
Modes: In diesen Abschnitten kann man den Grafikmodus optimal auf die vorhandene Hardware abstimmen und zum Beispiel beliebige Auflösungen einstellen
(zum Beispiel 991 mal 706 Pixel), sofern man die Funktionsweise des Monitors
274
11.3 Der X-Server
im Detail versteht.15 Früher war es nötig, diese Modelines tatsächlich selbst zu
bestimmen, heute aber genügt es, ein Konfigurationsprogramm zu verwenden,
oder sich mit den Voreinstellungen zu begnügen. Diese sind allerdings manchmal nicht gerade augenverträglich: bei einer GeForce-2-Grafikkarte und einem
19-Zoll-Monitor wurde beispielsweise eine Auflösung von 1920 mal 1440 Pixeln bei sechzig Hertz ausgewählt. Der Identifier erlaubt wieder die Zuordnung zu anderen Abschnitten.
Section "Modes"
Identifier
"Modes[0]"
Modeline
"1024x768" 86.69 1024 1040 1216 1400 768 768 778 802
Modeline
"1280x1024" 157.5 1280 1360 1520 1728 1024 1025 1028 1072
EndSection
Screen: Ein Screen stellt die Verbindung eines Monitors und einer Grafikkarte
dar. In den mit Display bezeichneten Unterabschnitten werden Farbtiefe und
Auflösung eingestellt. Im folgenden Beispiel werden Displays mit 16 und 32
Bit Farbtiefe definiert, wobei das Display mit 16 Bit Farbtiefe als Standard konfiguriert wird. Es können durchaus mehrere Auflösungen angegeben werden,
zwischen denen dann mit den Tasten Strg - Alt - + und Strg - Alt - - auf dem
Ziffernblock hin- und hergeschaltet werden kann. Die Farbtiefe läßt sich im laufenden Betrieb nicht ändern, dazu ist ein Neustart des X-Servers nötig.
Section "Screen"
DefaultDepth 16
SubSection "Display"
Depth
16
Modes
"1280x1024" "1024x768"
EndSubSection
SubSection "Display"
Depth
32
Modes
"1024x768"
EndSubSection
Device
"Device[0]"
Identifier
"Screen[0]"
Monitor
"Monitor[0]"
EndSection
ServerLayout: Ein ServerLayout ist die Verbindung eines Screens mit den Eingabegeräten, die durch ihre Identifier bezeichnet werden. Werden mehrere
15 Die Bedeutung der einzelnen Komponenten der Modeline wird im XFree86-Video-TimingsHOWTO genauer erläutert.
275
Konfiguration von X-Server und grafischer Oberfläche
ServerLayouts definiert, so muß man dem X-Server auf der Kommandozeile
mitteilen, welches zu verwenden ist, sonst wird einfach das erste verwendet.
Section "ServerLayout"
Identifier
"Layout[all]"
InputDevice
"Keyboard[0]"
InputDevice
"Mouse[1]"
Screen
"Screen[0]"
EndSection
"CoreKeyboard"
"CorePointer"
Es gibt verschiedene Ansätze, diese Konfigurationsdatei zu erstellen. Zuerst einmal
wird man die bequemste Methode versuchen, das sind meist die von der jeweiligen
Distribution mitgelieferten Programme. Bei SuSE wäre das zum Beispiel sax (SuSE
advanced XF86-Configurator) bzw. sax2 (für XFree86 4.x) und bei Fedora/RedHat
das Programm system-config-display. Sollten diese scheitern, kann man es
noch mit dem offiziellen“ Konfigurationsprogramm von XFree86, nämlich xf86cfg
”
versuchen. Das offizielle Konfigurationsprogramm für XFree86 3.x ist XF86Setup.
Achtung: Grundsätzlich sollte man sich vorher genaue Informationen über die Leistungsdaten von Grafikkarte und Monitor zurechtlegen. Man findet diese i. A. im
Handbuch des Monitors. Der X-Server reagiert sehr empfindlich auf falsche Einstellungen.
Im Zweifelsfalle höchstens SVGA benutzen!
Durch falsche Einstellungen kann man Monitor und Grafikkarte zerstören!!! Dies gilt
insbesondere bei einer zu hoch gewählten Horizontalfrequenz. Deshalb maximal nur
die vom Monitor tatsächlich erbrachten Werte verwenden!
Mit dem Hilfsprogramm SuperProbe kann man Daten über die Grafikkarte erhalten.
16
Beispielausgabe von SuperProbe:
First video: Super-VGA
Chipset: ATI 264GT-B+DVD (3D Rage II+DVD) (Port Probed)
Memory: 4096 Kbytes
RAMDAC: ATI Mach64 integrated 15/16/24/32-bit DAC w/clock
(with 6-bit wide lookup tables (or in 6-bit mode))
(programmable for 6/8-bit wide lookup tables)
Attached graphics coprocessor:
16 In neueren Distributionen ist das Programm oft nicht mehr enthalten, da die Distributoren eigene
Funktionen zur Hardware-Erkennung in ihre Administrations-Tools eingebaut haben. Informationen zur
Grafikkarte liefert aber auch lspci
276
!
11.3 Der X-Server
Chipset: ATI Mach64
Memory: 4096 Kbytes
Second video: MDA
Grundsätzliche Tips und Gefahrenpunkte:
Maus: Die Angabe eines falschen Maustyps kann zum totalen Hangup des Systems
führen. Deshalb möglichst vorher laufende Programme schließen.
Der Intellimouse-Treiber zeigt (zum Zeitpunkt der Erstellung dieses Dokumentes) manchmal recht eigenartige Nebenwirkungen; ggf. stattdessen den Logitech
PS/2-Treiber verwenden.
Bei einer 2-Tasten-Maus empfiehlt sich die Einstellung 3-Tasten emulieren“,
”
denn viele Programme aus der UNIX-Welt machen von allen 3 Tasten Gebrauch.
Die dritte Taste wird dann durch gleichzeitiges Drücken beider Maustasten emuliert.
Tastatur: Bei der Tastatur empfiehlt sich die Einstellung no dead keys“. Dann lassen
”
sich die unter UNIX/Linux häufig benötigten Sonderzeichen ´ ‘ ˆ usw. direkt
erzeugen (ohne Umweg über die Leertaste).
Moderne PC-Tastaturen ( Windows-Keyboard“) haben übrigens 105 Tasten.
”
Grafik: Bei manchen Grafikkarten muß man zusätzlich zum ausgewählten Server
noch spezielle Werte z.B. für Chip-ID oder Clock eingeben. Hierfür lohnt es
sich oft, die aktuellen Support-Datenbanken der Distributoren im Internet zu
konsultieren. Wenn man keine passenden Angaben machen kann, muß man leider mit SVGA, oder schlechter, vorlieb nehmen.
Monitor: Unbedingt die Herstellerangaben bzgl. der maximalen Frequenzen beachten! Nicht einfach einen ähnlichen Monitor desselben Herstellers auswählen!
Einige nützliche Tastenkombinationen:
Strg - Alt - F1 schaltet aus dem Grafikmodus zur ersten virtuellen Konsole um,
Strg - Alt - F2 zur zweiten, und so weiter
Alt - F7 schaltet von der virtuellen Konsole zum ersten X-Server (sofern Sie die
üblichen sechs virtuellen Konsolen betreiben), Alt - F8 schaltet zum zweiten
X-Server, und so weiter, falls Sie mehr als einen X-Server betreiben
Strg - Alt - ← beendet den X-Server sofort
Strg - Alt - +/- (gemeint sind die grauen +/- Tasten auf dem Ziffernblock) schaltet in
den nächst höheren/tieferen Grafikmodus (falls konfiguriert)
277
Konfiguration von X-Server und grafischer Oberfläche
11.4 Konfigurationsprogramm xf86cfg
Dieses Programm hilft bei der Erstellung der Datei XF86Config. Es startet den XServer zunächst im VGA-Modus, der von allen Monitoren und Grafikkarten unterstützt
werden sollte. Nach Beenden des Programms können Sie die Konfiguration mit
xvidtune
nachträglich anpassen.
Unter SuSE gibt es auch die Programme Sax bzw. Sax 2 , die sich mit sax und sax2
starten lassen. Sax konfiguriert XFree 3.x, während Sax 2 für XFree 4.x zuständig ist.
Das Einrichten von X funktioniert dabei im Prinzip wie bei xf86cfg. xvidtune wird
dabei am Ende der Konfiguration von Sax selbst aufgerufen.
Außerdem läßt sich XFree86 noch mit YAST2 einrichten, dies wird automatisch
bei der Installation von SuSE-Linux mittels YAST2 aufgerufen, kann aber auch
nachträglich mit dem entsprechenden YAST2-Modul ausgeführt werden, unter Hardware →Grafikkarte und Monitor.
Auf einer Fedora/RedHat-Distribution rufen Sie als root an der Konsole das Programm
system-config-display
auf. Für die korrekte Einstellung der Maus benutzen Sie
system-config-mouse.
Bei der Debian-Distribution ist die X-Konfiguration ins Paket integriert und wird daher
normalerweise automatisch bei der Installation aufgerufen. Entscheidet man sich, den
Server später (um-)zukonfigurieren, dann verwende man folgendes Kommando:
# dpkg-reconfigure xserver-xfree86
Die Konfiguration läuft dabei wie folgt ab:
X-Server konfigurieren mit Debian
1. Aufruf des Kommandos wie oben
2. Wählen Sie den Chipsatz der Grafikkarte
3. Geben Sie Ihrer Grafikkarte einen internen Namen (für die Konfigurationsdatei)
4. Tragen Sie die PCI-BusID Ihrer Grafikkarte ein. Diese können Sie mit dem
Kommando lspci ausfindig machen. Dieser Eintrag ist nur z.B. bei PowerPCSystemen oder Multi-Grafikkarten-Betrieb notwendig.
278
ô`beh
11.4 Konfigurationsprogramm xf86cfg
5. Geben Sie das RAM Ihrer Grafikkarte an. Meist kann man es leer lassen, da die
RAM-Erkennung recht zuverlässig ist.
6. Antworten Sie bei Kernel-Framebuffer-Benutzung mit Yes, außer der Server
macht Probleme, dann schalten Sie es ab.
7. Tastatur XKB-Ruleset: xfree86 (Standard)
8. Keyboard-Model: pc105 müßte bei aktuellen Tastaturen fast immer funktionieren (Außer bei Tastaturexoten)
9. Keyboard-Layout: de für deutsche Tastatur
10. Keyboard-Variante: Geben Sie hier nodeadkeys ein, falls Sie die Apostrophen/Tilde-Zeichen ohne extra Drücken der Leertaste erreichen wollen. Dann
können Sie jedoch auch die französischen Accents nicht mehr nutzen. (Sinnvoll
für Programmierer und Administratoren)
11. Keyboard-Options können Sie getrost frei lassen.
12. Wählen Sie Ihre Maus (/dev/psaux für PS/2-Mäuse, /dev/input/mice
für USB-Mäuse)
13. Drei-Button-Emulation ist nur für 2-Button-Mäuse notwendig.
14. Mauswheel aktivieren, falls vorhanden.
15. Geben Sie einen internen Namen für Ihren Monitor an.
16. Falls Sie einen LCD-Monitor besitzen, antworten Sie hier mit Yes.
17. Als Auswahlmethode für Ihren Monitor ist Medium am einfachsten.
18. Wählen Sie die maximale Auflösung/Bildschirmwiederholfreqenz Ihres Monitors.
19. Wählen Sie die gewünschten Bildschirmmodi aus. Gehen Sie sicher, daß sie
auch von Grafikkarte sowie Monitor unterstützt werden!
20. Wählen Sie die gewünschte Farbtiefe. Heute sind meist 16 oder 24 Bit kein
Problem. Generell gilt: Je weniger Bit, umso schneller die Grafik. Daher sind 16
Bit meistens ein sehr guter Kompromiß.
21. Wählen Sie die verwendeten X-Server-Module aus. Eine Beschreibung der Module finden Sie auf S. 272.
22. Falls Sie Ihre Einstellungen endgültig abspeichern wollen, so antworten Sie nun
zweimal mit Yes. Ansonsten gehen Ihre gemachten Einstellungen verloren.
279
Konfiguration von X-Server und grafischer Oberfläche
11.5 Starten des X-Window-Systems von Hand
Wenn Sie Ihr System normalerweise im Runlevel 5 betreiben, dann wird Ihnen der
grafische Login von einem Display-Manager (kdm, wenn Sie KDE verwenden, gdm,
wenn Sie GNOME verwenden, sonst xdm) bereitgestellt. Sie können statt dessen das
X-Window-System auch von der Kommandozeile starten, im einfachsten Fall mit dem
Befehl:
X [optionen] [:display]
Beispiel: Selbst wenn man bereits mit einer grafischen Oberfläche arbeitet, kann man
auf der Kommandozeile einen weiteren X-Server starten, indem man ihn anweist, ein
noch unbenutztes Display zu öffnen. Normalerweise wird der erste X-Server (mit dem
Sie bereits arbeiten) das Display 0 geöffnet haben. Mit dem Befehl
# X :1 &
können Sie also ein zweites Display öffnen. Dieses erreichen Sie dann über die Tastenkombination Strg - Alt - F8 (sofern Sie die üblichen sechs virtuellen Konsolen
betreiben). Sie sehen aber nur einen grauen Bildschirmhintergrund und den Mauszeiger, da Sie ja noch keine X-Clients gestartet haben.
Wechseln Sie vom grauen Bildschirm zurück auf die virtuelle Konsole. Sie können
dort weiterarbeiten, da Sie den X-Server im Hintergrund gestartet haben. Geben Sie
ein:
# export DISPLAY=:1
# xterm &
und wechseln Sie zurück zu Ihrem X-Server (mit Strg - Alt - F8 ). Sie sehen jetzt oben
links auf dem grauen Bildschirm ein Terminalfenster ohne irgendwelche Bedienelemente, denn Sie haben ja noch keinen Window-Manager gestartet.
280
.
11.5 Starten des X-Window-Systems von Hand
Geben Sie dort jetzt ein:
# xclock
281
Konfiguration von X-Server und grafischer Oberfläche
Sie sehen jetzt ein Fenster mit einer Uhr. Das Fenster entsteht wiederum in der oberen
linken Ecke des Bildschirms und verdeckt damit einen Teil des Terminalfensters. Da
die Fenster keine Bedienelemente besitzen, können Sie sie auch nicht verschieben, um
diesen Mißstand zu beheben.
Beenden Sie die Uhr mit der Tastenkombination Strg - C und versuchen Sie es nochmal unter Angabe einer anderen Position:
# xclock -geometry -0-0 &
282
11.5 Starten des X-Window-Systems von Hand
Nun befindet sich das Fenster mit der Uhr unten rechts. Viel bequemer geht das alles
aber mit einem Window-Manager, zu dessen Aufgaben es ja gehört, sich um die Größe
und Platzierung der Fenster zu kümmern. Starten Sie deshalb einen Window-Manager:
# twm &
283
Konfiguration von X-Server und grafischer Oberfläche
Sie sehen, daß die Fenster jetzt mit einem Rahmen versehen sind und bewegt werden
können.
11.5.1 Programm startx
Da der X-Server eine Vielzahl von Optionen unterstützt und da man beim Start des
X-Servers meist auch schon einige Clients (vor allem den Window-Manager) starten
möchte, verwendet man im Allgemeinen das Skript /usr/X11R6/bin/startx,
das etwas mehr Komfort bietet. Das Skript übergibt Client- und Server-Optionen an
das Programm xinit. Die Syntax lautet:
startx [clientoptionen] [-- [serveroptionen]]
Werden die Client-Optionen nicht angegeben, wird die Datei $HOME/.xinitrc gesucht und deren Name an das xinit-Programm übergeben. Existiert diese Datei
nicht, so wird nach der globalen xinitrc-Datei in /etc/X11/xinit/ gesucht und
deren Name übergeben. Genau der gleiche Vorgang wiederholt sich mit den ServerOptionen und der Datei .xserverrc. Für gewöhnlich existieren die Server-Dateien
nicht.
Die Dateien .xinitrc und xinitrc sind Shell-Skripte, in denen X-Applikationen
gestartet werden. Zuletzt wird der Window-Manager mit dem Systemaufruf exec()
284
11.5 Starten des X-Window-Systems von Hand
gestartet, das heißt, der Window-Manager ersetzt die Shell, die ihn gestartet hat. Sobald
der Window-Manager beendet wird, wird damit auch die X-Sitzung beendet.
.
Beispiel:
Die Datei $HOME/.xinitrc
#!/bin/bash
# ------------------------------------Abschnitt 1
# .xsession/.xinitrc
export TERM=xterm
# choose a window manager
if test -z "$WINDOWMANAGER"
then
WINDOWMANAGER=/usr/X11R6/bin/fvwm2
fi
# ------------------------------------Abschnitt 2
#load resources
if [ -f /usr/X11R6/lib/X11/Xmodmap ]
then xmodmap /usr/X11R6/lib/X11/Xmodmap
fi
if [ -f ˜/.Xmodmap ]
then
xmodmap ˜/.Xmodmap
fi
# ------------------------------------Abschnitt 3
if [ -f ˜/.Xdefaults ]
then
xrdb -merge ˜/.Xdefaults
fi
if [ -f ˜/.Xresources ]
then
xrdb -merge ˜/.Xresources
fi
# ------------------------------------Abschnitt 4
# finally start the window manager
exec $WINDOWMANAGER
285
Konfiguration von X-Server und grafischer Oberfläche
Abschnitt 1: Die Umgebungsvariable TERM wird auf den Wert xterm, die StandardTerminal-Emulation unter X gesetzt. Falls der Window-Manager nicht schon
definiert wurde, wird fvwm2 als neuer Window-Manager eingerichtet.
Abschnitt 2: Über das Programm xmodmap kann die Zuordnung von einer Taste
und dem mit dieser Taste erzeugten Zeichen verändert werden. So können die
Backspace- und die Delete-Funktion den entsprechenden Tasten auf einer PCTastatur zugewiesen werden (ein altes Problem des X-Window-System). Der
Editor Emacs verwendet beispielsweise die Meta-Taste, die auf der normalen
PC-Tastatur nicht vorhanden ist. Sie wird durch die Alt-Tasten simuliert. Die
Menü-Taste einer Windows-Tastatur wird hier als Compose-Taste definiert, das
heißt, die Tastenkombination Menü - ˆ - a erzeugt ein â.
keycode 22 = BackSpace
keycode 107 = Delete
keycode 64 = Meta_L
keycode 117 = Menu
keysym Menu = Multi_key
Das Schlüsselwort keycode weist einer Taste einen Namen zu, das Schlüsselwort keysym definiert ein Alias für einen bereits vergebenen Namen.
Abschnitt 3: Mit dem Kommando xrdb werden grafische Einstellungen für XApplikationen, die Ressourcen, aus den Dateien .Xdefaults und .Xresources
geladen. Diese Ressourcen, mit denen man beispielsweise die Schriftgröße oder
Hintergrundfarbe bestimmter Fenster einstellen kann, werden nur noch von älteren X-Anwendungen genutzt. Die meisten heute gängigen grafischen Programme stammen aus den KDE- und GNOME-Projekten und verwenden gänzlich
andere Mechanismen, um ihr Look and Feel zu beeinflussen.
Abschnitt 4: Die letzte Zeile überlagert die Shell durch den Window-Manager, der
mit diesen Aufruf den Start der eigentlichen X-Window-Sitzung definiert.
11.6 X-Display-Manager
Nachdem der X-Server beim Systemstart ausgeführt wurde, liefert das Programm xdm
(X Display-Manager) ein grafisches Login. Die eigentliche Aufgabe von xdm ist es, die
gleichen Dienste, die der init-, getty- und login-Prozeß im Textmodus bieten,
zur Verfügung zu stellen.
xdm fordert Sie beim Start auf, einen Login-Namen und ein Paßwort anzugeben, um
anschließend die eigentliche Sitzung zu starten. Die Sitzung wird dabei durch die Lebenszeit eines bestimmten Prozesses definiert. Im Textmodus ist dieser Prozeß die User
286
11.6 X-Display-Manager
Login Shell. In der xdm-Umgebung wird hierzu der Window-Manager verwendet. Sobald der Window-Manager verlassen wird, endet die Sitzung eines Benutzers. Direkt
im Anschluß startet der X Display-Manager den X-Server neu und liefert anschließend
wieder ein Fenster mit einer Login-Eingabeaufforderung.
Die Konfigurationsdateien des xdm finden sich in /etc/X11/xdm/:
Xaccess bestimmt, wer auf den Rechner zugreifen darf.
Xresources konfiguriert das Aussehen der Fenster des xdm-Login-Bildschirms,
unter anderem des Login-Fensters.
Xservers gibt an, auf welchen X-Servern das Login-Fenster dargestellt werden soll.
Dies können lokale Server sein (:0, :1, usw.) oder entfernte X-Server, wie z.B.
X-Terminals.
Xsession Das Skript, das nach einem erfolgreichen Login ausgeführt wird. Normalerweise sucht es nach der Datei .xsession im Home-Directory des Benutzers.
Wird sie nicht gefunden, so wird ein voreingestellter Window-Manager (oder
Desktop) gestartet.
Xsetup 0 wird als root ausgeführt, bevor das Login-Fenster dargestellt wird. Hier
kann man z.B. die Hintergrundfarbe oder das Hintergrundbild des LoginBildschirms einstellen.
xdm-config Die Hauptkonfigurationsdatei des xdm in Form von X-Ressourcen.
Sie gibt an, welche (absoluten) Dateinamen die oben genannten Dateien haben,
ob man sich authentifizieren muß, oder ob Netzwerkzugriff generell gestattet ist.
Der xdm-Startvorgang läuft (sehr vereinfacht dargestellt) wie folgt ab:
1. Start des xdm
2. Neustart des X-Servers
3. Das Skript /etc/X11/xdm/Xsetup Displaynummer wird als root ausgeführt.
4. Das Login-Fenster wird angezeigt, der Benutzer loggt sich ein.
5. Das Skript /etc/X11/xdm/Xstartup wird als root ausgeführt (falls vorhanden).
6. Das Skript /etc/X11/xdm/Xsession wird ausgeführt. Bei manchen Distributionen wird die Datei $HOME/.xsession ausgeführt, falls sie existiert. Ist dieses
Skript beendet, so gilt die Sitzung als beendet. Als letztes wird in diesem Skript
normalerweise der Window-Manager gestartet. Wird dieser beendet, so beendet
sich die Sitzung.
287
Konfiguration von X-Server und grafischer Oberfläche
7. Am Ende der Sitzung wird /etc/X11/xdm/Xreset ausgeführt.
Hinweis: Die meisten Distributionen verwenden normalerweise nicht mehr den xdm,
sondern den kdm des KDE-Projekts, oder den gdm des GNOME-Projekts. Beide sind
jedoch vom xdm abgeleitet und verwenden die gleichen Konfigurationsdateien wie
xdm.
Grundlegende xdm-Konfiguration Will man das Aussehen des Login-Fensters
verändern, so editiere man die Datei /etc/X11/xdm/Xresources:
Auszug aus /etc/X11/xdm/Xresources
! XResources für xdm
xlogin*greeting: Welcome to CLIENTHOST
xlogin*namePrompt: \040\040\040\040\040\040\040Login:
xlogin*fail: Login incorrect
xlogin*borderWidth: 5
xlogin*background: MidnightBlue
xlogin*foreground: Yellow
Bei dieser Datei steht links die sogenannte X-Ressource, die es zu konfigurieren gilt,
rechts der entsprechende Wert. Näheres zu X-Ressourcen siehe weiter unten.
Die allererste Zeile ist eine Kommentarzeile, die durch das Ausrufezeichen (!) eingeleitet wird.
In der ersten Zeile nach dem Kommentar wird die Grußmeldung am Login-Fenster eingestellt, wobei CLIENTHOST durch den Hostnamen des Rechners, auf dem xdm läuft,
ersetzt wird.
Die zweite Zeile nach dem Kommentar gibt den Login-Prompt an. (\040 ist der oktale
ASCII-Wert für ein Leerzeichen, siehe man ascii.)
Die dritte Zeile bestimmt die Meldung, wenn das Login fehlgeschlagen ist.
Die restlichen Zeilen definieren die Rahmenbreite, sowie die Vorder- und Hintergrundfarben des Fensters.
Will man die Standard-Farbtiefe des X-Servers ändern, so stellt man bei dem betreffenden X-Server in der Datei /etc/X11/xdm/Xservers die gewünschte Farbtiefe mit
der Option -bpp Farbtiefe wie folgt ein:
Die Datei /etc/X11/xdm/Xservers
288
Z
11.6 X-Display-Manager
# Xservers file, workstation prototype
:0 local /usr/X11R6/bin/X -bpp 24
In diesem Beispiel wurde ungeachtet der in XF86Config voreingestellten Farbtiefe
24Bit als Farbtiefe eingestellt.
Will man auf dem Login-Bildschirm noch zusätzliche Programme starten, so füge man
die entsprechenden Programme in die Datei /etc/X11/xdm/Xsetup 0 ein:
Ausschnitt aus /etc/xdm/Xsetup 0
# Blaugrauer Bildschirmhintergrund
/usr/X11R6/bin/xsetroot -solid SlateGray4
# Uhr anzeigen (links unten)
/usr/X11R6/bin/xclock +0-0
Konfiguration des xdm für Remote-Zugriff In UNIX-Workstation-Umgebungen
ist es möglich, statt lokalen Workstations einen zentralen, leistungsstarken Rechner
(einen sogenannten Terminal-Server ) zu verwenden, wobei die Benutzer mit ThinClients (sogenannten X-Terminals ) arbeiten, die meistens ohne Festplatte oder Diskette nur einen reinen X-Server betreiben. Dieser verbindet sich dann per Broadcast
oder Voreinstellung mit dem Terminal-Server, um dem Benutzer ein Login-Fenster zu
präsentieren. Damit hat man auch im Reich der grafischen Oberflächen die Möglichkeit geschaffen, die Administration auf einen zentralen Rechner zu beschränken, was
einem viel Zeit und Mühe spart, da die X-Terminals praktisch wartungsfrei arbeiten.
Zudem ist es nun mit Linux möglich, alte PCs in kostengünstige X-Terminals umzuwandeln, indem man einfach ein minimales Linux mit X-Server installiert, der auf den
zentralen Terminal-Server zugreift.
Z
ô`beh
Hinweis: In diesem Zusammenhang ist das Hardware-Client-Server-Modell entgegengesetzt dem Software-Client-Server-Modell: Der Thin-Client beherbergt den XServer und auf dem Terminal-Server laufen die X-Clients.
xdm-Terminalserver konfigurieren
1. Zuerst muß sichergestellt sein, daß auf dem Terminalserver xdm installiert und
standardmäßig gestartet ist. Dies wird durch ein Start/Stop-Skript in /etc/init.d/
oder durch folgende Zeile am Ende der /etc/inittab gewährleistet:
289
Konfiguration von X-Server und grafischer Oberfläche
x:5:respawn:/etc/X11/xdm -nodaemon
Hier im Beispiel ist der Runlevel 5 für xdm-Betrieb (grafisches Login) vorgesehen. Durch die Option -nodeamon wird sichergestellt, daß xdm sich nicht in den
Hintergrund begibt, damit init die volle Kontrolle über den Prozeß behält.
2. Im zweiten Schritt ermöglichen wir den Netzwerkzugriff. Durch XDMCP , dem
X Display-Manager Control Protocol (Standard-Port 177) kann xdm übers Netzwerk ein grafisches Login anbieten. Dazu stellen wir sicher, daß der Port für die
Anfrage des Display-Managers nicht in der Datei /etc/X11/xdm/xdm-config
auf Null gesetzt ist (es gibt nämlich keinen Port 0):
! DisplayManager.requestPort:
0
Befindet sich kein Kommentarzeichen vor dieser Zeile, so ist der Netzwerkzugriff auf xdm nicht möglich!
3. Schließlich stellen wir in der Zugriffskontrolldatei /etc/X11/xdm/Xaccess ein,
welche Hosts Zugriff auf den Display-Manager erhalten sollen. Dies geschieht,
indem man einfach die Hostnamen der erlaubten Hosts in diese Datei einträgt.
Der Stern (*) dient dabei als Wildcardzeichen, mit dem Ausrufezeichen (!) werden nachfolgende Hosts ausgeschlossen.
Beispiel: Zugriff für alle Hosts gestatten (gefährlich, wenn das Netz von außen
erreichbar ist):
*
.
# any host can get a login
Beispiel: Im folgenden Beispiel erhalten der Rechner imperator.example.com .
und alle Rechner aus der Subdomain developers.example.com außer dem
Rechner fuzzy.developers.example.com Zugriff auf den xdm:
imperator.example.com
!fuzzy.developers.example.com
*.developers.example.com
Dokumentation hierzu findet man mit man xdm im Abschnitt XDCMP ACCESS
CONTROL.
290
11.7 Start der grafischen Oberfläche mit den Administrationstools
4. Schließlich startet man xdm neu. Auf dem Terminal-Client ruft man nun den
X-Server unter Angabe des Terminal-Servers wie folgt auf:
# X -query Terminal-Server
11.7 Start der grafischen Oberfläche mit den Administrationstools
Der (kurzfristige) Aufruf der grafischen Oberfläche erfolgt durch das Shell-Skript
startx; will man sein System generell stets im Grafikmodus (incl. grafischem Login)
betreiben, sollte man den entsprechenden Runlevel verwenden.
Mit Hilfe der Adminstrationsprogramme oder direktem Editieren der Datei /etc/inittab
kann man das Verhalten der grafischen Oberfläche bequem kontrollieren, zum Beispiel,
wenn das System standardmäßig mit grafischem Login gestartet werden soll.
11.7.1 SuSE-Distribution
Aktivieren des grafischen Login: Ob und wenn ja welcher grafische LoginManager beim Start des Runlevel 5 verwendet wird, läßt sich mit YaST2 festlegen. Dort startet man das Modul System→Editor für /etc/sysconfig-Dateien. Unter
Desktop→Displaymanager kann man über die Variable DISPLAYMANAGER das grafische
Login einstellen.
Neben Werten wie xdm, kdm oder gdm für die Displaymanager von X, KDE oder GNOME kann man auch console wählen, um das grafische Login zu deaktivieren.
Hier gibt es noch weitere Variablen wie z.B. Desktop→Window Manager→DEFAULT WM.
Die einzelnen Variablen werden jeweils mit einem kurzen Hilfetext erläutert.
11.7.2 Fedora/RedHat-Distribution
Aktivieren des grafischen Login: Der grafische Login wird bei Fedora/RedHat
durch direktes Bearbeiten der Datei /etc/inittab konfiguriert. Öffnen Sie diese Datei mit einem beliebigen Editor und suchen Sie nach der Zeile
id:3:initdefault:
Steht dort eine
Ändern Sie die
zur Verfügung.
3“, wird das System mit einem konsolenbasierten Login gestartet.
”
3“ in eine 5“. Beim nächsten Start steht Ihnen der grafische Login
”
”
291
Konfiguration von X-Server und grafischer Oberfläche
11.8 X-Ressourcen
Jeder X-Server verwaltet eine Datenbank mit Informationen über Ressourcen, die
einem X-Client zur Verfügung stehen. Diese Datenbank wird über die Ressourcendatei initialisiert. Die Datei enthält Informationen über Einstellungen von X-ClientProgrammen, die mit Hilfe des X-Servers dargestellt werden.
Die globale Konfigurationsdatei für X-Ressourcen ist die Datei /etc/X11/Xresources.
Die lokale Konfigurationsdatei befindet sich im Home-Verzeichnis des Benutzers, unter dem Namen .Xresources. Beim Start des X-Window-Systems wird das Programm
xrdb ausgeführt, um die Ressourcen in die X-Server-Datenbank zu laden. Da sich diese Information im Server befindet, entfallen lokale Ressourcendateien für X-Clients,
die sich nicht auf dem eigenen Rechner befinden. Nachdem xrdb die globale Konfiguration abgearbeitet hat, werden die lokalen Konfigurationen über die Option -merge
zur Datenbank hinzugefügt. Dabei werden Variablen, die schon einmal definiert wurden, überschrieben und neue Variablen hinzugefügt.
11.8.1 Definition von Ressourcen
Über hierarchisch organisierte Regeln werden alle Einstellungen von Applikationen
unter X konfiguriert. Die Ressourcenvariablen haben dabei das folgende Format:
Object.subobject[.subobject].attribute: value
Die Variable Xterm.scrollBar: on fügt bei dem Programm xterm eine Bildlaufleiste hinzu. Diese Konfigurationen können nur funktionieren, wenn die Programme
mit dem X Toolkit erstellt wurden und aus bestimmten Komponenten, den sogenannten Widgets, zusammengestellt wurden. Die Ressourcenvariable setzt sich aus den
folgenden Komponenten zusammen:
object definiert die eigentliche X-Applikation.
subobject bezieht sich auf die verschiedenen Schichten der Widget-Hierarchie, die
von der Applikation eingesetzt wird.
attribute definiert, um welche Eigenschaft es sich innerhalb eines Widgets handelt.
value benennt den Wert der Ressourcenvariable.
Es gibt zwei Möglichkeiten, den Variablen Werte zuzuweisen. Einmal durch direkte Angabe der Ressourcenvariable (wie vorher beschrieben); zum anderen über das
Zeichen *. Statt der Angabe des Punkts kann eine leichte“ Bindung zwischen den
”
292
11.8 X-Ressourcen
Widget-Hierarchien hergestellt werden. Dies bedeutet, daß sich zwischen den angegebenen Hierarchien beliebig viele (oder keine) Objekte oder Subobjekte befinden
können.
.
Ein Beispiel: Die oben angegebene Ressourcenvariable für das Programm xterm,
Xterm.scrollBar: on funktioniert nicht. Die Widget-Hierarchie von xterm erwartet zuerst die Terminal-Emulation als Objekt, das an der ersten Stelle der Hierarchie
angegeben wird, z. B.:
Xterm.vt100.scrollBar: on
Xterm.vt102.scrollBar: on
Mit Hilfe des Zeichens * können Sie nun für alle Terminal-Emulationen, die von
xterm zur Verfügung gestellt werden, eine Bildlaufleiste erzeugen:
Xterm*scrollBar: on
11.8.2 Klassen und Instanzen
Die Struktur der Objektressourcen, genauer gesagt der Widgets, ist zur einfacheren
Handhabung zusätzlich in Klassen unterteilt. Jedes Objekt, das Mitglied einer Klasse
ist, wird als Instanz dieser Klasse bezeichnet. Die Klassen sind von den eigentlichen
Instanzen durch den großen Anfangsbuchstaben unterscheidbar. Die folgenden beiden
Ressourcendefinitionen setzen die Cursor-, Text- und Mauszeigerfarbe auf den Wert
dunkelblau:
Xterm.foreground: darkblue
Xterm.cursorColor: darkblue
Xterm.pointerColor: darkblue
Einfacher wird diese Definition durch den Einsatz von Klassen:
Xterm.Foreground: darkblue
Bei der Kombination von Klassen und Instanzen überschreiben die Instanzen die Klassendefinition. Wollen Sie also die Cursor- und die Mauszeigerfarbe auf dunkelblau
setzen, den Text allerdings auf den Wert rot, so geben Sie folgende Definitionen an:
Xterm.Foreground: darkblue
Xterm.foreground: red
293
Konfiguration von X-Server und grafischer Oberfläche
Z
Hinweis: Einen schönen Überblick über die Ressourcen einer Applikation erlaubt
das Programm editres. Die meisten grafischen Anwendungen gehören heute zu
Desktop-Projekten wie KDE oder GNOME und verwenden keine X-Ressourcen, da
diese Projekte andere (aber nicht unbedingt bessere) Mechanismen bereitstellen, um
das Aussehen der Applikationen zu ändern.
11.9 Der Window-Manager twm
Der Window-Manager twm ist heute zwar nicht mehr gebräuchlich, ist aber nahezu
bei jeder X-Installation dabei. Da sein Funktionsumfang recht eingeschränkt ist, fällt
auch die Konfiguration nicht allzu aufwendig aus. Sie ist allerdings insofern typisch
für die Konfiguration der unter Linux gebräuchlichen Window-Manager, als sogar die
Anzahl, das Aussehen und die Funktion der Bedienelemente verändert werden kann.
Im Normalfall stellt twm Fenster mit einem dünnen Rahmen und einer Titelleiste dar.
Die Titelleiste enthält links einen Schalter, um das Fenster zu minimieren und rechts
einen Schalter, um die Größe des Fensters zu ändern. Dazwischen steht der Name der
Applikation. Die Farbe der Titelleiste ändert sich, wenn das Fenster aktiv wird.
In der Konfigurationsdatei ˜/.twmrc kann man zunächst die Schriftarten festlegen, die
für Titelleisten, Menüs und so weiter verwendet werden sollen.
TitleFont
ResizeFont
MenuFont
IconFont
IconManagerFont
"-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*"
"-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*"
"-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*"
"-adobe-helvetica-bold-r-normal--*-100-*-*-*-*-*-*"
"-adobe-helvetica-bold-r-normal--*-100-*-*-*"
Hinweis: Die Namensgebung der Fonts ist etwas gewöhnungsbedürftig, die meisten
Benutzer werden hiermit aber auch nicht in Berührung kommen. Weitere Informationen findet man im XWindow-User-HOWTO. Das X-Window-System verwendet traditionellerweise Bitmap-Fonts. Erst in jüngerer Vergangenheit wurde es möglich, durch
die Verwendung externer Font-Server auch skalierbare Type-1 oder TrueType-Fonts
zu nutzen. Seit XFree86 Version 4 wird diese Aufgabe von dem Modul freetype mit
der Konfigurationsdatei /etc/X11/XftConfig erledigt. Nähere Angaben findet man
mit man Xft.
Ebenso kann man die Farbe des Rahmens, der Titelleiste und anderer Elemente festlegen. Dabei kann man wie üblich die Farben entweder durch ihren Namen oder einen
RGB-Wert bestimmen:
Color {
294
Z
11.9 Der Window-Manager twm
BorderColor
DefaultBackground
DefaultForeground
TitleBackground
TitleForeground
"slategrey"
"rgb:2/a/9"
"gray85"
"rgb:2/a/9"
"gray85"
}
In der Titelleiste können weitere Schalter links und rechts hinzugefügt werden. Nach
dem Schlüsselwort ist der Name einer Bitmap-Datei anzugeben, die zur Darstellung
des Schalters verwendet werden soll. Beginnt dieser Name mit einem Doppelpunkt, so
wird ein vordefiniertes Bild verwendet. Nach dem Gleichheitszeichen folgt die Funktion, die ausgeführt werden soll, wenn der Schalter mit der linken Maustaste aktiviert
wird:
# Schalter
Bilddatei
= Aktion
LeftTitleButton ":xlogo"
= f.destroy
RightTitleButton "˜/xclock.xbm" = f.exec "exec xclock &"
Im obigen Beispiel wird also links ein Schalter hinzugefügt, der das Fenster schließt,
und rechts ein Schalter, der ein neues Fenster mit einer Uhr öffnet.
Weiterhin kann festgelegt werden, was geschehen soll, wenn eine der Maustasten oder
Funktionstasten aktiviert wird, während sich der Mauszeiger über einem bestimmten
Bedienelement befindet:
# Taste1
Button1
Button2
"F1"
= Taste2 : Position
:
=
: root
:
= meta
: window|icon :
=
: all
:
Aktion
f.menu "defops"
f.iconify
f.iconify
Im obigen Beispiel wird das Menü mit dem Namen defops aufgerufen, wenn die linke
Maustaste auf dem Bildschirmhintergrund gedrückt wird. Das Fenster wird minimiert
wenn die mittlere Maustaste zusammen mit der Meta-Taste (also der Alt-Taste auf
einer PC-Tastatur) gedrückt wird, während sich der Mauszeiger im Fenster befindet.
Umgekehrt wird ein minimiertes Fenster wieder vergrößert, wenn man die Alt-Taste
und die mittlere Maustaste drückt, während sich der Mauszeiger über einem minimierten Fenster befindet. Schließlich wird diese Funktion auch auf die F1 -Taste gelegt.
Menüs können ebenso leicht in der Konfigurationsdatei festgelegt werden. In der
linken Spalte befindet sich jeweils der Menüeintrag, in der rechten Spalte die auszuführende Funktion. Die Funktion f.nop (no operation) dient lediglich zur Erzeugung leerer Zeilen im Menü — der besseren Übersicht halber.
295
Konfiguration von X-Server und grafischer Oberfläche
menu "defops" {
"Twm"
"Iconify"
"Resize"
"Move"
""
"Xterm"
"Submenu"
""
"Exit"
}
f.title
f.iconify
f.resize
f.move
f.nop
f.exec "exec xterm &"
f.menu "sub1"
f.nop
f.quit
menu "sub1" {
"Gimp"
"Emacs"
}
f.exec "exec gimp &"
f.exec "exec emacs &"
Die Titelleisten und geöffneten Menüs sehen dann folgendermaßen aus:
296
11.10 Wissensfragen
11.10 Wissensfragen
1. In welcher Datei können Sie den Window-Manager definieren?
q /etc/Xresources
q /etc/rc.config
q $HOME/.xinitrc
q /usr/X11/lib/X11/Xresources
2. In welche Datei würden Sie Mount-Einträge für entfernte Dateisysteme eintragen, die bei einem Login über den xdm ausgeführt werden sollen?
q /etc/X11/xdm/Xsetup
q /etc/X11/xdm/Xstartup
q /etc/X11/xdm/Xsession
q $HOME/.xinitrc
3. Kreuzen Sie in der folgenden Liste Klassen von X-Ressourcen an.
q BorderWidth
q background
q borderColor
q Foreground
4. Erklären Sie die Aufteilung der folgenden X-Ressource:
XTerm*scrollbar*thickness: 5
Was bewirkt die Definition dieser Ressource?
297
Konfiguration von X-Server und grafischer Oberfläche
5. Welches Transportprotokoll wird von X verwendet?
q UDP
q IP
q UNIX-Domain-Sockets
q TCP
q Decnet
6. Geben Sie die Befehlszeile an, die das Programm xeyes startet. Die Ausgaben
sollen auf den Rechner Pluto umgeleitet werden.
7. Wie können Sie den Rechner hacker.space.com davon abhalten, die Ausgaben
von X-Applikationen an Ihren X-Server zu schicken? (siehe man xhost)
8. Welches Programm definiert das Ende der X-Session?
q xdm
q XF86 Mach64
q xhost
q /etc/X11/xdm/Xsession
298
11.11 Übungen
11.11 Übungen
1. Benutzen Sie lspci, /proc/pci oder SuperProbe, um herauszufinden, mit
welchem Chipsatz Ihre Grafikkarte bestückt ist.
2. Konfigurieren Sie den X-Server, nachdem Sie sich Informationen über den Monitor besorgt haben17 . Benutzen Sie dazu jeweils folgende Programme:
(a) xf86cfg
(b) sax bzw. Xconfigurator
3. Stellen Sie sicher, daß Ihre endgültige Konfiguration sicher funktioniert!
4. Aktivieren Sie das grafische Login!
5. Verbinden Sie sich auf den Rechner eines anderen Teilnehmers und starten Sie
dort xclock so, daß die Uhr auf Ihrem eigenen Bildschirm erscheint.
6. Richten Sie Ihren Display-Manager so ein, daß alle Teilnehmer dort einen Login
erhalten können.
7. Loggen Sie sich grafisch auf dem Rechner eines anderen Teilnehmers ein.
17
Handbuch, Aufkleber auf dem Gerät, Dozent
299
Konfiguration von X-Server und grafischer Oberfläche
11.12 Lösungen
4. Für das grafische Login ist, bei den meisten Distributionen, ein eigener Runlevel
eingerichtet, im Allgemeinen Runlevel 5. Das grafische Login wird aktiviert, in
dem man den Default-Runlevel von Hand in /etc/inittab einstellt18 :
id:5:initdefault:
5. Wenn Ihr Rechner linux1 heißt, der entfernte Rechner server1 heißt und Sie
dort einen Account namens user1 benutzen können, dann geht es folgendermaßen:
# xhost +server1
# telnet server1
Trying server1...
Connected to server1
Escape character is ’ˆ]’.
Welcome to SuSE Linux 7.2 (i386) - Kernel 2.4.4-4GB (3).
server1 login: user1
Password:
Last login: Wed Mar 13 08:31:34 from console
Have a lot of fun...
[user1@server1 ˜] export DISPLAY=linux1:0.0
[user1@server1 ˜] xclock &
6. Sorgen Sie zunächst dafür, daß der Display-Manager xdm läuft, und daß die
Zeile
DisplayManager.requestPort:
0
in der Datei /etc/X11/xdm/xdm-config entweder nicht erscheint, oder mit einem Ausrufezeichen auskommentiert ist. Stellen Sie in der Zugriffskontrolldatei
/etc/X11/xdm/Xaccess ein, welche Hosts Zugriff auf den Display-Manager
erhalten sollen. Dies geschieht, indem man einfach die Hostnamen der erlaubten
Hosts in diese Datei einträgt. Das sollten in diesem Fall die Rechnernamen der
anderen Teilnehmer sein.
7. X -query Rechnername
18 Dies
300
ist auch mit den entsprechenden Konfigurationstools möglich
11.13 Querverweise
11.13 Querverweise
1. Hauptseite des XFree86-Projektes: http://www.xfree86.org
2. Die Hauptseite des X-Window-Systems: http://www.X.org
3. Zu xdm siehe man xdm
4. Zu Fonts siehe das XWindow-User-HOWTO
301

Similar documents