In the process of getting dual-head, “TwinView” monitor support set up, I discovered an interesting challenge.
First, dual-head support allows you to have your computer display to output to two displays at the same time. In my case, the output is going to both the laptop display and an external monitor.
The challenge was that I had installed the nvidia-glx packages for the OpenSource nvidia driver support. Some time passed, so I forgot I had done that. Then, when I decided I wanted to have dual monitor support, I found a site that talked about modifying the /etx/X11/xorg.conf file after installing the closed-source, commercial, drivers directly from nvidia. So, I just installed the commercial drivers, with the help of a very bright friend, Theron. Theron was able to make the necessary modifications to the xorg.conf file and had my desktop spanning two monitors! This was exactly what I was looking for.
So, as any previously burned hacker of Linux config files has learned, it is a good idea to reboot after making changes that affect use of your hardware. This lets you fix any problems while you are still in the frame of mind of what you were messing with. Well, we quickly learned that there was an issue. We had to keep reinstalling the nvidia drivers after booting because the Xserver would no longer run. Then, we would run startx and everything would be fine until we rebooted. We later discovered that the problem was the nvidia-glx package that I had installed previously. After these packages were removed and the machine rebooted, everything was working great.
I am including the contents of my xorg.conf file I am using for those of you with nvidia cards (go5200) or a IBM G41 laptop as this should help you get running without having to mess as much. Make sure you make a backup copy of your xorg.conf before you make any changes.
X= Snip =X
# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig: version 1.0 (buildmeister@builder3) Tue Aug 1 21:11:12 PDT 2006
Section “ServerLayout”
Identifier “Layout0”
Screen 0 “Screen0” 0 0
Screen 1 “Screen1” 0 0
InputDevice “Keyboard0” “CoreKeyboard”
InputDevice “Mouse0” “CorePointer”
EndSection
Section “Files”
RgbPath “/usr/X11R6/lib/X11/rgb”
EndSection
Section “Module”
Load “dbe”
Load “extmod”
Load “type1”
Load “freetype”
Load “glx”
EndSection
Section “InputDevice”
# generated from default
Identifier “Mouse0”
Driver “mouse”
Option “Protocol” “auto”
Option “Device” “/dev/psaux”
Option “Emulate3Buttons” “no”
Option “ZAxisMapping” “4 5”
EndSection
Section “InputDevice”
# generated from default
Identifier “Keyboard0”
Driver “kbd”
EndSection
Section “Monitor”
Identifier “Monitor0”
VendorName “Unknown”
ModelName “Unknown”
HorizSync 30.0 – 110.0
VertRefresh 50.0 – 150.0
Option “DPMS”
EndSection
Section “Monitor”
Identifier “Monitor1”
VendorName “Unknown”
ModelName “Unknown”
HorizSync 30.0 – 110.0
VertRefresh 50.0 – 150.0
Option “DPMS”
EndSection
Section “Device”
Identifier “Device0”
Driver “nvidia”
VendorName “NVIDIA Corporation”
EndSection
Section “Device”
Identifier “Device1”
Driver “nvidia”
VendorName “NVIDIA Corporation”
EndSection
Section “Screen”
Identifier “Screen0”
Device “Device0”
Monitor “Monitor0”
DefaultDepth 24
Option “TwinView” “True”
Option “TwinViewOrientation” “LeftOf”
Option “UseEdidFreqs” “True”
Option “MetaModes” “1280×1024, 1280×1024”
SubSection “Display”
Depth 24
Modes “1600×1200” “1280×1024” “1024×768” “800×600” “640×480”
EndSubSection
EndSection
Section “Screen”
Identifier “Screen1”
Device “Device1”
Monitor “Monitor1”
DefaultDepth 24
Option “TwinView” “True”
Option “TwinViewOrientation” “RightOf”
Option “UseEdidFreqs” “True”
Option “MetaModes” “1280×1024, 1280×1024”
SubSection “Display”
Depth 24
Modes “1280×1024” “1024×768” “800×600” “640×480”
EndSubSection
EndSection
X= Snip =X