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>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.