<?
xml version=
"1.0" encoding=
"UTF-8"?>
<protocol name=
"server_decoration">
<copyright><![
CDATA[
Copyright (C)
2015 Martin Gräßlin
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General
Public License as published by
the Free Software Foundation, either
version 2.
1 of the License, or
(at your option) any later
version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General
Public License for more details.
You should have received a copy of the GNU Lesser General
Public License
along with this program. If not, see <
http://www.gnu.org/licenses/>.
]]></copyright>
<interface name=
"org_kde_kwin_server_decoration_manager" version=
"1">
<description summary=
"Server side window decoration manager">
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.
</description>
<request name=
"create">
<description summary=
"Create a server-side decoration object for a given surface">
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.
</description>
<arg name=
"id" type=
"new_id" interface=
"org_kde_kwin_server_decoration"/>
<arg name=
"surface" type=
"object" interface=
"wl_surface"/>
</request>
<enum name=
"mode">
<description summary=
"Possible values to use in request_mode and the event mode."/>
<entry name=
"None" value=
"0" summary=
"Undecorated: The surface is not decorated at all, neither server nor client-side. An example is a popup surface which should not be decorated."/>
<entry name=
"Client" value=
"1" summary=
"Client-side decoration: The decoration is part of the surface and the client."/>
<entry name=
"Server" value=
"2" summary=
"Server-side decoration: The server embeds the surface into a decoration frame."/>
</enum>
<event name=
"default_mode">
<description summary=
"The default mode used on the server">
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.
</description>
<arg name=
"mode" type=
"uint" summary=
"The default decoration mode applied to newly created server decorations."/>
</event>
</interface>
<interface name=
"org_kde_kwin_server_decoration" version=
"1">
<request name=
"release" type=
"destructor">
<description summary=
"release the server decoration object"/>
</request>
<enum name=
"mode">
<description summary=
"Possible values to use in request_mode and the event mode."/>
<entry name=
"None" value=
"0" summary=
"Undecorated: The surface is not decorated at all, neither server nor client-side. An example is a popup surface which should not be decorated."/>
<entry name=
"Client" value=
"1" summary=
"Client-side decoration: The decoration is part of the surface and the client."/>
<entry name=
"Server" value=
"2" summary=
"Server-side decoration: The server embeds the surface into a decoration frame."/>
</enum>
<request name=
"request_mode">
<description summary=
"The decoration mode the surface wants to use."/>
<arg name=
"mode" type=
"uint" summary=
"The mode this surface wants to use."/>
</request>
<event name=
"mode">
<description summary=
"The new decoration mode applied by the server">
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.
</description>
<arg name=
"mode" type=
"uint" summary=
"The decoration mode applied to the surface by the server."/>
</event>
</interface>
</protocol>