The XFree86 Server

Red Hat Linux uses XFree86 4 as the base X Window System, which includes the various necessary X libraries, fonts, utilities, documentation, and development tools. To provide maximum compatibility with older hardware, as well as hardware that is not currently well supported by XFree86 4, Red Hat Linux also provides the older XFree86 3 Server packages. Both XFree86 server versions differ in design methodologies and, as such, vary in features as well as configuration details.

The primary X server (XFree86 4) includes many cutting edge XFree86 technology enhancements such as hardware 3D acceleration support, the XRender extension for anti-aliased fonts, a modular driver based design, support for modern video hardware and input devices, and many other features.

In contrast, the XFree86 3 server packages are standalone non-modular X servers, each of which act as a display driver for specific video hardware. If you are using an XFree86 3 server, you must have the specific X server for your particular video card installed. These older servers do not support many features found only in the newer XFree86 4 servers and are only included for compatibility. The XFree86 3 backward compatibility servers are now deprecated and will eventually be removed from future releases of Red Hat Linux.

The Red Hat Linux installation program installs the base components of XFree86, any optional XFree86 packages you may choose to install, the XFree86 4 X server, and any XFree86 3 X server packages that may be needed for your hardware.

The X Window System resides primarily in two locations in the file system.

/usr/X11R6

A directory containing X client binaries (the bin directory), assorted header files (the include directory), libraries (the lib directory), and manual pages (the man directory), and various other X documentation (the /usr/X11R6/lib/X11/doc/ directory).

/etc/X11

The /etc/X11 directory hierarchy contains all of the configuration files for the various components that make up the X Window System. This includes configuration files for the X server itself, the font server (xfs), the X Display Manager (xdm), and many other base components. Display managers such as gdm and kdm, as well as various window managers, and other X tools also store their configuration in this hierarchy.

XFree86 version 4 server is a single binary executable — /usr/X11R6/bin/XFree86. This server dynamically loads various X server modules at runtime from the /usr/X11R6/lib/modules/ directory including video drivers, font engine drivers, and other modules as needed. Some of these modules are automatically loaded by the server, whereas some are optional features that you must specify in the XFree86 4 server's configuration file /etc/X11/XF86Config-4 before they can be used. The video drivers for XFree86 4 are located in the /usr/X11R6/lib/modules/drivers/ directory. The DRI hardware accelerated 3D drivers are located in the /usr/X11R6/lib/modules/dri/ directory.

XFree86 version 3 servers are individual X server binaries, each of which drive a certain range of video hardware. The installed XFree86 server binaries can be found in the /usr/X11R6/bin/ directory with names in the format of XF86_server-type, where server-type is the name of the server used. There are many different XFree86 3 servers including the basic XF86_VGA16 and XF86_SVGA servers, as well as more specialized accelerated servers such as XF86_Mach64, XF86_S3, XF86_AGX.

XFree86 Server Configuration Files

The XFree86 server configuration files are stored in the /etc/X11/ directory. Since the XFree86 4 and XFree86 3 servers use a different configuration file syntax which are incompatible with each other, each has its own separate configuration file. The XFree86 4 server uses /etc/X11/XF86Config-4, while XFree86 3 uses /etc/X11/XF86Config for X server configuration. When Red Hat Linux is installed, configuration files for both XFree86 versions are created using information gathered during the installation process. If you use Xconfigurator to reconfigure a new video card, both configuration files are regenerated.

The configuration files are made up by a collection of sections, each of which defines a particular aspect of the XFree86 server's operation. Many of the configuration sections are similar in both files, however there are many differences also. One notable difference is that the XF86Config-4 configuration file used by the XFree86 4 server contains new sections such as ServerLayout and Module, that are not found in the version 3 configuration file. The XFree86 4 server allows the usage of multiple input devices, such as mice, keyboards, and drawing tablets. Each input device is presented in its own InputDevice section, where it is assigned an identifying name that tells you about the device. The XFree86 3 server configures the mouse and keyboard via the directives Keyboard and Pointer.

While there is rarely a need to manually edit these files, it is useful to know about the various sections and optional parameters found in them.

Each section begins with a Section "<section-name>" line and ends with an EndSection line. Within each of the sections, you will find several lines containing an option name and at least one option value, occasionally seen in quotes. Given the similarities between the two types of configuration files, the following list explores the most useful sections of an XFree86 version 4 file and the roles of various popular settings.

Device

Specifies information about the video card used by the system. You must have at least one Device section in your configuration file. You may have multiple Device sections in the case of multiple video cards or multiple settings that can run a single card. The following options are required or widely used:

  • BusID — Specifies the bus location of the video card. This option is only necessary for systems with multiple cards and must be set so that the Device section will use the proper settings for the correct card.

  • Driver — Tells XFree86 which driver to load in order to use the video card.

  • Identifier — Provides a unique name for this video card. Usually, this name is set to the exact name of the video card used in the Device section.

  • Screen — An optional setting used when a video card has more than one head, or connector, to go out to a separate monitor. If you have multiple monitors connected to one video card, separate Device sections must exist for each of them with a different Screen value for each Device section. The value accepted by this option is a number starting at 0 and increasing by one for each head on the video card.

  • VideoRam — The amount of RAM available on the video card in kilobytes. This setting is not normally necessary since the XFree86 server can usually probe the video card to autodetect the amount of video RAM. But since there are some video cards XFree86 cannot correctly autodetect, this option allows you to specify the amount of video RAM.

DRI

Direct Rendering Infrastructure (DRI) is an interface which primarily allows 3D software applications to take advantage of the 3D hardware acceleration capabilities on modern supported video hardware. In addition, DRI can improve 2D hardware acceleration performance when using drivers that have been enhanced to use the DRI for 2D operations. This section is ignored unless DRI is enabled in the Module section.

Since different video cards use DRI in different ways. Before changing any DRI values, read the /usr/X11R6/lib/X11/doc/README.DRI file for specific information about your particular video card.

Files

This section sets paths for services vital to the XFree86 server, such as the font path. Common options include:

  • FontPath — Sets the locations where the XFree86 server can find fonts. Different fixed paths to directories holding font files can be placed here, separated by commas. By default, Red Hat Linux uses xfs as the font server and points FontPath to unix/:7100. This tells the XFree86 server to obtain font information by using UNIX-domain sockets for inter process communication.

    See the Section called Fonts for more information concerning XFree86 and fonts.

  • ModulePath — Allows you to set up multiple directories to use for storing modules loaded by the XFree86 server.

  • RgbPath — Tells the XFree86 server where the RGB color database is located on the system. This database file defines all valid color names in XFree86 and ties them to specific RGB values.

InputDevice

Configures an input device such as a mouse or keyboard used to submit information into the system using the XFree86 server. Most systems have at least two InputDevice sections, keyboard and mouse. Each section includes these two lines:

  • Driver — Tells XFree86 the name of the driver to load to use the device.

  • Identifier — Sets the name of the device, usually the name of the device followed by a number, starting with 0 for the first device. For example, the first keyboard InputDevice would have an Identifier of Keyboard0.

Most InputDevice sections contain lines that assign specific options to that particular device. Each of these lines start with Option and contain the name of the option in quotes, followed by the value to assign to that option. Mice usually receive options such as Protocol, such as PS/2, and Device, which designates the mouse to use for this section. The InputDevice section is well commented, allowing you to configure additional options for your particular devices by uncommenting certain lines.

Module

Tells the XFree86 server which modules from the /usr/X11R6/lib/modules/ directory to load. Modules provide the XFree86 server with additional functionality. You should not edit these values.

Monitor

Refers to the type of monitor used by the system. While one Monitor section is the minimum, there may be several Monitor sections, one for each monitor in use with the machine.

WarningWarning
 

Be careful when manually editing values in the options of the Monitor section. Inappropriate values in this section could damage or destroy your monitor. Consult the documentation that came with your monitor for the safe operating parameters available.

The following options are usually configured:

  • HorizSync — Tells XFree86 the range of horizontal sync frequencies compatible with the monitor in kHz. These values are used as a guide by the XFree86 server so that it will know whether to use a particular Modeline entry's values with this monitor.

  • Identifier — Provides a unique name for this monitor, usually numbering each monitor starting at 0. The first monitor would be named Monitor0, the second Monitor1, and so on.

  • Modeline — Used to specify the video modes used by the monitor at particular resolutions, with certain horizontal sync and vertical refresh resolutions. Modeline entries are usually preceded by a comment that explains what the mode line specifies.

    If your configuration file does not include comments for the various mode lines, you can scan over the values (or mode descriptions) to uncover what the mode line is attempting to do. See the XF86Config man page for detailed explanations of each mode description section.

  • ModelName — An optional parameter that displays the model name of the monitor.

  • VendorName — An optional parameter that displays the vendor that manufactured the monitor.

  • VertRefresh — Lists the vertical refresh range frequencies supported by the monitor, in kHz. These values are used as a guide by the XFree86 server so that it will know whether to use a particular Modeline entry's values with this monitor.

Screen

Binds together a particular Device and Monitor that can be utilized as a pair and contain certain settings. You must have at least one Screen section in your configuration file. The following options are common:

  • DefaultDepth — Tells the Screen section the default color depth to try in bits. 8 is the default, 16 provides thousands of colors, and 32 displays millions of colors.

  • Device — Signifies the name of the Device section to use with this Screen section.

  • Identifier — Identifies the Screen section so that it can be referred to by a ServerLayout section and be utilized.

  • Monitor — Tells the name of the Monitor section to be used with this Screen section.

You may also have a Display subsection within the Screen section which tells the XFree86 server the color depth (Depth) and resolution (Mode) to try first when using this particular monitor and video card.

ServerFlags

Contains miscellaneous global XFree86 server settings. These settings may be overridden by options placed in the ServerLayout section. Among the most useful settings:

  • DontZap — Prevents the use of the [Ctrl]-[Alt]-[Backspace] key combination to immediately terminate the XFree86 server.

  • DontZoom — Prevents cycling through configured video resolutions using the [Ctrl]-[Alt]-[Keypad-Plus] and [Ctrl]-[Alt]-[Keypad-Minus] key combinations.

ServerLayout

Binds together a Screen section with the necessary InputDevice sections and various options to create a unified collection of preferences used by the XFree86 server as it starts. If you have more than one ServerLayout section, and the one to use is not specified on the command line when bringing up the XFree86 server, the first ServerLayout section in the configuration file is used.

The following options are used in a ServerLayout section:

  • Identifier — A unique name used to describe this ServerLayout section.

  • InputDevice — The names of any InputDevice sections to be used with the XFree86 server. Most users will only have two lines here, Keyboard0 and Mouse0, the first keyboard and mouse configured for the system. The options CoreKeyboard and CorePointer refer to the fact that these are the preferred keyboard and mouse, respectively, to use with the XFree86 server.

  • Screen — The name of the Screen section to use. The number to the left of the name of the Screen section refers to the particular screen number to use in a multi-head configuration. For standard single-head video cards, this value is 0. The numbers to the right give the X and Y absolute coordinates for the upper-left corner of the screen, by default 0 0.

    Below is an example of a typical screen entry:

    Screen      0  "Screen0" 0 0

For more information, refer to the XF86Config man page.

To review the current configuration of your XFree86 server, type the xset -q command. This provides you with information about your keyboard, pointer, screen saver, and font paths.