Re: Review: FULLSCREEN_MONITORS Hint
Grant Patterson <[email protected]>
| Newsgroups | gmane.comp.gnome.wm-spec |
|---|---|
| Message-ID | <[email protected]> |
Here's an updated patch; I tried taking most suggestions into
account. Kept it as a message/property for now, though that could
change.
On Nov 25, 2007, at 10:57 a, Havoc Pennington wrote:
> Another thing to address, I believe the Xinerama config can now
> change dynamically... what happens then? (I'm not sure, to be
> honest, what the plans are in this area from X.org)
I'd say the best thing to do would be to clear the property,
reverting to "traditional" fullscreen. The client window would be
expected to give a new request when it learns about the Xinerama
change. Preserving the property in any way would just make things wacky.
On the other hand, if this hint wound up being in terms of a root
window geometry, more burden would be on the client to listen to
Xinerama changes and respond accordingly.
On Nov 26, 2007, at 8:27 a, Lubos Lunak wrote:
> On Thursday 22 of November 2007, Grant Patterson wrote:
>> A kwin developer has also expressed willingness to
>> help.
>
> Do I know him :) ?
I don't recall exactly, but when David told me this he might've been
referring to you :-)
Anyway, having done several implementations already, each additional
isn't much extra work.
>> A read-only list of monitor indeces indicating which monitors the
>> window
>> should stretch over when fullscreened. The window must cover the
>> union of
>
> "The window should" - this is a request to the WM and there's no
> guarantee it
> will honour it.
But here we're talking about the read-only property, which must be in
sync with the window's actual geometry--not the client request.
<sect2>
<title>_NET_WM_FULLSCREEN_MONITORS</title>
<programlisting><![CDATA[
_NET_WM_FULLSCREEN_MONITORS, CARDINAL[]/32
]]></programlisting>
<para>
A read-only list of monitor indices indicating which monitors the
window will
stretch over when fullscreened. The indices are from the set returned
by the Xinerama extension. The window must cover the union of all
monitors indicated in
the list.
</para>
<para>
An empty list indicates that the Window Manager will obey normal
fullscreen
conventions, as if the property did not exist; that is, the window
will be
stretched over the monitor it was in when it entered fullscreen.
</para>
<para>
Windows transient for the window with _NET_WM_FULLSCREEN_MONITORS
set, such as
those with type _NEW_WM_WINDOW_TYPE_DIALOG, are generally expected to be
positioned (e.g. centered) with respect to only one of the monitors.
This
might be the monitor containing the mouse pointer, the monitor
containing the
non-full-screen window, or simply the first indicated in the list if
neither
of those apply.
</para>
<para>
A Client wishing to change this list MUST send a
_NET_WM_FULLSCREEN_MONITORS
client message to the root window. The Window Manager MUST
keep this list updated to reflect the current state of the window.
</para>
<programlisting><![CDATA[
window = the respective client window
message_type = _NET_WM_FULLSCREEN_MONITORS
format = 8
data.b[0] = number of monitors (n) in the list
data.b[1] = index of first monitor in the list
data.b[2] = index of second monitor in the list
...
data.b[n+1] = source indication
other data.b[] elements = 0
]]></programlisting>
<para>
See <xref linkend="sourceindication"/> for details on the source
indication.
</para>
<para>
Virtual machine software may use this hint to have a virtual
operating system
instance that sees multiple monitors. The application window
stretches over
several monitors, giving the appearance that these monitors have been
taken
over by the guest virtual machine.
</para>
<para>
This hint might also be used by a movie or presentation application
allowing
users to display the media spanned over several monitors.
</para>
<para>
In both cases, the application would have some user interface
allowing users
to configure which monitors the application fullscreens to. The
window manager
need not provide such an interface, though it could.
</para>
</sect2>
_______________________________________________
wm-spec-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/wm-spec-list
wm-spec-1.4.xml.diff
(application/octet-stream, 2.7 KB)
--- wm-spec-old.xml 2007-10-19 13:52:44.773627000 -0700 +++ wm-spec-1.4.xml 2007-11-27 15:34:52.691662000 -0800 @@ -1629,6 +1629,64 @@ window. </para> </sect2> + <sect2> + <title>_NET_WM_FULLSCREEN_MONITORS</title> + <programlisting><![CDATA[ +_NET_WM_FULLSCREEN_MONITORS, CARDINAL[]/32 +]]></programlisting> + <para> +A read-only list of monitor indices indicating which monitors the window will +stretch over when fullscreened. The indices are from the set returned by the Xinerama extension. The window must cover the union of all monitors indicated in +the list. + </para> + <para> +An empty list indicates that the Window Manager will obey normal fullscreen +conventions, as if the property did not exist; that is, the window will be +stretched over the monitor it was in when it entered fullscreen. + </para> + <para> +Windows transient for the window with _NET_WM_FULLSCREEN_MONITORS set, such as +those with type _NEW_WM_WINDOW_TYPE_DIALOG, are generally expected to be +positioned (e.g. centered) with respect to only one of the monitors. This +might be the monitor containing the mouse pointer, the monitor containing the +non-full-screen window, or simply the first indicated in the list if neither +of those apply. + </para> + <para> +A Client wishing to change this list MUST send a _NET_WM_FULLSCREEN_MONITORS +client message to the root window. The Window Manager MUST +keep this list updated to reflect the current state of the window. + </para> +<programlisting><![CDATA[ + window = the respective client window + message_type = _NET_WM_FULLSCREEN_MONITORS + format = 8 + data.b[0] = number of monitors (n) in the list + data.b[1] = index of first monitor in the list + data.b[2] = index of second monitor in the list + ... + data.b[n+1] = source indication + other data.b[] elements = 0 +]]></programlisting> + <para> +See <xref linkend="sourceindication"/> for details on the source indication. + </para> + <para> +Virtual machine software may use this hint to have a virtual operating system +instance that sees multiple monitors. The application window stretches over +several monitors, giving the appearance that these monitors have been taken +over by the guest virtual machine. + </para> + <para> +This hint might also be used by a movie or presentation application allowing +users to display the media spanned over several monitors. + </para> + <para> +In both cases, the application would have some user interface allowing users +to configure which monitors the application fullscreens to. The window manager +need not provide such an interface, though it could. + </para> + </sect2> </sect1>