Hi,

I tried to incorporate the feedback and attached is a new version. My aim is
to keep this extension simple, so that window managers are going to implement
it. There is no use if that gets that complex, that nobody implements it ;-)

Changes:
* Added that in case a menu button is clicked also better suited values should
be used, but not the complete rect added [1]
* Renamed _NET_WM_PERFORM_BUTTON_ACTION to _NET_WM_TITLEBAR_ACTION
* Made it more clear that _NET_WM_TITLEBAR_ACTION is about the title bar and
not about buttons
* Made it more clear that it's up to the WM on how to react on the client
message including ignoring and that it's not the client's business what
happens
* Added special button value 0 to indicate a double click.

Cheers
Martin

[1] If this is really needed I suggest to add another property which provides
the coordinates of the menu button to not carry it in the client message.

On Monday 30 June 2014 16:13:10 Martin Gräßlin wrote:
> Hi all,
>
> 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.
>
> The need for these two client messages were derived by GTK+ and KWin
> developers for better integrating GTK's new client-side-decorated windows in
> environments which are not GNOME Shell.
>
> KWin will add support for those two new hints and it looks like GTK+ and
> Mutter will also support them.
>
> I would like to hear your feedback on them for inclusion into the NETWM
> spec.
>
> Best Regards
> Martin Gräßlin
From f7f3007c7d7e0418d714cd0608bfa2638550f86d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Martin Gräßlin?= <mgraess...@kde.org>
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 | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/wm-spec/wm-spec.xml b/wm-spec/wm-spec.xml
index 0859dc6..8ee5315 100644
--- a/wm-spec/wm-spec.xml
+++ b/wm-spec/wm-spec.xml
@@ -1789,6 +1789,37 @@ 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. Also in case the click occurred in a
+widget (e.g. a menu button) the coordinates should be set to useful values so that
+the window manager can position the menu in an adjacent way. However it is up to
+the window manager on how to position the menu.
+        </para>
+    </sect2>
 </sect1>

 <sect1>
@@ -2305,6 +2336,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

From 02ecba2212baf99a00cd35be9025ec359bf5e777 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Martin Gräßlin?= <mgraess...@kde.org>
Date: Mon, 30 Jun 2014 15:47:11 +0200
Subject: [PATCH 2/2] _NET_WM_TITLEBAR_ACTION

Adding a new client message _NET_WM_TITLEBAR_ACTION which can
be used by Clients to request the window manager to perform an action
when a button is pressed on the title bar 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 | 41 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)

diff --git a/wm-spec/wm-spec.xml b/wm-spec/wm-spec.xml
index 8ee5315..1b683ea 100644
--- a/wm-spec/wm-spec.xml
+++ b/wm-spec/wm-spec.xml
@@ -1820,6 +1820,44 @@ the window manager can position the menu in an adjacent way. However it is up to
 the window manager on how to position the menu.
         </para>
     </sect2>
+    <sect2>
+        <title>_NET_WM_TITLEBAR_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. A Client drawing it's own window decoration instead of
+relying on the window manager provided decoration should use this client message
+whenever the user clicked on the title bar area. However, the handling of left
+mouse button to trigger move/resize mode must not be passed to the window manager
+as the window manager cannot know in which areas a move or resize should be started.
+Also widget areas like a close or maximize button must not be passed to the window
+manager with this client message. Instead the appropriate action as described in this
+specification should be used.
+        </para>
+        <para>
+It is up to the window manager to decide which action to perform when receiving this
+client message. An appropriate action is also to ignore the request.
+        </para>
+        <para>
+A Client can request that the window manger should perform the appropriate action by
+sending a _NET_WM_TITLEBAR_ACTION client message to the root window:
+        </para>
+        <programlisting><![CDATA[
+_NET_WM_TITLEBAR_ACTION
+  message_type = _NET_WM_TITLEBAR_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>
+Button takes the special value of 0 which indicates a double click on the title bar area.
+        </para>
+    </sect2>
 </sect1>

 <sect1>
@@ -2336,6 +2374,9 @@ OR OTHER DEALINGS IN THE SOFTWARE.
 		<title>Changes since 1.4draft</title>
 		<itemizedlist>
 			<listitem><para>
+Added _NET_WM_TITLEBAR_ACTION
+			</para></listitem>
+			<listitem><para>
 Added _NET_WM_SHOW_WINDOW_MENU
 			</para></listitem>
 			<listitem><para>
--
2.0.0

Attachment: signature.asc
Description: This is a digitally signed message part.

_______________________________________________
wm-spec-list mailing list
wm-spec-list@gnome.org
https://mail.gnome.org/mailman/listinfo/wm-spec-list

Reply via email to