Adding Second X Screen Breaks Monitor-Awareness on First


I have a working, triple-monitor configuration running as a single X screen. (GeForce GT 640 + 3 Samsung SyncMaster 940BX.) When I maximize a window, it fullscreens to a single monitor only. This works great!

When I add a second, independent X screen (GeForce GT 720 + 1 Dell 2408WFP) to the ServerLayout, maximizing a window on the original screen spreads it across all three monitors. Obviously, I’d prefer the original behavior. (Note that I am not enabling Xinerama in the ServerLayout, as I want the two screens to be independent.)

I am running driver 352.09 on x86_64 with an Intel i7-3570K processor.

A key observation I’ve noted, is that in the original configuration, a verbose log reports the following:

(II) NVIDIA(0): Loading NVIDIA Xinerama information

Whereas, the new configuration does not report such a message. Somehow, adding the new X screen keeps the nvidia driver from loading the Xinerama information needed by my window manager and other programs.

My question: Is there a way to preserve the original behavior of maximizing to a single monitor while adding the additional X screen to the ServerLayout? And if it is not currently possible, is it a feature that could be added to upcoming nvidia driver releases?

I have tried many things, but am open to trying them again, or something new, per your instructions. These include:

  • Adding Option "nvidiaXineramaInfo" "true" to the relevant device. The documentation states that this is "true" by default, but I thought perhaps manually specifying it would force it back on.
  • Turning Xinerama on for the entire ServerLayout. While not what I want, I was able to move windows between the devices, but was still unable to maximize windows to only a single monitor on the original device.
  • Loading other Linux distributions, desktops, and window managers. None of the ones I tried were able to maximize windows to a single monitor on the original device, when the second device was active.

I have attached the configuration files and verbose logs for the working, “One X Screen” configuration and the not-yet-fully-working, “Two X Screens” arrangement, and an nvidia-bug-report for the desired arrangement.

Thank you for any help you can provide!

nvidia-bug-report.log.gz (189 KB)
onexscreen.xorg.conf.txt (581 Bytes)
onexscreen.Xorg.1.log (73.5 KB)
twoxscreens.Xorg.1.log (94 KB)
twoxscreens.xorg.conf.txt (1.06 KB)

Unfortunately, that’s a fundamental limitation of the Xinerama protocol. Xinerama is either enabled or disabled at the X server level, so there’s no way to describe a monitor layout on a particular X screen if there is more than one X screen present. The NVIDIA driver provides its own protocol handler, but the protocol just doesn’t have a way to describe that configuration.

In addition, when the server’s real Xinerama implementation is turned on (the Xinerama flag in ServerLayout that you mentioned), the NVIDIA driver has no way of describing the layout of the monitors within the physical X screen to the Xinerama code, so it reports information about the physical X screens themselves.

Thank you for taking the time to read and respond to my question so quickly. I had a feeling I was banging up against a protocol limitation…

Do you know if RandR addresses this limitation, and if, using that, there is a window manager that might support the scenario above?

Thanks again!