Re: screen/display switching



> On Thu, Mar 13, 2003 at 09:18:41PM -0500, James Willcox wrote:
> > In gtk+ 2.2, multi-head support was added, giving developers the ability
> > to move windows to different screens or displays on-the-fly.  I think it
> > would be great if we could push this ability up to users.  For me, the
> > most common use for this would be to move windows between screens since
> > I use a multi-head setup w/o xinerama.  Currently, there is no way to do
> > this (unless the app has something specifically built-in to allow it).

FWIW, we've been experimenting with something along these lines within
the GPE project.  I've attached a description of the current protocol we
use.  There is some example code in our CVS tree if you want to play
with it; see links from gpe.handhelds.org for details on accessing that
stuff.  gpe/base/teleport is the client program that initiates display
changes, and gpe/base/libdm is the library that applications link with
when they want to be migration-aware.

p.

A window capable of migration sets a property _GPE_DISPLAY_CHANGE on
itself.  Its type is STRING and it is initially set to zero length.

Changing this property to a non-empty value signals a request for the
application to migrate.  The property has the format "TARGET-DISPLAY
AUTH-TYPE AUTH-DATA", where TARGET-DISPLAY is the desired destination
in "host:display.screen" notation; AUTH-TYPE is the authentication
method in use (see below); and AUTH-DATA is the appropriate
authentication information.

Following successful migration, the migrated window should reset its
_GPE_DISPLAY_CHANGE property to zero length, indicating that it is
safe to request further migrations.

The outcome of the migration attempt is signalled by sending a
ClientMessage of type _GPE_DISPLAY_CHANGE to the original display's
root window with event mask SubstructureNotify and payload as follows:

l[0]	window handle for which status is being reported
l[1]	status code, one of:

0	success
1	unable to connect to display
2	requested screen does not exist
3	invalid authentication
4	indeterminate failure

Only one authentication scheme, RSA-SIG, is currently defined.

In this scheme, the requestor reads a challenge string from the
_GPE_DISPLAY_CHANGE_RSA_CHALLENGE property on the window to be
migrated and computes the PKCS-1 signature of the target display name,
followed by a NUL delimeter, followed by the challenge string.  The
authentication data string consists of the key ID used for signature,
followed by a space, followed by the signature text.

--

Should all windows owned by one application be migrated together?  If
so, does this need specific protocol support, or should the requesting
application simply deal with each one individually?


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]