Re: Review: FULLSCREEN_MONITORS Hint



Attachment: wm-spec-1.4.xml.diff
Description: Binary data

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>




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