Re: Re: Client messages _NET_WM_SHOW_WINDOW_MENU and _NET_WM_PERFORM_BUTTON_ACTION

Martin Gräßlin <[email protected]> Tue, 01 Jul 2014 10:40:04 +0200
Newsgroups gmane.comp.gnome.wm-spec
Message-ID <3229931.Q8yAvut873@martin-desktop>
--===============0379867611535474855==
Content-Type: multipart/signed; boundary="nextPart6540461.SYFtLdUCEL"; micalg="pgp-sha1"; protocol="application/pgp-signature"


--nextPart6540461.SYFtLdUCEL
Content-Type: multipart/mixed; boundary="nextPart11242912.Gfjn7CltiW"
Content-Transfer-Encoding: quoted-printable

This is a multi-part message in MIME format.

=2D-nextPart11242912.Gfjn7CltiW
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="utf-8"

thanks for the feedback. Addressed both and new patches attached.

Cheers
Martin

On Monday 30 June 2014 11:38:37 Jasper St. Pierre wrote:
> For _NET_WM_PERFORM_BUTTON_ACTION, should these be used for left-clic=
king
> to start moving and resizing? We would have to specify the different =
corner
> regions, so no, I don't think so. You should probably mention that th=
is is
> for clicking on the titlebar only (maybe even change the name to
> PERFORM_TITLEBAR_ACTION perhaps?).
>=20
> _NET_WM_WINDOW_MENU looks fine to me, but maybe add a timestamp field=
 for
> good measure? You can never go wrong with an extra timestamp field.
>=20
> On Mon, Jun 30, 2014 at 10:13 AM, Martin Gr=C3=A4=C3=9Flin <mgraessli=
[email protected]> wrote:
> > Hi all,
> >=20
> > attached are two patches for the NETWM spec. One message is to show=
 the
> > window
> > manager's window menu, the other is for passing the responsibility =
to
> > perform
> > a button action from the client to the window manager. For detailed=

> > information please have a look on the attached patches.
> >=20
> > The need for these two client messages were derived by GTK+ and KWi=
n
> > developers for better integrating GTK's new client-side-decorated w=
indows
> > in
> > environments which are not GNOME Shell.
> >=20
> > KWin will add support for those two new hints and it looks like GTK=
+ and
> > Mutter will also support them.
> >=20
> > I would like to hear your feedback on them for inclusion into the N=
ETWM
> > spec.
> >=20
> > Best Regards
> > Martin Gr=C3=A4=C3=9Flin
> > _______________________________________________
> > wm-spec-list mailing list
> > [email protected]
> > https://mail.gnome.org/mailman/listinfo/wm-spec-list
>=20
> --
>   Jasper

=2D-nextPart11242912.Gfjn7CltiW
Content-Disposition: attachment; filename="0001-_NET_WM_SHOW_WINDOW_MENU.patch"
Content-Transfer-Encoding: 7Bit
Content-Type: text/x-patch; charset="ISO-8859-1"; name="0001-_NET_WM_SHOW_WINDOW_MENU.patch"

From=205c597b4b270d6322f76f3b2e7485d8032d86fcc4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= <[email protected]>
Date: Mon, 30 Jun 2014 15:34:57 +0200
Subject: [PATCH 1/2] _NET_WM_SHOW_WINDOW_MENU

Adding a new client message _NET_WM_SHOW_WINDOW_MENU which can be used
by Clients to show the window manager's window menu. The rational is
to integrate Clients using client-side-decorations better into the
environment they are running in.
=2D--
 wm-spec/wm-spec.xml | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/wm-spec/wm-spec.xml b/wm-spec/wm-spec.xml
index 0859dc6..9217aa3 100644
=2D-- a/wm-spec/wm-spec.xml
+++ b/wm-spec/wm-spec.xml
@@ -1789,6 +1789,34 @@ default positions.
 Note: The property is not used anywhere else besides being listed in _NET_SUPPORTED.
                 </para>
         </sect2>
+    <sect2>
+        <title>_NET_WM_SHOW_WINDOW_MENU</title>
+        <para>
+By including this hint in _NET_SUPPORTED the Window Manager announces
+that it supports showing a menu offering window management options for a
+given client.
+        </para>
+        <para>
+A Client can request this menu by sending a _NET_WM_SHOW_WINDOW_MENU client message
+to the root window:
+        </para>
+        <programlisting><![CDATA[
+_NET_WM_SHOW_WINDOW_MENU
+  message_type = _NET_WM_SHOW_WINDOW_MENU
+  window = window for which the menu should be shown
+  format = 32
+  data.l[0] = xinput2_device_id
+  data.l[1] = root_x
+  data.l[2] = root_y
+  data.l[3] = timestamp
+  other data.l[] elements = 0
+]]></programlisting>
+        <para>
+If the Xinput2 device which triggered the event does not provide coordinates (e.g.
+triggered by a keyboard shortcut) the Client should set it to useful values the
+window manager can use to position the menu.
+        </para>
+    </sect2>
 </sect1>
 
 <sect1>
@@ -2305,6 +2333,9 @@ OR OTHER DEALINGS IN THE SOFTWARE.
 		<title>Changes since 1.4draft</title>
 		<itemizedlist>
 			<listitem><para>
+Added _NET_WM_SHOW_WINDOW_MENU
+			</para></listitem>
+			<listitem><para>
 Added _NET_WM_BYPASS_COMPOSITOR
 			</para></listitem>
 			<listitem><para>
=2D- 
2.0.0


=2D-nextPart11242912.Gfjn7CltiW
Content-Disposition: attachment; filename="0002-_NET_WM_PERFORM_BUTTON_ACTION.patch"
Content-Transfer-Encoding: 7Bit
Content-Type: text/x-patch; charset="ISO-8859-1"; name="0002-_NET_WM_PERFORM_BUTTON_ACTION.patch"

From=2026961112bf02ed9f0983bb863fdf8a9ebbe33c09 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= <[email protected]>
Date: Mon, 30 Jun 2014 15:47:11 +0200
Subject: [PATCH 2/2] _NET_WM_PERFORM_BUTTON_ACTION

Adding a new client message _NET_WM_PERFORM_BUTTON_ACTION which can
be used by Clients to request the window manager to perform an action
when a button is pressed on the window decoration area of a window.
The rational is to integrate Clients using client-side-decorations
better into the environment they are running in. So instead of
performing an action like raise/lower on middle click the task is
delegated to the window manager. The window manager can then perform
the same action as it does for windows it decorates.
=2D--
 wm-spec/wm-spec.xml | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/wm-spec/wm-spec.xml b/wm-spec/wm-spec.xml
index 9217aa3..f6dcd9c 100644
=2D-- a/wm-spec/wm-spec.xml
+++ b/wm-spec/wm-spec.xml
@@ -1817,6 +1817,37 @@ triggered by a keyboard shortcut) the Client should set it to useful values the
 window manager can use to position the menu.
         </para>
     </sect2>
+    <sect2>
+        <title>_NET_WM_PERFORM_BUTTON_ACTION</title>
+        <para>
+By including this hint in _NET_SUPPORTED the Window Manager announces
+that it supports performing pointer button specific events. For example a window
+manager might raise or lower a Client when the decoration is middle clicked or show
+a window menu on right click. However, the handling of left mouse button to trigger
+move/resize mode should not be passed to the window manager as the window manager
+cannot know in which areas a move or resize should be started.
+        </para>
+        <para>
+A Client can request that the window manger should perform such an action by sending
+a _NET_WM_PERFORM_BUTTON_ACTION client message to the root window:
+        </para>
+        <programlisting><![CDATA[
+_NET_WM_PERFORM_BUTTON_ACTION
+  message_type = _NET_WM_PERFORM_BUTTON_ACTION
+  window = window for which the action should be performed
+  format = 32
+  data.l[0] = xinput2_device_id
+  data.l[1] = root_x
+  data.l[2] = root_y
+  data.l[3] = button
+  data.l[4] = timestamp
+]]></programlisting>
+        <para>
+If the Xinput2 device which triggered the event does not provide coordinates (e.g.
+triggered by a keyboard shortcut) the Client should set it to useful values the
+window manager can use to position the menu.
+        </para>
+    </sect2>
 </sect1>
 
 <sect1>
@@ -2333,6 +2364,9 @@ OR OTHER DEALINGS IN THE SOFTWARE.
 		<title>Changes since 1.4draft</title>
 		<itemizedlist>
 			<listitem><para>
+Added _NET_WM_PERFORM_BUTTON_ACTION
+			</para></listitem>
+			<listitem><para>
 Added _NET_WM_SHOW_WINDOW_MENU
 			</para></listitem>
 			<listitem><para>
=2D- 
2.0.0


=2D-nextPart11242912.Gfjn7CltiW--
This is a multi-part message in MIME format.

--nextPart11242912.Gfjn7CltiW
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="utf-8"

thanks for the feedback. Addressed both and new patches attached.

Cheers
Martin

On Monday 30 June 2014 11:38:37 Jasper St. Pierre wrote:
> For _NET_WM_PERFORM_BUTTON_ACTION, should these be used for left-clic=
king
> to start moving and resizing? We would have to specify the different =
corner
> regions, so no, I don't think so. You should probably mention that th=
is is
> for clicking on the titlebar only (maybe even change the name to
> PERFORM_TITLEBAR_ACTION perhaps?).
>=20
> _NET_WM_WINDOW_MENU looks fine to me, but maybe add a timestamp field=
 for
> good measure? You can never go wrong with an extra timestamp field.
>=20
> On Mon, Jun 30, 2014 at 10:13 AM, Martin Gr=C3=A4=C3=9Flin <mgraessli=
[email protected]> wrote:
> > Hi all,
> >=20
> > attached are two patches for the NETWM spec. One message is to show=
 the
> > window
> > manager's window menu, the other is for passing the responsibility =
to
> > perform
> > a button action from the client to the window manager. For detailed=

> > information please have a look on the attached patches.
> >=20
> > The need for these two client messages were derived by GTK+ and KWi=
n
> > developers for better integrating GTK's new client-side-decorated w=
indows
> > in
> > environments which are not GNOME Shell.
> >=20
> > KWin will add support for those two new hints and it looks like GTK=
+ and
> > Mutter will also support them.
> >=20
> > I would like to hear your feedback on them for inclusion into the N=
ETWM
> > spec.
> >=20
> > Best Regards
> > Martin Gr=C3=A4=C3=9Flin
> > _______________________________________________
> > wm-spec-list mailing list
> > [email protected]
> > https://mail.gnome.org/mailman/listinfo/wm-spec-list
>=20
> --
>   Jasper

--nextPart11242912.Gfjn7CltiW
Content-Disposition: attachment; filename="0001-_NET_WM_SHOW_WINDOW_MENU.patch"
Content-Transfer-Encoding: 7Bit
Content-Type: text/x-patch; charset="ISO-8859-1"; name="0001-_NET_WM_SHOW_WINDOW_MENU.patch"

From 5c597b4b270d6322f76f3b2e7485d8032d86fcc4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= <[email protected]>
Date: Mon, 30 Jun 2014 15:34:57 +0200
Subject: [PATCH 1/2] _NET_WM_SHOW_WINDOW_MENU

Adding a new client message _NET_WM_SHOW_WINDOW_MENU which can be used
by Clients to show the window manager's window menu. The rational is
to integrate Clients using client-side-decorations better into the
environment they are running in.
---
 wm-spec/wm-spec.xml | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/wm-spec/wm-spec.xml b/wm-spec/wm-spec.xml
index 0859dc6..9217aa3 100644
--- a/wm-spec/wm-spec.xml
+++ b/wm-spec/wm-spec.xml
@@ -1789,6 +1789,34 @@ default positions.
 Note: The property is not used anywhere else besides being listed in _NET_SUPPORTED.
                 </para>
         </sect2>
+    <sect2>
+        <title>_NET_WM_SHOW_WINDOW_MENU</title>
+        <para>
+By including this hint in _NET_SUPPORTED the Window Manager announces
+that it supports showing a menu offering window management options for a
+given client.
+        </para>
+        <para>
+A Client can request this menu by sending a _NET_WM_SHOW_WINDOW_MENU client message
+to the root window:
+        </para>
+        <programlisting><![CDATA[
+_NET_WM_SHOW_WINDOW_MENU
+  message_type = _NET_WM_SHOW_WINDOW_MENU
+  window = window for which the menu should be shown
+  format = 32
+  data.l[0] = xinput2_device_id
+  data.l[1] = root_x
+  data.l[2] = root_y
+  data.l[3] = timestamp
+  other data.l[] elements = 0
+]]></programlisting>
+        <para>
+If the Xinput2 device which triggered the event does not provide coordinates (e.g.
+triggered by a keyboard shortcut) the Client should set it to useful values the
+window manager can use to position the menu.
+        </para>
+    </sect2>
 </sect1>
 
 <sect1>
@@ -2305,6 +2333,9 @@ OR OTHER DEALINGS IN THE SOFTWARE.
 		<title>Changes since 1.4draft</title>
 		<itemizedlist>
 			<listitem><para>
+Added _NET_WM_SHOW_WINDOW_MENU
+			</para></listitem>
+			<listitem><para>
 Added _NET_WM_BYPASS_COMPOSITOR
 			</para></listitem>
 			<listitem><para>
-- 
2.0.0


--nextPart11242912.Gfjn7CltiW
Content-Disposition: attachment; filename="0002-_NET_WM_PERFORM_BUTTON_ACTION.patch"
Content-Transfer-Encoding: 7Bit
Content-Type: text/x-patch; charset="ISO-8859-1"; name="0002-_NET_WM_PERFORM_BUTTON_ACTION.patch"

From 26961112bf02ed9f0983bb863fdf8a9ebbe33c09 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= <[email protected]>
Date: Mon, 30 Jun 2014 15:47:11 +0200
Subject: [PATCH 2/2] _NET_WM_PERFORM_BUTTON_ACTION

Adding a new client message _NET_WM_PERFORM_BUTTON_ACTION which can
be used by Clients to request the window manager to perform an action
when a button is pressed on the window decoration area of a window.
The rational is to integrate Clients using client-side-decorations
better into the environment they are running in. So instead of
performing an action like raise/lower on middle click the task is
delegated to the window manager. The window manager can then perform
the same action as it does for windows it decorates.
---
 wm-spec/wm-spec.xml | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/wm-spec/wm-spec.xml b/wm-spec/wm-spec.xml
index 9217aa3..f6dcd9c 100644
--- a/wm-spec/wm-spec.xml
+++ b/wm-spec/wm-spec.xml
@@ -1817,6 +1817,37 @@ triggered by a keyboard shortcut) the Client should set it to useful values the
 window manager can use to position the menu.
         </para>
     </sect2>
+    <sect2>
+        <title>_NET_WM_PERFORM_BUTTON_ACTION</title>
+        <para>
+By including this hint in _NET_SUPPORTED the Window Manager announces
+that it supports performing pointer button specific events. For example a window
+manager might raise or lower a Client when the decoration is middle clicked or show
+a window menu on right click. However, the handling of left mouse button to trigger
+move/resize mode should not be passed to the window manager as the window manager
+cannot know in which areas a move or resize should be started.
+        </para>
+        <para>
+A Client can request that the window manger should perform such an action by sending
+a _NET_WM_PERFORM_BUTTON_ACTION client message to the root window:
+        </para>
+        <programlisting><![CDATA[
+_NET_WM_PERFORM_BUTTON_ACTION
+  message_type = _NET_WM_PERFORM_BUTTON_ACTION
+  window = window for which the action should be performed
+  format = 32
+  data.l[0] = xinput2_device_id
+  data.l[1] = root_x
+  data.l[2] = root_y
+  data.l[3] = button
+  data.l[4] = timestamp
+]]></programlisting>
+        <para>
+If the Xinput2 device which triggered the event does not provide coordinates (e.g.
+triggered by a keyboard shortcut) the Client should set it to useful values the
+window manager can use to position the menu.
+        </para>
+    </sect2>
 </sect1>
 
 <sect1>
@@ -2333,6 +2364,9 @@ OR OTHER DEALINGS IN THE SOFTWARE.
 		<title>Changes since 1.4draft</title>
 		<itemizedlist>
 			<listitem><para>
+Added _NET_WM_PERFORM_BUTTON_ACTION
+			</para></listitem>
+			<listitem><para>
 Added _NET_WM_SHOW_WINDOW_MENU
 			</para></listitem>
 			<listitem><para>
-- 
2.0.0


--nextPart11242912.Gfjn7CltiW--

--nextPart6540461.SYFtLdUCEL
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: This is a digitally signed message part.
Content-Transfer-Encoding: 7Bit

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iEYEABECAAYFAlOyc+QACgkQqVXwidMiVrp7SgCeNjfQavVSHsHwddeCYdRuabLl
Vl0AniWG3uyr3zA58um4U9M3pQOcbqW2
=qHym
-----END PGP SIGNATURE-----

--nextPart6540461.SYFtLdUCEL--


--===============0379867611535474855==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
wm-spec-list mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/wm-spec-list

--===============0379867611535474855==--