Xinerama
Jon TURNEY
jon.turney@dronecode.org.uk
Mon Nov 24 01:53:00 GMT 2008
Yaakov (Cygwin Ports) wrote:
> Looking further into Xinerama, I think I brushed it off too early. It
> is *very* widely supported[1], and while XRandR is supposed to replace
> it, actual implementation and usage may be some time off.
>
> I also think that there may be some potential flaws in windowed
> multiplemonitor mode that Xinerama support would fix. While the current
> behaviour makes sense in multiwindow mode, I'm not sure that it does in
> windowed mode. Since X window managers have no sense of what is really
> happening in that case, placing a dialog in the centre of the X display
> could easily land on the seam between two monitors. (I know, I tried
> it.) With Xinerama support, however, they would have the necessary
> information to DTRT.
Actually, -multiwindow mode is equally deficient. If we presented the the
monitors as separate screens to X (rather than one large screen which spans
the entire Windows virtual desktop), X apps could do sensible placement with
their windows also)
> I think that the implementation may be simpler than we thought. To see
> the situation as it stands:
>
> 1) Build and install xineramaproto;
> 2) Remove the --disable-xinerama flag from xorg-server and rebuild;
> 3) Build and install libXinerama;
> 4) Remove --without-xinerama from xdpyinfo and rebuild.
This part is fine with me
> For this example, on my single-head system I launched XWin with:
>
> X +xinerama -nodecoration -screen 0 640x480 -screen 1 640x480+640+0
>
> This gives :0.0 and :0.1 side-by-side. If you have a multihead system,
> you could just as easily run:
>
> X +xinerama -nodecoration -screen 0 @1 -screen 1 @2
>
> Now, let's see what xdpyinfo has to say:
>
> $ xdpyinfo -ext XINERAMA | tail
> [snip]
> XINERAMA version 1.1 opcode: 128
> head #0: 640x480 @ 0,0
> head #1: 640x480 @ 0,0
>
> AFAICS that implies that the X geometry overlaps. Indeed, if you run an
> X client, both screens show exactly the same thing, but only screen 0
> accepts input. Compare this to -xinerama, where each screen is
> completely independent from the other, as if you were running :0 and :1.
Yes, I think what I was trying to say back here [1], is that there isn't much
value in enabling Xinerama until there is code in the server to set the
monitor layout somehow.
> On Linux, after defining the Screens, you must define their relationship
> in ServerLayout, e.g.[2]:
>
> Section "ServerLayout"
> Identifier "Simple Layout"
> Screen "Screen 2"
> Screen "Screen 1" RightOf "Screen 2"
> InputDevice "Mouse1" "CorePointer"
> InputDevice "Keyboard1" "CoreKeyboard"
> EndSection
>
> So if we were to add additional parameters to the -screen flag, e.g.:
>
> X +xinerama -nodecoration -screen 0 640x480 -screen 1 640x480+640+0
> - -rightof 0
The problem is that these native windows containing server screens are
movable! Xinerama can't deal with dynamic changes to the layout (whereas I
think XRandR will be able to)
I'm not sure there's a need for any additional command line parameters. We
can imply that screen 1 (in your example) is to the right of screen 0 from the
co-ordinates it's given.
In "-fullscreen -multimonitor" or "-multiwindow" mode, we could use the
Windows GetMonitorInfo() API to discover the monitor geometry (it's perhaps an
acceptable limitation that the server will need to be restarted to notice any
changes to this)
[1]
http://sourceforge.net/mailarchive/forum.php?thread_name=48F0B732.2040100%40dronecode.org.uk&forum_name=cygwin-ports-general
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://x.cygwin.com/docs/
FAQ: http://x.cygwin.com/docs/faq/
More information about the Cygwin-xfree
mailing list