Thursday, 14 August 2008

nVidia xinerama on a Dell M6300

I wrote recently about my efforts to get two screens going, with the primary screen not coming off the primary video output. I used a neat trick, the option:
Option         "UseDisplayDevice" "DFP-0"
The downside with that method of separate X screens, is that you can't drag a window from one to the other.

Now I decided I should try using xinerama. The use should be almost identical, with the advantage that I can drag windows from one screen to the other. There are other subtle advantages such as better panel integration, and general WM goodness.

1. Firstly, compile everything with xinerama support.

If you use a binary distribution, this is probably done for you. For gentoo, add this the /etc/make.conf:
USE="... xinerama"
I prefer this to using /etc/portage/package.use in this case, because you want to catch all future installations that can support this USE flag.

Now, recompile everything that can use the USE flag:
# emerge -vauDN world
(v)erbose, (a)sk, (u)pdate, (D)eep, (N)ewUSE

It shouldn't be necessary to include nvidia-drivers in the recompile, but you will need them installed.

2. edit xorg.conf

You must start with a working xorg.conf, and you must have only one display set up or this step will fail:

# nvidia-xconfig -c /etc/X11/xorg.conf-20080728 -o /etc/X11/xorg.conf --twinview --dynamic-twinview --twinview-orientation=LeftOf --twinview-xinerama-info-order=DFP-2,DFP-0 --constant-dpi --use-edid --use-edid-dpi --damage-events --render-accel

The options are:
  • -c uses a specified input file. I do this so I can start from the same point each time, rather than a constantly changing xorg.conf file
  • -o writes to this file
  • --twinview enables twinview
  • --dynamic-twinview enables dynamically change twinview settings
  • --twinview-orientation=LeftOf sets the second monitor to be left of the primary
  • --twinview-xinerama-info-order=DFP-2,DFP-0 says that DFP-2 (DVI) is the primary display
  • --constant-dpi --use-edid --use-edid-dpi --damage-events --render-accel are other settings I play with to fine tune performance.

3. Restart X

You probably know how to do this. Logging off usually does the trick.

If everything worked you should have:
  • log in screen on one display only
  • desktop extended to second display
  • windows open completely on one display and not in the middle
  • windows snap to the edge of one display
  • windows can be dragged to the second display
  • both displays can be treated like one large screen (my geometry is now 3840x1200!)


Anonymous said...

twinview is not xinerama

tisluk said...

Your'e right, TwinView is not xinerama, but nevertheless on gentoo you need to enable xinerama-use-flag to use nVidia-TwinView...

Anonymous said...

Thanks for this HowTo, searched a long time for this to work and now its working great.

joachim said...

thank you for the hint with the xinerama USE flag!

Copyright 2009 Another Blog. Powered by Blogger Blogger Templates create by Deluxe Templates. WP by Masterplan