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