<?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>
