A sample XFree86Config file

That's one big file alright !

On a Red Hat distro, this file lives in /etc/X11/ . Before editing, you should save the original file to eg. XF86Config.orig. It looks pretty big, but when you remove all the comments, it looks more reasonable. Besides, most of the stuff can be left as is, and you'll only have to play with three sections: Your video setup ([Screen] section) is composed of two sections : [Device], which is the video adapter, and [Monitor], which is, er; the monitor. In other words, Screen = Device + Monitor.

Important data to collect beforehand

The first thing to do, is to check the features of your video adapter and your monitor in the manual or on the manufacturer's web site. As far as the video adapter is concerned, you'll want to know the name of the manufacturer, the chipset used on your particular adapter, the amount of on-board RAM. To avoid customizing their PCB (the board itself), manufacturers typically do not print the name under which their video adapter is sold, so you should read what it says on the chipset to known what kind of adapter you have (eg. ATI/Rage Pro, S3, Matrox/MGA, etc.)

As for the monitor, check what maximum refresh rates it supports for vertical (in Hz) and horizontal (KHz). An average upper limit for vertical refresh rate on a 17" monitor is about 100Hz for higher end products, while an average maximum horizontal rate would be about 100KHz.

Documentation on X often warns you that you could fry your monitor if you set a maximum rate that is higher than your monitor actually supports, but today's monitors are typically multi-sync, are built to withstand this kind of error for a short period of time, and as long as you don't try rates that are obviously unreasonable for  your particular monitor, it's safe to go by trial and error for a few minutes until you get it right. At least my 3-year old 17" Targa monitor didn't blow up during the past two years I spent learning about Linux :-)

Anatomy of the beast

Below is the XFree86Config file I use on that older 17" monitor and a PCI Matrox adapter with 4Meg of on-board RAM. You'll get much better video with cutting edge monitors like Iiyama or Sony, and AGP adapters.
Section "Files"
    RgbPath "/usr/X11R6/lib/X11/rgb"
    FontPath   "unix/:-1"
Section "ServerFlags"
Section "Keyboard"
    Protocol    "Standard"
    AutoRepeat  500 5
    LeftAlt        Meta
    RightAlt        Meta
   ScrollLock      Compose
   RightCtl        Control
   XkbKeycodes     "xfree86"
   XkbTypes        "default"
   XkbCompat       "default"
   XkbSymbols      "us(pc101)"
   XkbGeometry     "pc"
   XkbRules        "xfree86"
   XkbModel        "pc101"
    XkbLayout       "fr"
Section "Pointer"
    Protocol    "PS/2"
    Device      "/dev/mouse"
Section "Monitor"
    Identifier  "Generic Multisync"
    VendorName  "Unknown"
    ModelName   "Unknown"
    HorizSync   30-58
    VertRefresh 50-85
    # 1024x768 @ 70 Hz, 56.5 kHz hsync
    Modeline "1024x768"    75    1024 1048 1184 1328   768  771  777  806 -hsync -vsync
Section "Device"
    Identifier  "My Video Card"
    VendorName  "Unknown"
    BoardName   "Unknown"
    VideoRam    4096
Section "Screen"
    Driver      "svga"
    Device      "My Video Card"
    Monitor     "Generic Multisync"
    Subsection "Display"
        Depth       16
        Modes       "1024x768"
        ViewPort    0 0
I showed the important parameters in bold letters.

"Monitor" section

In the "Monitor" section, the maximum rate of the HorizSync and VertRefresh must match what your monitor actually supports. To avoid hurting your eyes when spending all that time in front of your computer, you must set vertical refresh rate to above 70Hz. A quick and easy test to see if it is set high enough, is to start in graphic mode (If you didn't get X running yet, try with the Other OS), open a window with a lot of white in it (eg. NotePad in Windows), and look about 10 inches/25 cm above the monitor. You can tell if the picture is stable (good) or flickering (not good). If the latter, you're killing your eyes.

The second important parameter in this section is the Modeline. Once you have X running with the right definition (eg. 1024x768), you can run character-mode application xvidtune to tune up this setting, but to get X started, the numerous Modeline lines in the original file should be good enough. Check the comments above each line, and see whether any matches the horizontal and vertical refresh rates you indicated in this section. In the file above, I only kept the Modeline that matched my monitor : I told X that its top horizontal refresh rate was 58KHz and its top vertical refresh rate was 85Hz, so the only Modeline that matched is this one (56.6Khz as horizontal rate, and 70Hz as vertical rate.)

Most likely, you'll find more fine-tuned Modeline settings on the web once you got X running. Check www.xfree86.org for more.

"Device" section

The only important setting here is the amount of on-board RAM. The more RAM, the more colors and the higher the definition.

"Screen" section

This is where the monitor and device sections are turned into your actual video setting. Driver must match the X server that is installed in your host, eg. XFree86_SVGA in this case. On a Red Hat distribution, this program lives in /usr/bin/, and there's a symlink in /etc/X11/ which is X.

Device and Monitor must match the Identifier setting in the Device and Monitor sections so X can find them.

Depth is the number of colors you want to use (16 is 16-bit color; 8 is 8-bit color, ie. up to 256 colors.)

Modes is the screen definition you want to use. If there are several Modelines in your Monitor section, you can have several Modes setting, eg. Modes "1152x864" "1024x768" "800x600", which lets  you switch definition by using the CTRL-ALT-+ key combination.

Fine tuning X

Once you have X running, open a terminal window and run xvidtune to finish setting up the Modeline parameter. xvidtune will let you change the left/righ/up/down setting along with making the picture narrower/wider/smaller/taller. Once you're satisfied with the result, click on Fetch, and xvidtune will paste the current setting in the terminal window, which you can then copy/paste with the mouse into your XFree86Config file.

The picture is curved on the sides!

That's because you set the maximum horizontal rate too high. Choose a smaller value.