"Linux Gazette...making Linux just a little more fun!"

Linux Installation Primer: X Configuration

By Ron Jenkins

Copyright ® 1998 by Ron Jenkins. This work is provided on an "as is" basis. The author provides no warranty whatsoever, either express or implied, regarding the work, including warranties with respect to its merchantability or fitness for any particular purpose.

The author welcomes corrections and suggestions. He can be reached by electronic mail at rjenkins@unicom.net.

Part Two: X configuration

Welcome to the second installment of the series. In this installment, you will configure your X server, choose a Window Manager (WM,) and learn a few things about how the X system works. Don't worry, it's not as hard as you've heard, and can even be a great deal of fun, so LET'S GET GRAPHICAL!

In this installment, I will cover the following topics:

  1. A brief introduction to the X windowing system
  2. Supported Hardware
  3. Unsupported Hardware
  4. Gathering Information about your hardware
  5. Safety concerns and precautions
  6. Starting the configuration program
  7. Configuration of the mouse under X
  8. Configuration of your video card
  9. Configuration of your monitor
  10. Testing your configuration
  11. Customization tips and tricks
  12. Troubleshooting your configuration
  13. Resources for further information

While the steps needed to configure the X system are fairly standardized, due to some differences and peculiarities between the Slackware 3.5 and RedHat 5.1 versions of Linux, where necessary, I will distinguish between the steps to be taken to accomplish a given task on each distribution.

A brief introduction to the X windowing system

This document will cover the configuration of the X windowing system, XFree86 version 3.3.2-2. This is the version that ships with both RedHat 5.1 and Slackware 3.5. If you are using a different version of XFree86, your mileage may vary, although many of the steps will remain the same.

Unlike Windows based systems, the X windowing system is composed primarily of two separate and distinct components, the X Server, and the Window Manager.

The X Server is the interface between the hardware and the Window Manager. This is somewhat analogous, although not entirely, to the "video driver" in Windows. In addition to servicing hardware requests, it also performs several other important functions, such as managing all X connections to the machine, both local and remote.

One of the advantages of a Unix or Linux system is the fact that it was built from the ground up to be a multi-user system.

This gives a Unix or Linux system the ability to service, or "host" many users, both locally through the use of TTY connections or virtual terminals, or remotely through socket based communication using a variety of protocols.

For an overview of the concept of remote X sessions, see my article in the September Issue of the Linux Gazette.

It is important to note that the aforementioned X Server, as well as most of the functions it performs, occur in the background, and are functionally transparent to the end user. In short, it's a busy little beaver!

The second component of the X windowing system is the Window Manager. This is the element of the X system that comprises the portion of the Graphical User Interface that you interact with. The Window Manager is responsible for the look and feel of your desktop; as well the front-end interface to the commands and programs you run.

There are many Window Managers available for Linux, and each person will have their favorite. It will be up to you to decide which one best fits your needs and preferences.

Since both distributions default to FVWM95, I will confine myself to this Window Manager for the purposes of this introductory document. For further information on some of the many other Window Managers available, consult the resources section.

Supported Hardware

Video Cards:
(The following information is excerpted from the Xfree86 3.3.2 documentation.) This documentation can be found in /var/X11R6/lib/docs/README.

At this time, XFree86 3.3.2 supports the following chipsets:

Ark Logic
ARK1000PV, ARK1000VL, ARK2000PV, ARK2000MT

AP6422, AT24

18800, 18800-1, 28800-2, 28800-4, 28800-5, 28800-6, 68800-3, 68800-6, 68800AX, 68800LX, 88800GX-C, 88800GX-D, 88800GX-E, 88800GX-F, 88800CX, 264CT, 264ET, 264VT, 264GT, 264VT-B, 264VT3, 264GT-B, 264GT3 (this list includes the Mach8, Mach32, Mach64, 3D Rage, 3D Rage II and 3D Rage Pro)

Avance Logic
ALG2101, ALG2228, ALG2301, ALG2302, ALG2308, ALG2401

Chips & Technologies
65520, 65530, 65540, 65545, 65520, 65530, 65540, 65545, 65546, 65548, 65550, 65554, 65555, 68554, 64200, 64300

Cirrus Logic
CLGD5420, CLGD5422, CLGD5424, CLGD5426, CLGD5428, CLGD5429, CLGD5430, CLGD5434, CLGD5436, CLGD5440, CLGD5446, CLGD5462, CLGD5464, CLGD5465, CLGD5480, CLGD6205, CLGD6215, CLGD6225, CLGD6235, CLGD6410, CLGD6412, CLGD6420, CLGD6440, CLGD7541(*), CLGD7543(*), CLGD7548(*), CLGD7555(*)

Digital Equipment Corporation



8514/A (and true clones), XGA-2

AGX-014, AGX-015, AGX-016

MGA2064W (Millennium), MGA1064SG (Mystique and Mystique 220), MGA2164W (Millennium II PCI and AGP)

MX68000(*), MX680010(*)

77C22(*), 77C22E(*), 77C22E+(*)

Number Nine
I128 (series I and II), Revolution 3D (T2R)

NVidia/SGS Thomson
NV1, STG2000, RIVA128

OTI067, OTI077, OTI087


86C911, 86C924, 86C801, 86C805, 86C805i, 86C928, 86C864, 86C964, 86C732, 86C764, 86C765, 86C767, 86C775, 86C785, 86C868, 86C968, 86C325, 86C357, 86C375, 86C375, 86C385, 86C988, 86CM65, 86C260

86C201, 86C202, 86C205

ET3000, ET4000AX, ET4000/W32, ET4000/W32i, ET4000/W32p, ET6000, ET6100

TVGA8800CS, TVGA8900B, TVGA8900C, TVGA8900CL, TVGA9000, TVGA9000i, TVGA9100B, TVGA9200CXR, Cyber9320(*), TVGA9400CXi, TVGA9420, TGUI9420DGi, TGUI9430DGi, TGUI9440AGi, TGUI9660XGi, TGUI9680, Pro- Vidia 9682, ProVidia 9685(*), Cyber 9382, Cyber 9385, Cyber 9388, 3DImage975(PCI), 3DImage985(AGP), Cyber 9397, Cyber 9520

Video 7/Headland Technologies


Western Digital/Paradise

Western Digital
WD90C00, WD90C10, WD90C11, WD90C24, WD90C24A, WD90C30, WD90C31, WD90C33

(*) Note, chips marked in this way have either limited support or the drivers for them are not actively maintained.

All of the above are supported in both 256 color, and some are supported in mono and 16-color modes, and some are supported an higher color depths.

Refer to the chipset-specific README files (currently for TGA, Matrox, Mach32, Mach64, NVidia, Oak, P9000, S3 (except ViRGE), S3 ViRGE, SiS, Video7, Western Digital, Tseng (W32), Tseng (all), AGX/XGA, ARK, ATI (SVGA server), Chips and Technologies, Cirrus, Trident) for more information about using those chipsets.

The monochrome server also supports generic VGA cards, using 64k of video mem- ory in a single bank, the Hercules monochrome card, the Hyundai HGC1280, Sigma LaserView, Visa and Apollo monochrome cards.

The VGA16 server supports memory banking with the ET4000, Trident, ATI, NCR, OAK and Cirrus 6420 chipsets allowing virtual display sizes up to about 1600x1200 (with 1MB of video memory). For other chipsets the display size is limited to approximately 800x600.

Notes: The Diamond SpeedStar 24 (and possibly some SpeedStar+) boards are NOT supported, even though they use the ET4000.

The Weitek 9100 and 9130 chipsets are not supported (these are used on the Dia- mond Viper Pro and Viper SE boards). Most other Diamond boards will work with this release of XFree86. Diamond is actively supporting The XFree86 Project, Inc.

3DLabs GLINT, Permedia and Permedia 2 support could unfortunately not be included in XFree86 3.3.2 since there are open issues regarding the documentation and whether or not they were provided to us under NDA.
(End excerpt from Xfree86 documentation.)

Hypothetically, any monitor you have the documentation for, that is capable of at least VGA or SVGA resolution, SHOULD be compatible. However, the following monitors are explicitly supported:

Slackware 3.5:
Standard VGA, 640x480 @ 60Hz Super VGA, 800x600 @ 56Hz
8514 Compatible, 1024x768 @ 87 Hz interlaced (no 800x600)
Super VGA, 1024x768 @ 87 Hz interlaced, 800x600 @ 56 Hz
Extended Super VGA, 800x600 @ 60 Hz, 640x480 @ 72Hz
Non-Interlaced SVGA 1024x768 @ 60 Hz, 800x600 @ 72 Hz
High Frequency SVGA, 1024x768 @ 70 Hz
Multi-Frequency that can do 1280x1024 @ 60 Hz
Multi-Frequency that can do 1280x1024 @ 74 Hz
Multi-Frequency that can do 1280x1024 @ 76 Hz

NOTE: There is also an option to explicitly specify the Horizontal and Vertical Sync rates for your monitor if you have them available.

Red Hat 5.1:
Custom Mode (see above description for information about standard modes, as well as suggestions for
acquiring information for your monitor if the documentation is not available.
Acer Acerview 11D, 33D/33DL, 34T/34TL
Apollo 1280x1024 @ 68Hz
Apollo 1280x1024 @ 70Hz
Axion CL-1566
Chuntex CTX CPS-1560/LR
Compudyne KD-1500N
CrystalScan 1572FS
Dell VS17
EIZO FlexScan 9080i, T660
Gateway 2000 CrystalScan 1776LE
Generic Monitor
Generic Multisync
HP 1280x1024 @ 72Hz
Highscreen LE 1024
Hitachi SuperScan 20S
Hyundai DeluxScan 14S, 15B, 15G, 15G+, 15 Pro, 17MB/17MS, 17B, 17B+, 17 Pro, hcm-421E
IBM 8507
IDEK Vision Master
Impression 7 Plus 7728D
Lite-On CM1414E
MAG DJ717, DX1495, DX1595, DX1795, Impression 17, MX15F
MegaImage 17
NEC MultiSync 2V, 3D, 3V, 3FGe, 3FGx, 4D, 4FG, 4FGe, 5FG, 5FGe, 5FGp, 6FG, 6FGp,
A500, A700, C400, C500, E500, E700, E1100, M500, M700, P750, P1150, XE15, XE17,
XE21, XP15, XP17, XP21, XV14, XV15, XV17, XV15+, XV17+
Nanao F340i-W, F550i, F550i-W
Nokia 445X, 447B
Optiquest Q41, Q51, Q53, Q71, Q100, V641, V655, V773, V775, V95, V115, V115T
Philips 7BM749, 1764DC
Princeton Graphics Systems Ultra 17
Quantex TE1564M Super View 1280
Relisys RE1564
Sampo alphascan-17
Samsung SyncMaster 15GLe, 15GLi, 15M, 17GLi, 17GLsi, 3, 3Ne, 500b/500Mb, 500s/500Ms,
500p/500Mp, 700b/700Mb, 700p/700Mp, 700s/700Ms
Samtron SC-428PS/PSL, SC-428PT/PTL, 5E/5ME, 5B/5MB, SC-528TXL, SC-528UXL, SC-
MDL, 7E/7ME/7B/7MB, SC-728FXL, SC-726GXL
Sony CPD-1430, CPD-15SX, CPD-100SF, CPD-200SF, CPD-300SF, CPD-100VS, CPD-
120VS, CPD-220VS
Sony Multiscan 100sf, 100sx, 200sf, 200sx, 15sf, 15sfII, 17se, 17seII
ViewSonic 15ES, 15GA, 15GS, 17, 17PS, 17GA, 5e, 6, 7, E641, E655, EA771, G653, G771, G773,
GT770, GT775, P775, PT770, PT775, P810, P815, PT813, VP140
Mice (listed in order of appearance in the selection list, horizontally, from left to right.)
Microsoft Standard mouse

Unsupported Hardware

If X does not directly support your video card and/or monitor, all may not be lost. Try choosing one of the "generic" cards and monitors that most closely resembles your hardware. The SVGA server is a good place to start if you have an unsupported card. Another possible option is the VGA16 server. Almost any card will run (at reduced performance) with one of these two servers.

Another possible option is to consider purchasing a "commercial" X server. Two possible choices are:
MetroX http://www.metrolink.com/
XInside http://www.xinside.com/

These commercial servers often support a wider range of cards and monitors, due to the willingness of the developer of the X server software to abide by Non Disclosure Agreements required by some card manufacturers. In plain English, some card manufacturers refuse to work with the open source community. Something to consider the next time you get ready to purchase a video card.

Likewise, the generic VGA or SVGA monitors will usually at least get you up and running. However, as I have mentioned previously, DO NOT EXCEED THE CAPABILTIES OF YOUR CARD OR MONITOR! Otherwise, you may initiate what is called in the electronics world "a smoke test." This is a bad thing, and makes your house smell, as well as setting off your smoke detector.

Gathering Information about your hardware

It is imperative that you know as much as you can about your video card and monitor. (You did keep those manuals and documentation didn't you?)

If you do not have the documentation available, check the various docs in the /var/X11R6/lib/docs area, or search the Internet. Another possible option is to go directly to the manufacturer's website if available, and acquire the specifications there. A final option on some monitors, the synch rates is sometimes listed on the back along with the model number and other information.

Make sure, if at all possible, that your card and monitor are on the supported hardware list. This will save you a lot of grief and give you the best chance of success, as well as enabling you to take full advantage of the accelerated features of your video card.

At a bare minimum, you should have the following information available: Manufacturer, make and model of your video card: e.g. Matrox Millenium Amount of RAM resident on the video card: e.g. 8MB

Manufacturer, make and model of your monitor: e.g. Viewsonic 15E Horizontal synch rate of your monitor: e.g. 31.5-82.0 Vertical synch rate of your monitor: e.g. 40-100

A special note on mice: If at all possible, try to get a three-button mouse. X uses the middle button for some special functions. While it is possible to configure a two-button mouse to behave as a three-button mouse using an emulator that requires you to depress both buttons simultaneously to emulate the middle button, this feature is flaky at best on many mice and sometimes hard to master.

Note for PS/2 mice users: It has been reported that some users experience problems with the behavior of a PS/2 mouse under X. This is almost always due to the fact that the general-purpose mouse (gpm) program is being loaded at boot time, and for some reason, freaks out X.

Some have suggested adding a variety of switches or other parameters to the start up file that are purported to correct this problem. However, I have had limited success with these methods. Sometimes they will correct the problem, other times they will not.

What does work all the time is to comment out the start up of gpm at boot time.

On a Slackware machine, cd to /etc/rc.d/rc.local and place a pound sign (#) in front of the lines that look similar to the following:

# echo starting gpm
# gpm /dev/mouse

Should you find the need to use gpm while in text mode, simply type gpm <return> and start it manually.

On a RedHat machine, from the command prompt, simply type setup <return>

You will be presented with a dialog box prompting you to select a configuration tool. Select ntsysv then
tab to the run button and press return.

Scroll down the dialog box until you see an entry for gpm. Highlight this entry and depress the spacebar to remove the asterix (*), then exit.

Safety concerns and precautions

Although the X windowing system offers infinite flexibility and configurability, it is very picky about what hardware it will and will not run on.

Just as Unix or Linux will not run on marginal hardware that may work with Windows, it may or may not run on marginal or clone-type video cards and monitors.

While it is possible to "hand tune" X to work with just about any video card and monitor, to do so is NOT RECOMMENDED. Diddling around with your clock settings, choosing a card or monitor "similar" to your equipment, or just picking horizontal and vertical synch rates at random can damage or destroy your video card or monitor. DON'T DO IT!

The optimal configuration, and the only one I can recommend, is to make sure your video card and monitor are explicitly listed and supported by X before trying to configure and run it. While I do offer some suggestions for people with unsupported hardware, there is no guarantee these suggestions will work, nor do I offer any assurance that they won't damage your equipment. Proceed at your own risk.

Starting the configuration program

Before you can actually use X, you must generate a configuration file that tells X about your video card, monitor, mouse, and some default preference information required to initialize the X environment and get it up and running. All of the following configuration steps will need to be done as root initially, then if necessary, you can create your own unique X configuration for each of your respective users.

The method and program used to accomplish this task will depend on which flavor of Linux you are using.

NOTE: The instructions listed below assume you are using Xfree86 3.3.2-2. If you are using one of the commercial X servers, such as MetroX or XInside, your configuration methods may be different. Please consult the documentation that comes with your commercial product.

Slackware 3.5:
The X configuration program for Slackware 3.5 is called XF86Setup. To start the program, at the command prompt, simply type:

XF86Setup <return>

You will be presented with a dialog box prompting you to switch to graphics mode. Select OK.

After a moment, you will enter the XF86Setup screen. Along the top of the screen will be a series of buttons to configure the various components of the X windowing system. They will appear in a horizontal row in the following order:

Mouse Keyboard Card Monitor Modeselection Other

RedHat 5.1:
The X configuration program for RedHat Linux is called Xconfigurator. To start the program, at the command prompt, simply type:

Xconfigurator <return>

Press return to get past the welcome screen, then skip to the video card section.

Configuration of the mouse under X

Slackware 3.5:
This should already have been taken care of during installation. If you have something other than a three-button mouse, be sure to select the Emulate3Buttons option for maximum functionality under X.

The next option, Keyboard, should be already configured properly. Under normal circumstances, no adjustments should be required here.

RedHat 5.1:
This should already have been taken care of for you during installation. If not, break out of the Xconfigurator and run mouseconfig, then start over.

Configuration of your video card

Slackware 3.5:
Select the card option from the menu at the top of your screen. Scroll down and select the appropriate video card for your system.

If necessary, you may also need to select the Detailed setup button to configure Chipset, RamDac, ClockChip, Device options, and the amount of video RAM on your card. Usually these options will be probed automatically. I only mention this so you can "tweak" the card if you are feeling brave.

RedHat 5.1:
The setup program will now autoprobe for your type and model of video card. On the plus side, this can simplify things, IF it properly identifies your card. On the minus side, if it does not, it does not offer you an alternative to manually choose the card. If your card is not properly identified, see the unsupported card section for some general suggestions on some things to try.

Configuration of your monitor

Slackware 3.5:
If you have the documentation available, you may enter the Horizontal and Vertical Synch rates manually in the input boxes, or alternately, you may choose one of the preset configurations in the scroll box.

It is almost always safe to choose either the Standard VGA or Super VGA option to start, then work up to the specific settings and color resolution you desire (subject to the limitations of your hardware.)

Lastly, select the Modeselection option, and choose your desired screen resolution and color depth. To begin with, less is better. Start with 640x480 @ 8bpp to start, then work your way up.

When you are finished with your configuration, select done from the bottom of the screen, and the setup program will attempt to start X with the configuration you have selected. If all goes well, you will be prompted to write the configuration to your XF86Config file and exit. If you have any problems, you will be prompted to try again until you have your configuration setup properly.

RedHat 5.1:
At the Monitor Setup dialog screen, scroll down and choose the appropriate monitor. If your monitor is not listed, choose generic or custom. If you choose custom, have your vertical sync rate and amount of video RAM handy, you will need them.

You will be presented with a dialog box that contains the same monitor choices listed in the Slackware section. After choosing a monitor, you will be prompted to select your vertical sync rate. Finally, you will be asked to specify the amount of video RAM present on your card.

After exiting the Xconfigurator program, you are ready to test your new configuration

Testing your configuration

At the command prompt, simply type startx. If all went well, you should shortly be on your way. If for any reason X fails to start up, go back and run your configuration program again, double-checking that you have all the proper settings.

Customization tips and tricks

By default, both Slackware and RedHat install the FVWN95 Window Manager, a Windows 95 look-alike. This is probably a good start for users transitioning from a Windows based environment, as it will be the most familiar to you.

Since X is infinitely configurable, and also stunningly cryptic at times, an in depth discussion of all the configuration options available under X is beyond the scope of this document. However, what follows are a few things you may be interested in.

A few words about the X desktop:

  1. X allows the use of something called a virtual desktop, which is simply a fancy way of saying you can have a virtual desktop resolution that is larger than the actual resolution you have set your monitor to. As an example, say you have your card resolution to 1024x768 @ 32 bit color. X allows you to set your virtual desktop to 1280x1024, which some people love, and some people hate. If you want to disable this behavior, locate your XF86Config file, scroll down to the Screen sections, and look for a line similar to the following: Virtual 1280 1024. To disable the virtual screen, change this entry to the default screen resolution you have chosen, 1024 768 in this example. Similarly, to enable it, simply change to the next higher resolution, 1280 1024 in this example.
  2. FVWN95, as well as the other popular Window Managers, offer a variety of configuration options. Experiment with them until you find the one you like best.
  3. Finally, depending on your distribution, you may or may not have other Window Managers available to you. Experiment with the different ones available on your system until you find the one you like best. My personal favorite is Afterstep, but you may find you can't live without one of the others. Choose the one you like best. Under FVWM95 on a Slackware box, choose Exit Fvwm95 from the Start menu, then choose the Window Manager you want to use from the drop down box accessed by moving your mouse to the right edge of the menu option, highlighting the arrow (>) that resides there. On a RedHat box, from the Start menu, choose Preferences/WM Style to change to a different Window Manager.

Stupid X Tricks:

  1. To start an X session, simply type startx at the command prompt.
  2. If you have configured your X server for more than one screen resolution, say 640x480, 800x600, and 1024x768, and you want to switch between the different resolutions, simply depress Cntrl+Alt+(either the plus (+) sign, or the minus (-) sign to switch to a higher or lower resolution, respectively. Why would you want to do this? I often do a great deal of Web Design on my machine, and being able to quickly see what a given page will look like at different resolutions is quite handy.
  3. To terminate an X session, you can either exit the session using the appropriate menu selection for your respective Window Manager, or you may depress Cntrl+Alt+Backspace.
  4. You may also set up your personal user accounts (you're not always working as root are you?) by setting up an .xinitrc file in your home directory, if needed. Usually, this is only necessary on a Slackware box. On a RedHat box, I believe this is taken care of for you. Check the documentation.

Troubleshooting your configuration

Basically, there are only a few things that can go wrong with your X installation. Either the X server will refuse to start at all, the X server will start but you get a blank screen, or the X server will start, but for one reason or another, the screen will be improperly sized, flickering, or unreadable.

If the X server refuses to start at all, pay close attention to the error messages that appear while the server errors out. Most frequently, this is an improperly configured monitor or card that causes the server to die. Check your configuration.

If the X server starts, but the screen exhibits an improper size, or excessive flickering, you probably need to adjust your horizontal or vertical sync rates.

If the screen appears to be unreadable, due to excessive lines or smearing of the pixels, check your card and monitor configurations.

Simply put, most problems can be traced back to an improper configuration of the card, the monitor, or both. This is why I strongly recommend making sure your hardware be explicitly supported, or using one of the "generic" configurations to start with.

Beyond this, check the documentation for specific card set problems, specific monitor problems, and other general troubleshooting procedures.

Another possible option is to troll the newsgroups for a similar problem, or post a brief description of the trouble you are having, and hopefully, someone with a similar problem they have solved before will get back to you.

If all else fails, drop me e-mail and I'll be glad to try to help.  

Resources for further information

Xfree86 Resources: Window Managers:

I had originally planned to include the configuration of your basic networking setup into this installment as well, but as you can see, this is a real porker as it is. So look for the networking stuff in part three.

Previous ``Linux Installation Primer'' Columns

Linux Installation Primer #1, September 1998

Copyright © 1998, Ron Jenkins
Published in Issue 33 of Linux Gazette, October 1998