Druckversion

Die Datei XF86Config

Übersicht Weiter

Vermutlich gibt es heute nur noch wenige Hardware-Konstellationen, bei denen alle verfügbaren Konfigurationwerkzeuge versagen. Für den seltenen Fall, dass dem doch so ist, kann eine manuelle Bearbeitung der XF86Config-Datei die Rettung bedeuten. Aber Vorsicht: Falsche Einstellungen zerstören unter Umständen die Hardware!

Ich selbst hatte vor Jahren das TFT-Displays eines Notebooks zur Mitarbeit animiert, nachdem ich etwas mit den Modelines herum experimentierte. Zugegeben, es war eine riskante Angelegenheit, aber auf das Notebook gab's ja noch Garantie;-)

Die Lage der Datei XF86Config

»XF86Config« ist die einzige für den X-Server relevante Konfigurationsdatei. In den meisten Systemen werden Sie sie im Verzeichnis »/etc/X11/« finden; ältere SuSE-Distributionen (< 7) legten sie direkt im Verzeichnis »/etc/« ab. Seit XFree86 Version 4 ist die Namensgebung leider nicht bei allen Distributionen einheitlich; mitunter nennt sich die Datei auch »XF86Config-4«. Gar noch größere Vielfalt ist zu beobachten, wenn die X-Server in beiden Versionen 3.3.x und 4.x parallel installiert sind. Oft konfiguriert »/etc/XF86Config« dann den älteren Server, während »/etc/X11/XF86Config« die Version 4 betrifft.

Der Aufbau der Datei XF86Config

Die Datei »XF86Config« ist in so genannte »Sektionen« gegliedert, die in diesem Abschnitt vorgestellt seien. Einige Sektionen sind erst in den Versionen ab XFree86 4.0 relevant, andere kennen nur die »älteren« X-Implementierungen, wobei mit Ausnahme von XInput alle Sektionen weiterhin unterstützt werden. Bei den versionsabhängigen Sektionen geben die Überschriften der einzelnen Abschnitte die zugehörige Version an; gilt eine Sektion in jeder Version, entfällt diese Angabe.

Abweichende Syntax

Mit dem Wechsel von XFree86 Version 3.3.6 zu Version 4 wurde die Syntax mancher Angaben in der Datei XF86Config geringfügig geändert. Genau genommen betrifft es die Einträge der Sektionen, die als »Optionen« bezeichnet werden. Ab Version 4 werden diese Optionen nicht nur bei ihrem Namen benannt, sondern zusätzlich durch das Schlüsselwort »Option« eingeleitet. Eine »Section ServerFlags» in Syntax der Version 4 sähe dann wie folgt aus:

Section "ServerFlags"
  Option   "AllowMouseOpenFail"
  Option   "DontZap"
EndSection

In der Konfigurationsdatei für X-Server der Versionen 3.3.x lautet ein gleichwertiger Eintrag hingegen:

Section "ServerFlags"
  AllowMouseOpenFail
  DontZap
EndSection

In den nachfolgenden Beispielen verwenden wir mit Ausnahme der 3.3.x-er spezifischen Sektionen ausschließlich die neuere Syntax; der Leser sollte die Änderungen leicht nachvollziehen können.

Die Sektion Files Zurück Anfang Weiter

Bestimmte Variablen enthalten Pfadangaben, in denen der Server nach Dateien sucht:

FontPath Verzeichnisse, die Schriften enthalten
RGBPath Verzeichnis mit der Datenbasis der Rgb-Farbtabelle
ModulePath Verzeichnis mit Modulen

Sollten Sie bspw. nachträglich neue Schriften installieren, so fügen Sie den neuen Pfad zu [FontPath] hinzu, und alle X-Programme können nachfolgend diese verwenden.

Section "Files"
  RgbPath       "/usr/X11R6/lib/X11/rgb"
  FontPath      "/usr/X11R6/lib/X11/fonts/Type1"
  FontPath      "/usr/X11R6/lib/X11/fonts/URW"
  FontPath      "/usr/X11R6/lib/X11/fonts/misc"
  FontPath      "/usr/X11R6/lib/X11/fonts/75dpi"
  FontPath      "/usr/X11R6/lib/X11/fonts/100dpi"
  FontPath      "/usr/X11R6/lib/X11/fonts/freefont"
  FontPath      "/usr/X11R6/lib/X11/fonts/sharefont"
EndSection

Auch der Port, an dem ein möglicher Fontserver seine Dienste anbietet, wird dem X-Server über einen FontPath-Eintrag bekannt gegeben. Für den Standardport 7100 sähe ein Eintrag wie folgt aus:

Section "Files"
...
  FontPath      "unix/:7100"
...
EndSection

Die Sektion Module Zurück Anfang Weiter

Module sind Erweiterungen, die der X-Server dynamisch nachladen kann, um bestimmte Geräte zu unterstützen. In Versionen vor 4.0 existieren einzig Module, die den Zugriff auf verschiedene Eingabegeräte wie Joysticks, Touchscreens,... ermöglichen; diese Geräte selbst müssen in der Sektion XInput angegeben werden.

Ab Version 4 des X-Servers sind weitere Teile dessen als Module realisiert.

Module werden entweder mit ihrem vollständigen Zugriffspfad oder nur mittels ihres Namens angegeben. In letzterem Fall muss das Modul in einem der durch »ModulePath« genannten Verzeichnisse oder in einem Standardpfad (/usr/X11R6/lib/modules/fonts oder /usr/X11R6/lib/modules/extensions) enthalten sein.

Section "Modules"
  Load  "dri"
  Load  "glx"
  Load  "extmod"
  Load  "freetype"
EndSection

Verwenden Sie XFree86 Version 4 und verfügen über eine Grafikkarte mit 3D-Unterstützung, so sollten Sie die Module für das Direct Rendering Interface (load "dri") und die X-Window-Erweiterungen von OpenGL (load "glx") einbinden, um die Fähigkeiten ihrer Grafikkarte auch nutzen zu können.

Die Sektion ServerFlags Zurück Anfang Weiter

Verschiedene Optionen beeinflussen die Arbeit des X-Servers. Die interessantesten sind:

DontZap

Verhindert das Beenden des X-Servers über die Tastenkombination [Ctrl]-[Alt]-[Backspace]. Ein solches Verhalten kann in Verbindung mit grafischem Login nützlich sein.

DontZoom

Verhindert das Ändern der Auflösung während einer X-Sitzung. Das Umschalten zwischen den konfigurierten Auflösungen ist sonst mit den Tastenkombinationen [Ctrl]-[Alt]-[-] bzw. [Ctrl]-[Alt]-[+] möglich.

AllowMouseOpenFail

Der Server startet auch, wenn er das Maus-Device nicht öffnen konnte. In der Voreinstellung beendet sich der Server in einem solchen Fall.

Eine ServerFlag-Sektion könnte wie folgt aufgebaut sein:

Section "ServerFlags"
  Option   "AllowMouseOpenFail"
  Option   "DontZap"
EndSection

Die Sektion Keyboard [3] Zurück Anfang Weiter

Bemerkung: Ab XFree86 Version 4.0 ist diese Sektion in der Sktion »InputDevice« enthalten.

Die Sektion ist hauptsächlich für die Belegung der Tastatur verantwortlich. Zwar können die einzelnen Tasten auch nachträglich neu belegt werden, doch wird man das kaum für alle 104 Tasten vollziehen wollen. Das manuelle Mapping dient nur, um einzelnen Tasten des Standardlayouts mit neuen Funktionen zu versehen.

Die nachfolgend beschriebenen Optionen sind nur eine Auswahl.

Protocol

Hier wird wohl immer Standard stehen. Mit Xqueue wird das Verhalten von System V Unix eingestellt, wo alle Eingaben zunächst in einer "Event Queue" landen.

LeftAlt, AltGr, ScrollLock, RightCtl

Die Standardbelegung der benannten Funktionstasten kann verändert werden. Die Voreinstellung ist Meta für LeftAlt und AltGr, Compose für ScrollLock und Control für RightCtl. Als neue Werte sind gestattet: Meta, Compose, ModeShift, ModeLock, ScrollLock und Control.

XkbRules

Solange der X-Server von XFree86-Projekt stammt, sollte hier immer "xfree86" stehen. Dies ist auch die Voreinstellung, falls die Option nicht angegeben ist.

XkbModel

Die Voreinstellung ist "pc102", sollte aber auf "pc104" gesetzt werden, um die zusätzlichen Tasten einer 104-Tasten-Tastatur verwenden zu können.

XkbLayout

Hier steht der Ländercode, also "de" für Unterstützung der deutschen Tastaturbelegung. Die Voreinstellung ist "us".

XkbVariant

Einige Tasten (~, ^, ´) sind "tote" Tasten, d.h. sie werden beim einfachen Anschlag nicht sofort in einen Zeichencode umgesetzt, sondern nur, wenn nachfolgend die Leertaste gedrückt wurde. Dieses Verhalten dient z.B. zum Setzen von Akzenten in vielen Sprachen. Für deutsche Tastaturbelegungen empfiehlt sich die Option "nodeadkeys", die die "toten" Tasten aktiviert.

Section "Keyboard"
  Protocol      "Standard"
  XkbRules      "xfree86"
  XkbModel      "pc104"
  XkbLayout     "de"
  XkbVariant    "nodeadkeys"
EndSection

Die Sektion Pointer [3] Zurück Anfang Weiter

Bemerkung: Ab XFree86 Version 4.0 ist diese Sektion in InputDevice enthalten.

Hier erfolgen die Angaben über die Maus. Hierunter zählen Mausprotokoll, Anzahl unterstützter Tasten, die Zeitspanne zwischen zwei Klicks... Ich beschränke mich auf die gebräuchlichen Optionen:

Protocol

Bei neueren Modellen und vor allem aktuelleren XFree86-Versionen (> 3.3.5) kann im Falle serieller Mäuse auto angegeben werden. X sollte in der Lage sein, den konkreten Typ selbsttätig zu bestimmen. Weitere verbreitete Mausprotokolle sind "Logitech", "Microsoft" und "PS/2". Verwechseln Sie nicht den Hersteller mit dem Protokoll, auch viele Logitech-Mäuse arbeiten nach dem Microsoft-Protokoll!

Device

Die Schnittstelle, an der die Maus angeschlossen ist. Steht hier "/dev/mouse", so sollte dies ein Link auf das entsprechende Device sein. Für serielle Mäuse lauten die richtigen Namen "/dev/tty0" (1. serielle Schnittstelle), "/dev/tty1" (2. serielle Schnittstelle) usw. Eine PS/2-Maus ist am Device "/dev/psaux", eine USB-Maus an "/dev/usbmouse" (veraltet: /dev/input/mice) angeschlossen.

BaudRate

Die Geschwindigkeit, mit der Daten von der Maus empfangen oder zur Maus übertragen werden. 1200 ist der normale Wert.

Buttons

Anzahl der Maustasten, wenn sich diese von 3 (Voreinstellung) unterscheidet.

Emulate3Buttons

Bei 2-Tasten-Mäusen wird die dritte Taste durch gleichzeitiges Drücken der beiden Tasten emuliert. Um sinnvoll mit X arbeiten zu können, sind 3 Tasten notwendig.

Emulate3Timeout

Diese Zeitspanne in Millisekunden kann das Betätigen beider Tasten maximal auseinander liegen, so dass der X Server dies als 3. Taste akzeptiert. Voreinstellung ist 50 ms.

Resolution

Mausgeschwindigkeit; sinnvolle Werte liegen - je nach Geschmack - zwischen 200..600 (Hz).

SampleRate

Anzahl der Mausereignisse (Tastendruck, Bewegung), die die Maus maximal in einer Sekunde senden kann.

ZAxisMapping

Dient der Konfiguration eines Mausrads. Die beiden Werte sind so zu wählen, dass sie um 1 bzw. 2 höher sind, als die Anzahl der Maustasten.

Ein entsprechender Abschnitt der Konfigurationsdatei ist wie folgt aufgebaut:

Section "Pointer"
  Protocol          "Microsoft"
  Device            "/dev/ttyS0"
  SampleRate        "60"
  BaudRate          "1200"
  ZAxisMapping      "4 5"
EndSection

Die Sektion Monitor Zurück Anfang Weiter

Bemerkung Ab XFree86 Version 4.0 sind die ModeLine-Zeilen in eine eigene Sektion Modes ausgelagert.

Zum Verständnis des folgenden Abschnitts ist eine kurze Einführung in die prinzipielle Arbeitsweise von Monitoren unumgänglich:

Eine Kathode erzeugt in Zusammenarbeit mit einer Anode einen Elektronenstrahl, der beim Auftreffen auf die Bildschirmoberfläche (Anode) deren Beschichtung zum Erleuchten bringt. Der Elektronenstrahl beginnt in der linken oberen Bildschirmecke, bewegt sich, gesteuert durch ein Ablenksystem, nach rechts, bis ein Hsync-Signal ihn zurück zum Zeilenanfang der folgenden Zeile bringt. Erreicht der Elektronenstrahl die rechte untere Bildschirmecke, ist ein Vsync-Signal notwendig, um einen vertikalen Rücklauf zum Bildschirmanfang zu bewirken. Die verschiedenen Kontraste und Farben der Darstellung werden durch die Intensität des Elektronenstrahls variiert, beim Rücklauf bewirkt die Intensität 0 dessen "Unsichtbarkeit". Das Nachleuchten der angeregten Teilchen auf der Bildschirmoberfläche ist nur von kurzer Dauer, so dass der Strahl mehrfach in der Sekunde den gesamten Bildschirm überstreifen muss, um ein flimmerfreies Bild zu erzeugen (Refresh oder vertikale Bildschirmfrequenz). 70 Bilder sind das Minimum, das man seinen Augen in der Sekunde zumuten sollte.

Zurück zur Konfiguration...

Mit Identifier ist ein eindeutiger Name einzugeben, über den in der später beschriebenen Sektion "Screen" der Monitor referenziert wird. Die beiden Angaben zum Monitor-Hersteller "VendorName" und Modell "ModelName" besitzen rein informativen Charakter und können entfallen.

Enorm wichtig ist die korrekte Angabe der horizontalen HorizSync und vertikalen VertSync Frequenzen, die der Monitor unterstützt. Ein zu kleiner Wert ist nicht kritisch, allerdings leidet die Qualität der Ausgabe, da die Möglichkeiten des Monitors nicht ausgereizt werden. Zu hohe Angaben können allerdings auf die Dauer den Bildschirm beschädigen. Welche Frequenzbereiche für einen Monitor zulässig sind, erfahren Sie aus dem Handbuch oder bei manchen Modellen durch einen Herstelleraufdruck auf der Monitor-Rückseite. Bei Festfrequenzmonitoren werden die möglichen Werte durch Komma getrennt angegeben, bei variablen Frequenzen erfolgt die Angabe als Bereich Min-Max.

Die "ModeLine"-Zeilen sind das Kernstück der Konfiguration. Sie bestimmen, wie sich der Elektronenstrahl über die Mattscheibe bewegt und bestimmen somit neben der Bilddimension dessen Ausrichtung auf dem Bildschirm (Breite, Höhe, Abstände zum Rand). Die Angabe der Modelines kann nach 2 Varianten erfolgen:

# 1. Syntaxvariante
ModeLine "800x600" 97.55 800 816 928 1040 600 600 615 626

# 2. Syntaxvariante
Mode "800x600"
    DotClock    97.55
    HTimings    800 816 928 1040
    VTimings    600 600 615 626
    Flags
EndMode

DotClock ist die Videobandbreite in MHz und gibt an, wie viele Pixel binnen einer Sekunde von der Grafikkarte zum Monitor übertragen werden können. Angenommen das Bild soll mit 100 Hz (100 Bilder in der Sekunde) dargestellt werden, so ist bei einer Auflösung von 800x600 Bildpunkten eine Videobandbreite von 48 + x MHz notwendig, wobei x eine durch den horizontalen und vertikalen Rücklauf des Elektronenstrahls bestimmte Komponente (Faustregel ca. 10 MHz) ist. Der angegebene Wert muss mit einem der Werte aus der Sektion Device übereinstimmen (eine Abweichung in der Nachkommastelle ist zulässig), sonst handelt es sich um einen ungültigen Modus. Bei modernen Grafikkarten lassen sich die Frequenzen frei programmieren, so dass der Modus mit der höchst möglichen "DotClock" bei gleicher Auflösung gewählt wird.

HTimings steuert die horizontale Bewegung des Elektronenstrahls. Im obigen Beispiel soll dieser 800 Pixel anzeigen, nachfolgend 16 Pixel (801-816) "schwarz" darstellen. Für die Zeitspanne der Darstellung von 928-816=112 Pixel, wird ein Hsync-Signal erzeugt, das den Strahl an den Beginn der nächsten Zeile platziert. Auf dieser sind nochmals 1040-928=112 Pixel mit einer Intensität von "0" zu zeichnen, bevor der Vorgang wiederholt wird.

VTiming ist dasselbe Prinzip bezogen auf Zeilen. Im Beispiel sind also 600 Zeilen "normal" anzuzeigen, bevor "keine" Zeile "schwarz" dargestellt wird. Anschließend folgt ein Vsync-Impuls, der solange währt, wie die Darstellung von 15 Zeilen andauern würde, um mit 11 Zeilen "unsichtbarer" Darstellung einen Durchlauf abzuschließen.

Flags definiert spezielle Optionen, z.B. Interlace, womit billige Monitore versuchen, die Frequenzen teurer Exemplare zu simulieren und den Benutzer mit Kopfschmerzen quälen. Bei eingermaßen moderner Technik sollten die Flags nicht mehr notwendig sein.

TFT-Bildschirme neigen meist zu einer zu hellen Darstellung, die mit den bildschirmeigenen Einstellmöglichkeiten nur unzureichend auszugleichen ist. Ein Eintrag Gamma Wert (Wert=0.1..10) kann durchaus zu akzeptablen Ergebnisses führen. Der genaue Wert muss durch Tests ermittelt werden.

Was nützt die Kenntnis der einzelnen Werte der Timings?

Bleiben wir beim Beispiel der obigen HTimings-Werte 800 816 928 1040. Das Verhältnis vom ersten zum letzten Wert bestimmt die Breite des Bildes. Ist die Differenz kleiner, wird die Darstellung breiter, ist sie größer, wird das Bild schmaler. Mit Verringerung des HSync-Signals (Differenz von zweitem zu drittem Wert) verschieben Sie das Bild nach rechts und mit einer Verlängerung nach links. Die besten Ergebnisse erzielen Sie, indem Sie den zweiten Wert erhöhen, während Sie den dritten Wert um den gleichen Betrag vermindern. Dieses "Finetuning" funktioniert allerdings nur in geringen Grenzen, wenn Sie die Werte zu stark ändern, kann der Monitor die Darstellung verzerren und im schlimmsten Fall verweigern.

Sie können sich zurücklehnen... es ist gar nicht notwendig, dass Sie die Werte von Hand errechnen. Verwenden Sie z.B. das Programm xvidtune (unter X und eventuell mit der Option "--display 0:0") und spielen Sie mit den Werten bis sich ein stabiles Bild ergibt.

Mit einem Beispiel verabschieden wir uns aus der Sektion Monitor:

Section "Monitor"
  Identifier    "Mein Monitor"
  VendorName    "Unwichtig"
  ModelName     "Interessiert nicht"
  HorizSync     30-96
  VertRefresh   50-150
  Modeline "1600x1000" 199.68 1600 1616 1968 2080 1000 1000 1015 1044
  Modeline "1280x960" 159.74 1280 1296 1552 1664 960 960 975 1003
  Modeline "1024x768" 127.49 1024 1040 1216 1328 768 768 783 802
  Modeline "640x480" 62.48 640 656 720 832 480 480 491 501
  Modeline "1600x1200" 199.68 1600 1616 1968 2080 1200 1200 1215 1253
  Modeline "1280x1024" 159.74 1280 1296 1552 1664 1024 1024 1039 1070
  Modeline "1152x864" 143.62 1152 1200 1416 1536 864 864 879 902
  Modeline "800x600" 97.55 800 816 928 1040 600 600 615 626
EndSection

Die Sektion Modes [4]

Der Aufbau der ModeLine-Zeilen ist analog zur Beschreibung aus der Sektion Monitor; eine (verkürzte) Sektion könnte damit so aussehen:

Section "Modes"
  Identifier    "Diese Modelines"
  Modeline "1600x1200" 199.68 1600 1616 1968 2080 1200 1200 1215 1253
...
  Modeline "800x600" 97.55 800 816 928 1040 600 600 615 626
EndSection

Wichtig ist bei mehreren Modes-Sektionen die Eindeutigkeit des Identifier, über den der Zugriff in der Sektion Monitor vorgenommen wird:

Section "Monitor"
...
  UseModes "Diese Modelines"
EndSection

Die Sektion Device

Für jede im System installierte Grafikkarte kann eine eigene Sektion Device enthalten sein. Wichtig ist der eindeutige Identifier, der einen frei wählbaren Bezeichner enthält. Die Angaben zum Hersteller VendorName und Modell BoardName können entfallen.

Ab XFree86 Version 4 ist die Angabe von Driver <Treibername> zwingend erforderlich, um dem Server die korrekte Auswahl des Treibers für diese Grafikkarte zu ermöglichen. Die gültigen Treibernamen erfährt man aus den gleichnamigen Manualpages der Sektion 4 (meist unter /usr/X11R6/man/man4). Befinden sich mehrere Grafikkarten im System, benötigt der Server Kenntnis über deren Anordnung auf dem Bus. Mit BusID <Slot> wird die Zuordnung zwischen Grafikkarte und ihrem PCI- bzw. AGP-Steckplatz getroffen. Die korrekte Angabe für "Slot" kann mittels "X -scanpci" ermittelt werden. Der "BusID"-Eintrag kann bei Verwendung von nur einer Grafikkarte entfallen.

Für viele aktuelle Grafikkarten wurden damit schon alle erforderlichen Angaben erfasst, der Rest sollte automatisch ermittelt werden können.

Leider klappt es mit der Identifizierung der Parameter dann doch nicht immer so genau... vor allem ältere Grafikkarten halten sich mit ihren Informationen sehr bedeckt. Deswegen sollten die interessantesten Optionen kurz vorgestellt werden:

Chipset

Der Name des Chipsatzes der Grafikkarte kann hier angegeben werden. Sie erfahren diesen entweder anhand der Beschriftung des Chips auf der Karte oder aus dem Handbuch oder mit Hilfe des Kommandos "SuperProbe". Kennen Sie den Chipsatz nicht, dann lassen Sie die Option weg.

Ramdac

Der Ramdac bestimmt die Taktfrequenz ihrer Grafikkarte. Auch diesen sollten Sie nur angeben, wenn Sie den Typ exakt kennen. Wieder können die unter Chipset angeführten Quellen die Information enthalten.

Clocks

Besitzt die Grafikkarte keinen programmierbaren Clock-Generator (bestimmt die Videobandbreite), so müssen hier alle Frequenzen angegeben werden, die die Grafikkarte unterstützt. Die entsprechenden Werte finden Sie mit etwas Glück in der Datei "/usr/X11R6/lib/X11/Cards". Eventuell entlockt auch ein Aufruf von "X -probeonly" die korrekten Angaben. Wenn nicht, könnten Sie mit Werten ähnlicher Grafikkartentypen experimentieren. Allerdings sollten Sie das nur als letzte Möglichkeit in Betracht ziehen und auch nur dann, wenn noch Garantie auf die Hardware besteht. Eine Clock-Zeile schaut in etwa wie diese aus:

Clocks    25.20 28.32 40.0 30.0 50.10 77.0 36.10 45.0

Möchten Sie sehr viele Werte angeben, lassen sich diese auf mehrere Clock-Zeilen verteilen. Die Angabe eines Wertes macht nur Sinn, wenn in der Sektion Monitor ein entsprechender Modus existiert.

VideoRam

Der wohl unkritischste Wert... Hier tragen Sie einfach die Größe des RAMs ihrer Karte ein (in kByte).

Eine weitere (teils wichtige) Möglichkeit ist die Angabe von speziellen Optionen, die einem Schlüsselwort "Options" folgen können. Teilweise sind diese Optionen in den Dateien des Verzeichnisses "/usr/X11R6/lib/X11/doc/" dokumentiert. Aus eigener Erfahrung kann ich nur auf "sw_cursor" verweisen, da einige Grafikkarten ohne Verwendung dieser Option den Mauszeiger nur als flimmerndes Karree projezierten.

Section "Device"
  Identifier    "Primary-Card"
  VendorName    "---AUTO DETECTED---"
  BoardName     "---AUTO DETECTED---"
  VideoRam      8192
  Option       "sw_cursor"
EndSection

Für XFree86 in der Version 4 könnte eine Device-Sektion wie folgt aussehen, wobei wir die Existenz von zwei Grafikkarten (eine AGP, eine PCI) annehmen:

Section "Device"
  Identifier  "AGP-Karte"
  Driver      "ati"
  VideoRam    8192
  BusID       "PCI:1:0:0"
EndSection
Section "Device"
  Identifier  "PCI-Karte"
  Driver      "mga"
  VideoRam    4096
  BusID       "PCI:0:11:0"
EndSection

Die Sektion Screen

In dieser Sektion findet die Zuordnung von Grafikkarte, Monitor und X-Server zu den unterstützen Auflösungen statt. Es ist nicht ungewöhnlich, für mehrere Konstellationen mehrere Screen-Sektionen zu verwenden.

Jede Screen-Sektion beginnt mit 3 Einträgen:

Identifier (nur in Version 4)

Ein eindeutiger Name, unter dem der Eintrag in der Sektion ServerLayout angesprochen wird.

Driver (nur in Version 3)

Hier steht der Name des zu verwendenden Treibers, also z.B. "svga" für den SVGA-Server, "accel", "mono", "vga2", "vga16" entsprechend (In der Version 4 findet die Zuordnung zum Treiber in der Device-Section statt).

Device

Hier steht der Name der Grafikkarte für die dieser Abschnitt gelten soll. Dieser Name ist identisch mit dem Identifier-Eintrag der Sektion Device.

Monitor

Hier steht der Name des Monitors für den dieser Abschnitt gelten soll. Dieser Name ist identisch mit dem Identifier-Eintrag der Sektion Monitor.

Zwei weitere Optionen verdienen erwähnt zu werden. Dies ist zum einen DefaultColorDepth, das die Server anweist, mit der angegebenen Farbtiefe zu starten. Fehlt der Eintrag, ist der erste SubSection "Display"-Eintrag Ausschlag gebend. Mit BlankTime kann die Zeitspanne (in Minuten) zum Aktivieren des Bildschirmschoners eingestellt werden (wenn dieser nicht explizit gesetzt wird, erscheint ein schwarzer Bildschirm). Voreingestellt sind 10 Minuten.

Entscheidend für die Darstellung sind nun die verschiedenen SubSection "Display"... EndSubSection- Einträge. Für jede Farbtiefe (8,16, 24, 32 Bit) existiert meist eine eigene SubSection da es u.a. vom VideoRAM-Ausbau abhängt, welche Auflösung bei welcher Farbtiefe tatsächlich erzielt werden kann.

Mit Depth wird die Farbtiefe eingestellt, für die der Eintrag relevant ist. Modes enthält nun eine Liste der Auflösungen, die der X-Server unterstützen soll. Zwischen diesen kann im laufenden Betrieb mit [Ctrl][Alt][+] und [Ctrl][Alt][-] umgeschalten werden. Der X Server startet immer mit der ersten in der Liste angegebenen Auflösung, sofern es sich um eine gültige Angabe handelt. Dazu schaut der Server in der Sektion "Monitor" nach, ob ein passender ModeLine-Eintrag existiert, dessen DotClock wiederum in der "Device"-Sektion aufgeführt sein muss.

Virtuelle und physische Auflösung

Abbildung 1: Virtuelle und physische Auflösung

Der X Server unterscheidet zwischen virtueller und physischer Auflösung. Letztere ist jene, die tatsächlich vom Bildschirm dargestellt werden kann. Mit Virtual kann eine virtuelle Auflösung eingetragen werden. Dabei wird der X Server nur einen Ausschnitt in Größe der gewählten physischen Auflösung darstellen. Und indem man mit der Maus »über« den Rand des Bildschirms hinausscrollt, wird der Ausschnitt automatisch in die vorgegebene Richtung verschoben. Ist die Angabe unter »Virtual« kleiner als der größte Wert in der Liste der Auflösungen, so wird jener Wert aus der Liste als virtuelle Auflösung genommen!

Das Beispiel zeigt die Screen-Sektion der Version 3.x; ab Version 4 tritt anstelle des Eintrags »driver« der »identifier«:

Section "Screen"
  Driver        "SVGA"
  Device        "Primary-Card"
  Monitor       "Mein Monitor"
  DefaultColorDepth     32
  SubSection "Display"
    Depth       32
    Modes       "1152x864" "1028x768" "800x600"
    Virtual     1152 864
  EndSubSection
  SubSection "Display"
    Depth       24
    Modes       "1152x864" "1028x768" "800x600"
    Virtual     1600 1200
  EndSubSection
  SubSection "Display"
    Depth       16
    Modes       "1600x1200"
  EndSubSection
  SubSection "Display"
    Depth       8
    Modes       "1600x1200"
  EndSubSection
EndSection

Section "Screen"
  Driver        "Accel"
  Device        "Primary-Card"
  Monitor       "Mein Monitor"
  DefaultColorDepth     32
  SubSection "Display"
    Depth       32
    Modes       "1152x864"
    Virtual     1152 864
  EndSubSection
  SubSection "Display"
    Depth       24
    Modes       "640x480"
  EndSubSection
  SubSection "Display"
    Depth       16
    Modes       "1600x1200"
  EndSubSection
  SubSection "Display"
    Depth       8
    Modes       "640x480"
  EndSubSection
EndSection

Die Sektion XInput [3]

Bemerkung: Diese Sektion wird ab XFree86 Version 4.0 nicht mehr unterstützt.

Die Sektion XInput wird einzig zur Unterstützung weiterer Eingabegeräte benötigt. Moderne Eingabegräte bringen ihre eigenen Treiber in Form von Modulen mit, so dass diese in der Sektion Module anzugeben sind. Wichtigstes Gerät wird wohl ein Joystick sein, der unter Linux mit folgenden Einschränkungen unterstützt wird:

  • Bewegungen werden relativ ausgewertet
  • Zwei Richtungen werden ausgewertet (x und y)
  • Zwei Tasten werden unterstützt

Jedes Gerät wird innerhalb einer SubSection-EndSubSection-Umgebung beschrieben, für einen Joystick sind die Angaben Port, das Device, an dem der Joystick angeschlossen ist und DeviceName, der Name des X-Devices, zwingend. Die anderen Angaben überschreiben die voreingestellten Werte und werden einzig zur Feinabstimmung verwendet.

Die Sektion InputDevice [4]

Diese Sektion ist als Ersatz der alten Sektionen "Keyboard", "Pointer" und "XInput" gedacht; wobei die beiden ersteren weiterhin unterstützt werden.

Neu hinzu kommende Schlüsselwörter sind Identifier <Eindeutiger_Name> und Driver <Treibername>. Die weiteren Einstellungen erfolgen analog zu den Angaben der "alten" Sektionen.

Eine zu den Beispielen in Keyboard und Pointer identische Konfiguration würde somit wie folgt aussehen:

Section "InputDevice"
  Identifier         "Meine Tastatur"
  Driver             "keyboard"
  Option  "Protocol"           "Standard"
  Option  "XkbRules"           "xfree86"
  Option  "XkbModel"           "pc104"
  Option  "XkbLayout"          "de"
  Option  "XkbVariant"         "nodeadkeys"
EndSection

Section "InputDevice"
  Identifier         "Meine Maus"
  Driver             "mouse"
  Option  "Protocol"           "Microsoft"
  Option  "Device"             "/dev/ttyS0"
  Option  "SampleRate"         60
  Option  "BaudRate"           1200
EndSection

Die Sektion VideoAdaptor [4]

Die derzeitige Aufnahme dieser Sektion scheint in weiser Voraussicht auf die weitere Entwicklung von XFree86 geschehen zu sein. Vorgesehen ist hier die direkte Unterstützung von Videokarten (Fernsehen). Der Status der jetzigen Implementierung lässt keine Rückschlüsse auf eine mögliche Konfiguration zu, selbst auf der Homepage der XFree86-Organisation finden sich keinerlei Hinweise.

Die Sektion ServerLayout [4]

Diese Sektion trägt der Möglichkeit von XFree86 Version 4 Rechnung, den Desktop wahlweise auf einem oder mehreren ("Multi Head Modus") Bildschirm(en) darzustellen. Die ServerLayout-Sektion verbindet eine oder mehrere Screen-Sektionen mit einer oder mehreren Input-Sektionen. Bei Verwendung nur eines Monitors, einer Tastatur und einer Maus kann sie entfallen.

Eine jede ServerLayout-Sektion kann folgende Einträge enthalten:

Identifier

Eindeutiger Name für diese Sektion

Screen

Für jeden Screen, der in dieser Sektion genutzt werden soll, ist ein eigener Eintrag anzulegen. Dem Schlüsselwort »Screen« folgt der Name der Screen-Sektion, die hiermit referenziert werden soll (Identifier aus "Section Screen").

Alle weiteren Angaben sind optional.

Dem Screen-Namen kann eine Screen-Nummer (Zählung beginnt mit 0) folgen. Dies ist nur notwendig, wenn die Nummerierung von der Reihenfolge der Screen-Einträge abweicht.

Bei mehreren Screen-Zeilen kann die Positionsangabe eines Screens (Screen-Number = 0) entfallen; alle weiteren Screens erfordern die Angabe der Lage bez. dieses "Referenzscreens". Mit Absolute x y können verbindliche Koordinaten für den Screen vereinbart werden, wobei die Lage ausgehend von der linken oberen Desktopecke (0,0) beschrieben wird. Das Gegenstück ist Relative "Screen-Name" x y, das die Lage ausgehend vom mit Screen-Name benannten Eintrag kalkuliert (anstatt des Namens kann auch die Screen-Nummer angegeben werden).

Gebräuchlich sind aber die Angaben RightOf "Screen-Name", LeftOf "Screen-Name", Above "Screen-Name" und Below "Screen-Name", die für rechts, links, oberhalb bzw. unterhalb des benannten Screens stehen.

InputDevice

Mit diesen Zeilen werden die Eingabegeräte der jeweiligen Screen-Sektion zugeordnet. Zumindest die Einträge für Tastatur und Maus sollten nicht fehlen.

Dem Schlüsselwort InputDevice muss der Name der zugeordneten InputDevice-Sektion folgen (der dortige Identifier). Werden mehrere Eingabegeräte vom selben Typ zugeordnet, sollte eines als "Haupteingabegerät" gekennzeichnet werden, indem im Falle einer Tastatur als dritter Eintrag der Zeile CoreKeyboard und bei einer Maus CorePointer folgt. Ohne diese Angaben werden implizit die jeweils ersten Einträge des Typs als Haupteingabegerät angenommen.

Soll bspw. eine zweite Maus gleichzeitig benutzt werden, steht SendCoreEvents an Stelle des dritten Parameters. Sie löst dieselben Aktionen aus, wie die "default"-Maus.

Options

Hier dürfen alle Optionen stehen, die auch in ServerFlags erlaubt sind, wobei die hiesigen Angabe frühere überschreiben.

Das abschließende Beispiel definiert zwei ServerLayout-Sektionen; die erste für einen Monitor und eine zweite für zwei Bildschirme. Bei Start des Servers, wird dieser immer die zuerst angegebene Sektion wählen, es sei denn, er wird mit der Option "-layout Layout_Identifier" aufgerufen.

Section "ServerLayout"
   Identifier   "Einer alleine"
   Screen       "Dieser Screen"
   InputDevice  "Meine Maus" "CorePointer"
   InputDevice  "Meine Tastatur" "CoreKeyboard"
EndSection

Section "ServerLayout"
   Identifier   "Zwei gemeinsam"
   Screen       "Dieser Screen"
   Screen       "Jener Screen" RightOf "Dieser Screen"
   InputDevice  "Meine Maus" "CorePointer"
   InputDevice  "Meine Tastatur" "CoreKeyboard"
EndSection

Anmerkung: In der "Section Screen" müssen die Sektionen unter den Namen "Dieser Screen" und "Jener Screen" existieren (entspricht dem dortigen Identifier); das Gleiche gilt für "Meine Maus" und "Meine Tastatur", die in der "Section InputDevice" spezifiziert sein sollten.

Die Sektion DRI [4]

Die Sektion dient der Regulierung des Zugangs zur 3D-Hardware-Unterstützung. Vorraussetzung ist natürlich, dass Ihre Grafikkarte über die entsprechenden Fähigkeiten verfügt und X diese Karte vollends unterstützt. In der Datei "/usr/X11R6/lib/X11/doc/README.DRI" finden Sie eine Auflistung der von Ihrer X-Version verwendbaren Karten.

Die Schlüsselworte der Sektion sind Mode <Rechte> und Group <Gruppe>. Letztere Angabe ist optional; entfällt sie, gelten die Rechte für alle Benutzer.

Die Angabe der Rechte geschieht analog zu den Datei-Zugriffsrechten. Um also alle Benutzer am 3D-Genuss teilhaben zu lassen, genügt eine einfache Sektion:

Section "DRI"
  Mode  0666
EndSection

Den Zugang auf Gruppenbasis zu ermöglichen, erfolgt analog; sinnvoll erscheint, die berechtigten Benutzer in eine neue Gruppe aufzunehmen:

Section "DRI"
  Group  "group3d"
  Mode   0660
EndSection

Die Sektion Vendor [4]

Diese Sektion ist für herstellerspezifische Erweiterungen vorgesehen. Es bleibt abzuwarten, ob sich auch für XFree86 Version 4 kommerzielle Server-Implementierungen einstellen werden.

Korrekturen, Hinweise?
Startseite Nächste Seite Nächstes Kapitel Vorherige Seite Kapitelanfang