Apr 15, 2014
Update: This xorg.conf is confirmed working with the described setup after upgrading to Ubuntu 14.04. The upgrade will rename the file and attempt to use no xorg.conf; however, placing it back as "xorg.conf" within /etc/X11/ and restarting brings back a working triple-monitor configuration.

At work I use a Dell Optiplex 7010 with a Radeon HD 7470, which seems to be a very common configuration these days due to volume purchasing discounts.  Lately I’ve been attempting to switch it over to running just Linux instead of Windows 7 with Linux on half the screens in a VM.  The problem has been that I run monitors on both the onboard graphics card and the Radeon–I know, shoot me.

The problem with running Linux with such a setup is that you’re pretty well stuck with just the onboard or just the Radeon unless you work some voodoo with the X configuration.  Running open source Radeon drivers gets you all of the screens, but those running off the Radeon are glitchy to the point of being unusable.  The mouse disappears, windows leave trails, the screen goes black, the session locks up, etc.  Installing the proprietary drivers solves all of this beautifully, but then your onboard goes black.

The solution is to buy a different graphics card, frankly.  Or buy a DisplayPort hub and hope the limited and sometimes contradictory documentation on the HD 7470 is correct in saying it supports Eyefinity.

Or you could write xorg.conf files and install and uninstall things repeatedly for weeks to save fifty bucks because Linux.  And with that in mind, here’s your xorg.conf:

Section "ServerLayout"
Identifier "aticonfig Layout"
Screen 0 "aticonfig-Screen[0]-0" 0 0

Section "Module"

Section "ServerFlags"
Option "Xinerama" "true"

Section "Monitor"
Identifier "aticonfig-Monitor[0]-0"
Option "VendorName" "ATI Proprietary Driver"
Option "ModelName" "Generic Autodetecting Monitor"
Option "DPMS" "true"

Section "Device"
Identifier "onboard"
Driver "intel"
VendorName "Intel Corporation"

Section "Device"
Identifier "aticonfig-Device[0]-0"
Driver "fglrx"
BusID "PCI:1:0:0"

Section "Screen"
Identifier "aticonfig-Screen[0]-0"
Device "aticonfig-Device[0]-0"
Monitor "aticonfig-Monitor[0]-0"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24

I frankly have no idea why this works, but it does. Of all the xorg.confs I wrote and generated or half-wrote half-generated, this one seems an unlikely candidate, but I can’t argue with the results.

Fork me on GitHub