[PATCH wayland-protocols] xdg-shell: Introduce xdg_toplevel capabilities

Jonas Ådahl jadahl at gmail.com
Fri Jul 15 11:00:22 UTC 2016

The xdg_toplevel capabilities are meant to let the compositor know what
configurations a client can be configured to. This is meant to make it
possible to disallow a compositor to maximize, fullscreen etc a
surface, which would otherwise mandate the client to configure the
surface according to dimension in the xdg_toplevel.configure event.

This makes it possible to create non-resizable surfaces as well as
surfaces with only a certain aspect ratio allowed, by making them
un-fullscreen:able and un-maximize:able.

Signed-off-by: Jonas Ådahl <jadahl at gmail.com>

This is an alternative solution to the s/must/should/ patch.

I made a separate enum, because certain state enum entries make no sense to
support or not, since they don't mandate anything (resize, activated so far).


 unstable/xdg-shell/xdg-shell-unstable-v6.xml | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/unstable/xdg-shell/xdg-shell-unstable-v6.xml b/unstable/xdg-shell/xdg-shell-unstable-v6.xml
index 563e39b..73944a8 100644
--- a/unstable/xdg-shell/xdg-shell-unstable-v6.xml
+++ b/unstable/xdg-shell/xdg-shell-unstable-v6.xml
@@ -734,6 +734,29 @@
+    <enum name="capabilities">
+      <description summary="toplevel capabilities">
+	Certain xdg_toplevel states mandate certain client capabilities. For
+	example while a fullscreen:ed client is required to configure itself
+	according to the dimension in the configure event, some clients may not
+	have this ability due to various reasons.
+      </description>
+      <entry name="maximize" value="1"
+	     summary="the toplevel can be maximized"/>
+      <entry name="fullscreen" value="2"
+	     summary="the toplevel can be fullscreened"/>
+    </enum>
+    <entry name="set_capabilities">
+      <description summary="set capabilities">
+	Notify the compositor about what capabilities this xdg_toplevel
+	supports. This request can only be issued once and if so must be done
+	before the initial state is comitted. The default capabilities are no
+	capabilities.
+      </description>
+      <arg name="caps" type="array" summary="array of toplevel capabilities"/>
+    </entry>
     <request name="set_max_size">
       <description summary="set the maximum size">
 	Set a maximum size for the window.

More information about the wayland-devel mailing list