The XF86Config file format is similar to the old format, with the following changes:
The Device sections are similar to what they used to be, and describe hardware-specific information for a single video card. Device Some new keywords are added:
Specifies the name of the driver to be used for the card. This is mandatory.
Specifies uniquely the location of the card on the bus. The purpose is to identify particular cards in a multi-headed configuration. The format of the argument is intentionally vague, and may be architecture dependent. For a PCI bus, it is something like "bus:slot:func".
A Device section is considered ``active'' if there is a reference to it in an active Screen section.
The Screen sections are similar to what they used to be. They no longer have a Driver keyword, but an Identifier keyword is added. (The Driver keyword may be accepted in place of the Identifier keyword for compatibility purposes.) The identifier can be used to identify which screen is to be active when multiple Screen sections are present. It is possible to specify the active screen from the command line. A default is chosen in the absence of one being specified. A Screen section is considered ``active'' if there is a reference to it either from the command line, or from an active ServerLayout section.
The InputDevice section is a new section that describes configuration information for input devices. It replaces the old Keyboard, Pointer and XInput sections. Like the Device section, it has two mandatory keywords: Identifier and Driver. For compatibility purposes the old Keyboard and Pointer sections are converted by the parser into InputDevice sections as follows:
Identifier "Implicit Core Keyboard"
Identifier "Implicit Core Pointer"
An InputDevice section is considered active if there is a
reference to it in an active ServerLayout section. An
InputDevice section may also be referenced implicitly if there
is no ServerLayout section, if the
line options is used, or if the ServerLayout section doesn't
reference any InputDevice sections. In this case, the first
sections with drivers "keyboard" and "mouse" are used as the core
keyboard and pointer respectively.
The ServerLayout section is a new section that is used to identify which Screen sections are to be used in a multi-headed configuration, and the relative layout of those screens. It also identifies which InputDevice sections are to be used. Each ServerLayout section has an identifier, a list of Screen section identifiers, and a list of InputDevice section identifiers. ServerFlags options may also be included in a ServerLayout section, making it possible to override the global values in the ServerFlags section.
A ServerLayout section can be made active by being referenced on the command line. In the absence of this, a default will be chosen (the first one found). The screen names may optionally be followed by a number specifying the preferred screen number, and optionally by information specifying the physical positioning of the screen, either in absolute terms or relative to another screen (or screens). When no screen number is specified, they are numbered according to the order in which they are listed. The old (now obsolete) method of providing the positioning information is to give the names of the four adjacent screens. The order of these is top, bottom, left, right. Here is an example of a ServerLayout section for two screens using the old method, with the second located to the right of the first:
Section "ServerLayout" Identifier "Main Layout" Screen 0 "Screen 1" "" "" "" "Screen 2" Screen 1 "Screen 2" Screen "Screen 3" EndSection
The preferred way of specifying the layout is to explicitly specify the screen's location in absolute terms or relative to another screen.
In the absolute case, the upper left corner's coordinates are given
after the Absolute keyword. If the coordinates are
omitted, a value of
(0,0) is assumed. An example
of absolute positioning follows:
Section "ServerLayout" Identifier "Main Layout" Screen 0 "Screen 1" Absolute 0 0 Screen 1 "Screen 2" Absolute 1024 0 Screen "Screen 3" Absolute 2048 0 EndSection
In the relative case, the position is specified by either using one of the following keywords followed by the name of the reference screen:
When the Relative keyword is used, the reference screen name is followed by the coordinates of the new screen's origin relative to reference screen. The following example shows how to use some of the relative positioning options.
Section "ServerLayout" Identifier "Main Layout" Screen 0 "Screen 1" Screen 1 "Screen 2" RightOf "Screen 1" Screen "Screen 3" Relative "Screen 1" 2048 0 EndSection
Options are used more extensively. They may appear in most sections now. Options related to drivers can be present in the Screen, Device and Monitor sections and the Display subsections. The order of precedence is Display, Screen, Monitor, Device. Options have been extended to allow an optional value to be specified in addition to the option name. For more details about options, see the Options section for details.