XFree86 server 4.x Design (DRAFT) : The XF86Config File
Previous: Preface
Next: Driver Interface

## 2. The XF86Config File

The XF86Config file format is similar to the old format, with the following changes:

### 2.1. Device section

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:

Driver "drivername"

  Specifies the name of the driver to be used for the card. This is mandatory.

BusID "busslot"

  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.

### 2.2. 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.

### 2.3. InputDevice 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:

Keyboard

  Identifier "Implicit Core Keyboard"
  Driver "keyboard"

Pointer

  Identifier "Implicit Core Pointer"
  Driver "mouse"

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 `-screen` command 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.

### 2.4. ServerLayout section

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:

> RightOf
> LeftOf
> Above
> Below
> Relative

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

### 2.5. Options

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.

XFree86 server 4.x Design (DRAFT) : The XF86Config File
Previous: Preface
Next: Driver Interface