Re: need smarter WM window placement with two monitors

Paul Johnson <[email protected]> Wed, 23 Nov 2005 12:35:13 -0600
Newsgroups gmane.compw.window-managers.windowmaker.user
Message-ID <[email protected]>
Henrik Prinz wrote:
> Paul Johnson schrieb:
> 
>>With an Nvidia dual-head display, I have some inconvenient experiences
>>with WindowMaker.  Most prominently, new windows that are created in the
>>center of the display are split between the two monitors.  I wish Window
>>Maker could somehow know that I have 2 monitors and stop starting
>>programs in a way that straddles the 2 monitors.
> 
> 
> Did you compile WindowMaker with --enable-xinerama?
> 

YES.

But I think the TWinView thing is shooting me in the butt.  The X11 
system sees a single monitor with 2560x1024, and so I bet Window Maker 
does not even perceive the presence of a dual display.

> 
>>I'm using the Nvidia Twinview configuration, so the 2 1280x1024 monitors
>>are seen as one single monitor 2560x1024. Window Maker scales the
>>background images all the way across both monitors.
> 
> 
> Do you have the Xinerama extension in your xorg.conf enabled?

With Nvidia, one does not use the Xinerma from xorg. Rather, one uses 
TWinView.

TWinView supplies Xinerama-like messages for window managers, but in the 
opinion of the Nvidia TwinView authors, Window Maker falls into a class 
of "broken" window managers that don't correctly respond to the Xinerama 
immitation messages they provide. Note below I have 
"NoTwinViewXineramaInfo" set, because otherwise Window Maker just takes 
the background image and puts one copy on each monitor, not scaled 
across both.

Section "Device"
         Identifier  "Videocard0"
         Driver      "nvidia"
         VendorName  "Videocard vendor"
         BoardName   "NVIDIA GeForce FX (generic)"

         Option "TwinView" "true"
         Option "NoTwinViewXineramaInfo" "true"
         Option "SecondMonitorHorizSync"  "30.0-85.0"
         Option "SecondMonitorVertRefresh"  "50.0-160.0"
         Option "MetaModes" "1280x1024, 1280x1024; 1024x768, 1024x768"
         Option "TwinViewOrientation" "RightOf"
         Option "ConnectedMonitor" "CRT, CRT"


EndSection


I'll go back and see how WindowMaker window placement changes if I 
change that to "false".  I throw away the background management, oh well.


Here's the comment from the Nvidia manual:

    Option "NoTwinViewXineramaInfo" "boolean"
                 When in TwinView, the NVIDIA X driver normally provides
                 a Xinerama extension that X clients (such as window
                 managers) can use to to discover the current TwinView
                 configuration.  Some window mangers can get confused by
                 this information, so this option is provided to disable
                 this behavior.  Default: TwinView Xinerama information
                 is provided.


And they provide a FAQ:

Q: Will window managers be able to appropriately place windows
    (e.g. avoiding placing windows across both display devices, or in
    inaccessible regions of the virtual desktop)?

A: Yes.  The NVIDIA X driver provides a Xinerama extension that X clients
    (such as window managers) can use to discover the current TwinView
    configuration.  Note that the Xinerama protocol provides no way to
    inform clients of when a configuration change occurs.  So, if you
    modeswitch to a different MetaMode, your window manager will still
    think you have the previous configuration.  Using the Xinerama
    extension, in conjunction with the XF86VidMode extension to get
    modeswitch events, window managers should be able to determine the
    TwinView configuration at any given time.

    Unfortunately, the data provided by XineramaQueryScreens() appears to
    confuse some window managers; to workaround such broken window mangers,
    you can disable communication of the TwinView screen layout with the
    "NoTwinViewXineramaInfo" X config Option (please see Appendix D
    for details).

    Be aware that the NVIDIA driver cannot provide the Xinerama
    extension if the X server's own Xinerama extension is being used.
    Explicitly specifying Xinerama in the X config file or on the X 
server commandline will prohibit NVIDIA's Xinerama extension from 
installing,   so make sure that the X server's log file does not contain:

      (++) Xinerama: enabled

    if you wish the NVIDIA driver to be able to provide the Xinerama
    extension while in TwinView.

    Another solution is to use panning domains to eliminate inaccessible
    regions of the virtual screen (see the MetaMode description above).

    A third solution is to use two separate X screens, rather than use
    TwinView.  Please see (app-r) APPENDIX R: CONFIGURING MULTIPLE X
    SCREENS ON ONE CARD.


> 
> Henrik
> _______________________________________________
> INFO: https://windowmaker.org/lists/listinfo/wm-user
> ARCHIVE: https://windowmaker.org/lists/archive/wm-user/
> FAQ: http://windowmaker.org/faq.html


-- 
Paul E. Johnson                       email: [email protected]
Dept. of Political Science            http://lark.cc.ku.edu/~pauljohn
1541 Lilac Lane, Rm 504
University of Kansas                  Office: (785) 864-9086
Lawrence, Kansas 66044-3177           FAX: (785) 864-5700
_______________________________________________
INFO: https://windowmaker.org/lists/listinfo/wm-user
ARCHIVE: https://windowmaker.org/lists/archive/wm-user/
FAQ: http://windowmaker.org/faq.html