Ubuntu, NVIDIA and Two MonitorsTuesday, January 22 2008
Ever since I've been using two monitors at work I've wanted to setup two monitors at home but finances are tight and I just can't afford another flat screen. But this weekend I did dust off my daughters old 17" CRT and tried to get it working with my Dell widescreen. I knew the latest Ubuntu had made advances in setting up monitors but I was also familiar with hacking on xorg.conf so I wasn't too concerned with screwing anything up. I backed up my xorg.conf and started tinkering.
I originally messed with Ubuntu's native screen controls but they were having no effect. After a bit of digging I discovered if you are using the 'restricted' NVIDIA drivers (which I was) there is another application for tweaking settings - nvidia-settings. This was a bit confusing. Which one to use? (Ubuntu should check to see if the NVIDIA drivers are installed and if so disable the native screen tools.) The NVIDIA application provided a nice dialog - both screens were showing - but at incorrect resolutions. I tweaked a few things - saved, restarted my session. Nothing happened. The CRT was working but my Dell widescreen was doing nothing. I tried a few more things and got frustrated so I hit the Ubuntu forums. Lots of threads on there about running dual head but no real silver bullet solutions. One suggestion did mention running the settings application as sudo. I tried that and things started to work. After a bit more experimentation I got the following modes to work.
Twinview - this is a NVIDIA setting. It basically takes your current desktop and 'stretches' it across both monitors. This would probably work OK if both monitors were the same size and resolution but since mine were different - it was a bit odd to work with. I could also not 'contain' my applications to one screen. If I maximized a window - it would stretch across both monitors. Not ideal.
Next I turned off Twinview and enabled Xinerama.
Xinerama is an extension to the X Window System which enables multi-headed X: applications and window managers which use two (or more) physical displays as one large virtual display.
This worked but oddly enough some applications (like terminal and Gnome Do) would not start. After tinkering a bit I discovered the fancy new compositing window manager Compiz wasn't running. Why? I have no idea. But overall this was the most "Windows" like setup. I could drag running applications between screens but if I maximized an application it would contain itself to one monitor. But without Compiz running the system was unusable. If I can get Compiz running in this mode I'll be happy.
Finally I removed the Xinerama setting and just set configured two X sessions. This gave me two independent desktops. I had two taskbars, two desktops and while I could drag and drop icons and files between the two screens I could not open an application on one desktop and move it to the other. This works and is what I'm using now but obviously it is not ideal.
I'm going to tinker with the 'restricted' NVIDIA drivers a bit more. If I can't make any progress I may try the drivers from the NVIDIA site itself and see if anything improves. The other alternative is to figure out why Compiz isn't running and fix that.
I've been so happy running Ubuntu it is a shame that getting this setup is so difficult. While I'm happy tweaking things I could easily see others hitting this roadblock and giving up. Hopefully the Ubuntu team will make some progress on tightening up the integration between native Ubuntu apps, restricted drivers and Compiz.