Tuesday 8 May 2012

Triple Monitors in Linux

So I'm using the latest KDE environment 4.8.2 which I much prefer to gnome and the like. However, once upon a time I had an absolute nightmare configuring X11 for my triple monitor setup.

I have an NVIDIA GTX 560 (because I like to do GPU programming) and I also use the integrated graphics card on my i7. Thus, a headache for X11 configuration. However, after much configuration, installing broken NVIDIA drivers and SDKs (xinerama had a bug which caused it to segfault instantly) I finally came to a solution....hopefully this is useful to someone. (Also this serves as a backup when I inevitably accidently overwrite my previous etc/X11/xorg.conf...

If you have questions, let me know in the comments. This configuration is very specific to my setup (obviously) but it should be relatively clear what to tweak if you need to. For example, the busid can be found from lspci. There is plenty of documentation for this stuff in the forum of frustrated users on ubuntuforums however this might be useful if you're looking for 3 monitors. I specifically wanted to have it such that when I full screened an application it wouldn't span multiple monitors hence the Xinerama.

I'm quite proud of it really :p

Section "Module"
        Load "dri"
        Load "dbe"
        Load "extmod"
        Load "type1"
        Load "freetype"
        Load "glx"
EndSection

Section "Monitor"
        Identifier     "Monitor0"
        VendorName     "Unknown"
        ModelName      "Samsung SyncMaster"
        HorizSync       30.0 - 81.0
        VertRefresh     56.0 - 60.0
        Option         "DPMS"
EndSection

Section "Monitor"
        Identifier     "Monitor1"
        VendorName     "Unknown"
        ModelName      "Dell 197FP"
        HorizSync       30.0 - 81.0
        VertRefresh     56.0 - 60.0
        Option         "DPMS"
EndSection

Section "Monitor"
        Identifier     "Monitor2"
        VendorName     "Unknown"
        ModelName      "Dell 196FP"                                                                                                                                                                                                                 
        HorizSync       30.0 - 81.0                                                                                                                                                                                                                 
        VertRefresh     56.0 - 60.0
        Option         "DPMS"
EndSection

Section "Screen"
        Identifier     "Screen0"
        Device         "Device0"
        Monitor        "Monitor0"
        DefaultDepth    24
        Option         "TwinView" "0"
        Option         "metamodes" "DFP: nvidia-auto-select +0+0"
        Option         "DisableGLXRootClipping" "True"
        Option         "AllowGLXWithComposite" "True"
        Option         "RenderAccel" "True"
        Option         "AddARGBGLXVisuals" "True"
        SubSection "Display"
                Depth       24
                Modes      "1920x1080"
        EndSubSection
EndSection

Section "Screen"
        Identifier     "Screen1"
        Device         "Device1"
        Monitor        "Monitor1"
        DefaultDepth    24
        Option         "metamodes" "DFP: nvidia-auto-select +0+0"
        Option         "DisableGLXRootClipping" "True"
        Option         "AllowGLXWithComposite" "True"
        Option         "RenderAccel" "True"
        Option         "AddARGBGLXVisuals" "True"
        SubSection "Display"
                Depth       24
                Modes      "1280x1024"
        EndSubSection
EndSection

Section "Screen"
        Identifier     "Screen2"
        Device         "Device2"
        Monitor        "Monitor2"
        DefaultDepth    24
        Option         "metamodes" "DFP: nvidia-auto-select +0+0"
        Option         "DisableGLXRootClipping" "True"
        Option         "AllowGLXWithComposite" "True"
        Option         "RenderAccel" "True"
        Option         "AddARGBGLXVisuals" "True"
        SubSection "Display"
                Depth       24
                Modes      "1280x1024"
        EndSubSection
EndSection

Section "Extensions"
        Option         "Composite" "Enable"
EndSection

Section "ServerLayout"
        Identifier     "Layout0"
        Screen      0  "Screen0" 0 0
        Screen      1  "Screen2" LeftOf "Screen0"
        Screen     2  "Screen1" RightOf "Screen0"
EndSection

Section "Device"
        Identifier     "Device0"
        Driver         "nvidia"
        VendorName     "NVIDIA Corporation"
        BoardName      "GeForce GTX 560"
        BusID          "PCI:1:0:0"
        Screen          0
        Option  "NoLogo"        "True"
EndSection

Section "Device"
        Identifier     "Device1"
        Driver         "nvidia"
        VendorName     "NVIDIA Corporation"
        BoardName      "GeForce GTX 560"
        BusID          "PCI:1:0:0"
        Screen          1
        Option  "NoLogo"        "True"
EndSection

Section "Device"
        Identifier     "Device2"
        Driver         "intel"
        VendorName     "Intel Corporation"
        BoardName      "4 Series Chipset Integrated Graphics Controller"
        BusID          "PCI:00:02:0"
        Option  "NoLogo"        "True"
EndSection

Section "ServerFlags"
        Option         "Xinerama" "1"
EndSection

No comments:

Post a Comment

Leave a comment!

Can we just autofill city and state? Please!

Coming from a country that is not the US where zip/postal codes are hyper specific, it always drives me nuts when you are filling in a form ...