From a5c07dde6aba87584ddb6c6a2769472a6003623a Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Fri, 28 Apr 2017 20:32:05 -0400 Subject: Implement KDE's server-side decoration protocol --- protocols/CMakeLists.txt | 6 +++ protocols/server-decoration.xml | 94 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 100 insertions(+) create mode 100644 protocols/server-decoration.xml (limited to 'protocols') diff --git a/protocols/CMakeLists.txt b/protocols/CMakeLists.txt index a9b459ab..8d8e58ad 100644 --- a/protocols/CMakeLists.txt +++ b/protocols/CMakeLists.txt @@ -27,6 +27,11 @@ WAYLAND_ADD_PROTOCOL_SERVER(proto-server-gamma-control gamma-control ) +WAYLAND_ADD_PROTOCOL_SERVER(proto-server-server-decoration + server-decoration.xml + server-decoration +) + add_library(sway-protocols STATIC ${proto-client-xdg-shell} ${proto-client-desktop-shell} @@ -34,6 +39,7 @@ add_library(sway-protocols STATIC ${proto-client-swaylock} ${proto-server-swaylock} ${proto-server-gamma-control} + ${proto-server-server-decoration} ) set(PROTOCOLS_INCLUDE_DIRS ${CMAKE_BINARY_DIR}/protocols PARENT_SCOPE) diff --git a/protocols/server-decoration.xml b/protocols/server-decoration.xml new file mode 100644 index 00000000..8bc106c7 --- /dev/null +++ b/protocols/server-decoration.xml @@ -0,0 +1,94 @@ + + + . + ]]> + + + This interface allows to coordinate whether the server should create + a server-side window decoration around a wl_surface representing a + shell surface (wl_shell_surface or similar). By announcing support + for this interface the server indicates that it supports server + side decorations. + + + + When a client creates a server-side decoration object it indicates + that it supports the protocol. The client is supposed to tell the + server whether it wants server-side decorations or will provide + client-side decorations. + + If the client does not create a server-side decoration object for + a surface the server interprets this as lack of support for this + protocol and considers it as client-side decorated. Nevertheless a + client-side decorated surface should use this protocol to indicate + to the server that it does not want a server-side deco. + + + + + + + + + + + + + This event is emitted directly after binding the interface. It contains + the default mode for the decoration. When a new server decoration object + is created this new object will be in the default mode until the first + request_mode is requested. + + The server may change the default mode at any time. + + + + + + + + + + + + + + + + + + + + + This event is emitted directly after the decoration is created and + represents the base decoration policy by the server. E.g. a server + which wants all surfaces to be client-side decorated will send Client, + a server which wants server-side decoration will send Server. + + The client can request a different mode through the decoration request. + The server will acknowledge this by another event with the same mode. So + even if a server prefers server-side decoration it's possible to force a + client-side decoration. + + The server may emit this event at any time. In this case the client can + again request a different mode. It's the responsibility of the server to + prevent a feedback loop. + + + + + -- cgit v1.2.3