Re: Xinerama

2009-01-19 Thread Yaakov (Cygwin/X)
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA256

Tracking in bugzilla:

http://sourceware.org/bugzilla/show_bug.cgi?id=9762


Yaakov
Cygwin/X

-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (Cygwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEAREIAAYFAkl0RhoACgkQpiWmPGlmQSOhTgCfRfHXsZ8abdCS7R0kTIy9kP9I
BgMAn2hgXdujdKzapx+I/3YHGQdnxe+h
=cZZ9
-END PGP SIGNATURE-

--
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/



Re: Xinerama

2008-11-24 Thread Michael Hennebry

On Sun, 23 Nov 2008, Yaakov (Cygwin Ports) wrote:


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.


This caused me to suspect that I'd misinterpreted some earlier mailings.
Further research increased said suspicion.
I'd like to make sure I'm following the conversation correctly.

On Sun, 16 Nov 2008, Yaakov (Cygwin Ports) wrote:

-multiwindow means hide the root window and use the internal window manager
to integrate X windows with native windows


The internal window manager means the one built into cygwin-xfree?
The root X-window, though invisible, can still receive X-events?


-multiplemonitors means I want one big X screen for this display to span all
my monitors and is on by default in -multiwindow mode


All pixels are presumed to be the same physical size and shape?
I remember reading somewhere that all the monitors had to have the same depth,
but not any other restrictions.
Messy things will happen if different monitors
interpret their pixels differently?
As a window has only one visual at a time,
a window that straddled such monitors would look messy.

Xinerama does something similar, but is more flexible?


If you want -multiwindow mode, but only on 1 screen, something like XWin
-screen 0 @1 -multiwindow should work.


IIRC someone suggested that one might want to do multi-monitor
with one monitor per X-screen.
That would be easier on window managers,
but would not allow moving a window from one monitor to another?

As I don't expect to grow another head,
this is more a matter of curiosity than anything else.

--
Michael   [EMAIL PROTECTED]
Pessimist: The glass is half empty.
Optimist:   The glass is half full.
Engineer:   The glass is twice as big as it needs to be.

--
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/



Re: Xinerama

2008-11-23 Thread Jon TURNEY

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.ukforum_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/



Xinerama

2008-11-22 Thread Yaakov (Cygwin Ports)
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA256

Jon,

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.

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.

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.

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

Perhaps there is a better syntax, but the point would be to set the
geometry offset correctly so that the upper left corner of screen 1
would be 640,0.  (Hopefully the input on screen 1 would work correctly
then as well.)

Does this make any sense?


Yaakov
Cygwin/X


[1] http://gentoo-portage.com/x11-libs/libXinerama/RDep#ptabs
[2] http://tldp.org/HOWTO/Xinerama-HOWTO/editxf86config.html
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (Cygwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEAREIAAYFAkkpAE4ACgkQpiWmPGlmQSNHLgCgka7kXBhmyI9FlQp1rnKdgV9k
hPMAn3KQFA9HjV3a0TGvCoyb23uGxLwU
=ZOjk
-END PGP SIGNATURE-

--
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/