<?xml version="1.0" encoding="UTF-8"?>
<protocol name="aura_shell">

  <copyright>
    Copyright 2017 The Chromium Authors.

    Permission is hereby granted, free of charge, to any person obtaining a
    copy of this software and associated documentation files (the "Software"),
    to deal in the Software without restriction, including without limitation
    the rights to use, copy, modify, merge, publish, distribute, sublicense,
    and/or sell copies of the Software, and to permit persons to whom the
    Software is furnished to do so, subject to the following conditions:

    The above copyright notice and this permission notice (including the next
    paragraph) shall be included in all copies or substantial portions of the
    Software.

    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
    THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
    FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
    DEALINGS IN THE SOFTWARE.
  </copyright>

  <interface name="zaura_shell" version="40">
    <description summary="aura_shell">
      The global interface exposing aura shell capabilities is used to
      instantiate an interface extension for a wl_surface object.
      This extended interface will then allow the client to use aura shell
      specific functionality.
    </description>

    <enum name="error">
      <entry name="aura_surface_exists" value="0"
	     summary="the surface already has an aura surface object associated"/>
      <entry name="aura_output_exists" value="1"
	     summary="the output already has an aura output object associated"/>
    </enum>

    <request name="get_aura_surface">
      <description summary="extend surface interface for aura shell">
	Instantiate an interface extension for the given wl_surface to
	provide aura shell functionality. If the given wl_surface is not
	associated with a shell surface, the shell_surface_missing protocol
	error is raised.
      </description>

      <arg name="id" type="new_id" interface="zaura_surface"
	   summary="the new aura surface interface id"/>
      <arg name="surface" type="object" interface="wl_surface"
	   summary="the surface"/>
    </request>

    <!-- Version 2 additions -->

    <request name="get_aura_output" since="2">
      <description summary="extend output interface for aura shell">
	Instantiate an interface extension for the given wl_output to
	provide aura shell functionality.
      </description>

      <arg name="id" type="new_id" interface="zaura_output"
	   summary="the new aura output interface id"/>
      <arg name="output" type="object" interface="wl_output"
	   summary="the output"/>
    </request>

    <!-- Version 11 additions -->

    <enum name="layout_mode">
      <description summary="the layout mode">
        Specifies the server's window layout mode.
      </description>
      <entry name="windowed" value="1" summary="multiple windows"/>
      <entry name="tablet" value="2" summary="restricted mode for tablet"/>
    </enum>

    <event name="layout_mode" since="11">
      <description summary="sends the layout_mode">
        Sends the layout_mode used by the server.
      </description>
      <arg name="layout_mode" type="uint" summary="layout_mode enum"/>
    </event>

    <!-- Version 14 additions -->

    <event name="bug_fix" since="14">
      <description summary="sends a bug fix ID">
        Sends a monorail ID of a bug fixed on the exo server that clients can
        use to gate functionality.
      </description>
      <arg name="id" type="uint" summary="ID of a single bug fix"/>
    </event>

    <event name="desks_changed" since="22">
      <description summary="sends names of desks">
        Notifies when there is a change in global desks state. This is emitted on
        desk name changes, desk addition/removal or desks are reordered.
        "desk_names" argument contains the set of null terminated strings as names of desks.
      </description>
      <arg name="desk_names" type="array" summary="an array of existing desks' names"/>
    </event>
    <event name="desk_activation_changed" since="22">
      <description summary="sends the index of the active desk">
        Notifies when there is a change of the active desk.
      </description>
      <arg name="active_desk_index" type="int" summary="index of the active desk"/>
    </event>

    <!-- Version 24 additions -->
    <event name="activated" since="24">
      <description summary="activated surface changed">
	Notifies client that the activated surface changed.
      </description>
      <arg name="gained_active" type="object" interface="wl_surface" allow-null="true"/>
      <arg name="lost_active" type="object" interface="wl_surface" allow-null="true"/>
    </event>

    <!-- Version 26 additions -->
    <request name="surface_submission_in_pixel_coordinates" since="26">
      <description summary="surfaces will be submitted in pixel coordinates">
        [Deprecated] Informs the server that when submitting surfaces, this
        client will not use wl_surface_set_buffer_scale to report the scales,
        nor will it apply scale via vp_viewporter. Instead the server should
        apply an appropriate scale transform to have the submitted buffers
        composited correctly.
      </description>
    </request>

    <request name="get_aura_toplevel_for_xdg_toplevel" since="27">
      <description summary="get aura toplevel">
  Retrieve the aura toplevel interface for a given xdg toplevel interface
      </description>
      <arg name="id" type="new_id" interface="zaura_toplevel"
	   summary="the new aura toplevel interface id"/>
      <arg name="toplevel" type="object" interface="xdg_toplevel"/>
    </request>

    <request name="get_aura_popup_for_xdg_popup" since="28">
      <description summary="get aura popup">
        Retrieve the aura popup interface for the given xdg popup interface
      </description>
      <arg name="id" type="new_id" interface="zaura_popup"
	    summary="the aura popup interface id"/>
      <arg name="popup" type="object" interface="xdg_popup"/>
    </request>

    <request name="release" type="destructor" since="38">
      <description summary="release zaura_shell object">
	Using this request a client can tell the server that it is not going to
	use the zaura_shell object anymore. This does not affect any other objects.

  This is named "release" because "destroy" is a special named function used for
  freeing wl_proxy objects. Naming it "destroy" will cause marshalling errors
  when running on lower versioned hosts. All "release" requests here should be
  renamed to "destroy" if we move to aura-shell v2.
      </description>
    </request>
  </interface>

  <interface name="zaura_surface" version="38">
    <description summary="aura shell interface to a wl_surface">
      An additional interface to a wl_surface object, which allows the
      client to access aura shell specific functionality for surface.
    </description>

    <enum name="frame_type">
      <description summary="different frame types">
	Frame types that can be used to decorate a surface.
      </description>
      <entry name="none" value="0" summary="no frame"/>
      <entry name="normal" value="1" summary="caption with shadow" />
      <entry name="shadow" value="2" summary="shadow only"/>
    </enum>

    <request name="set_frame">
      <description summary="request a frame for surface">
        [Deprecated] Suggests a surface should use a specific frame. Deprecated
        since M105. See the set_decoration method on zaura_toplevel and
        zaura_popup.
      </description>
      <arg name="type" type="uint" summary="the new frame type"/>
    </request>

    <!-- Version 2 additions -->

    <request name="set_parent" since="2">
      <description summary="set the parent of this surface">
	Set the "parent" of this surface. "x" and "y" arguments specify the
	initial position for surface relative to parent.
      </description>
      <arg name="parent" type="object" interface="zaura_surface" allow-null="true"/>
      <arg name="x" type="int"/>
      <arg name="y" type="int"/>
    </request>

    <!-- Version 3 additions -->

    <request name="set_frame_colors" since="3">
      <description summary="set the frame colors of this surface">
	Set the frame colors.
      </description>
      <arg name="active_color" type="uint" summary="32 bit ARGB color value, not premultiplied"/>
      <arg name="inactive_color" type="uint" summary="32 bit ARGB color value, not premultiplied"/>
    </request>

    <!-- Version 4 additions -->

    <request name="set_startup_id" since="4">
      <description summary="set the startup ID of this surface">
	Set the startup ID.
      </description>
      <arg name="startup_id" type="string" allow-null="true"/>
    </request>

    <!-- Version 5 additions -->

    <request name="set_application_id" since="5">
      <description summary="set the application ID of this surface">
	Set the application ID.
      </description>
      <arg name="application_id" type="string" allow-null="true"/>
    </request>

    <!-- Version 7 additions -->

    <request name="set_client_surface_id" since="7">
      <description summary="set the client surface ID of this surface">
	Deprecated. Please use set_client_surface_str_id instead.
	Set the identifier of the surface assigned by the client.
      </description>
      <arg name="client_surface_id" type="int" />
    </request>

    <!-- Version 8 additions -->

    <enum name="occlusion_change_reason">
      <description summary="occlusion change reason">
	Enum describing why an occlusion change happened. An occlusion change as a
	result of a user action could include things like the user moving a window,
	changing occlusion, or opening/closing a window, changing the occlusion.
      </description>
      <entry name="user_action" value="1" summary="occlusion changed as a result of a user action"/>
    </enum>

    <request name="set_occlusion_tracking" since="8">
      <description summary="set tracked occlusion region">
	Sets occlusion tracking on this surface. The client will be updated with a
	new occlusion fraction when the amount of occlusion of this surface changes.
      </description>
    </request>

    <request name="unset_occlusion_tracking" since="8">
      <description summary="unset tracked occlusion region">
	Unsets occlusion tracking for this surface.
      </description>
    </request>

    <event name="occlusion_changed" since="8">
      <description summary="Notifies on an occlusion change">
	Notifies when there is a change in the amount this surface is occluded.
	The occlusion update is sent as a fixed point number from 0 to 1, representing
	the proportion of occlusion.
      </description>
      <arg name="occlusion_fraction" type="fixed"/>
      <arg name="occlusion_reason" type="uint"/>
    </event>

    <!-- Version 9 additions -->

    <request name="activate" since="9">
      <description summary="Indicate that this window wants to be the active window">
	Make this the active window. This usually implies something like
	restacking this surface to the foreground. The compositor is free to
	ignore this request if it deems the client to be misbehaving. Typically
	this request will only be honoured in response to some user driven
	event, such as executing an application or opening a file in a window
	that already exists.
      </description>
    </request>

    <request name="draw_attention" since="9">
      <description summary="Indicate that this window wants some of the user's attention">
	Draw attention to this surface in a way that does not change the user's
	focus. This usually means animating window decorations or taskbar icons.
	The compositor can still ignore this request if it deems fit, but unlike
	draw_focus, these requests are expected to come from background tasks,
	and are more likely to be honoured.
      </description>
    </request>

    <!-- Version 10 additions -->

    <enum name="fullscreen_mode">
      <description
        summary="Specifies the behavior of the surface in fullscreen.">
          Possible windowing system behaviors if this surface were to go
          fullscreen.
      </description>
      <entry
        name="immersive"
        value="0"
        summary="user can access system UIs such as the shelf and window frame
          by pointing to, or swiping over, the screen edge"/>
      <entry
        name="plain"
        value="1"
        summary="user cannot access system UIs using mouse/touches"/>
    </enum>

    <request name="set_fullscreen_mode" since="10">
      <description summary="Sets the behavior of the surface in fullscreen.">
        Suggests how the windowing system should behave if this surface were
        to go fullscreen. Does not make the surface fullscreen.

        Typically the default mode is "immersive".
      </description>
      <arg name="mode" type="uint" enum="fullscreen_mode"/>
    </request>

    <!-- Version 12 additions -->

    <request name="set_client_surface_str_id" since="12">
      <description summary="set the client surface ID of this surface">
        Set the identifier of the surface assigned by the client.
      </description>
      <arg name="client_surface_id" type="string" />
    </request>

    <!-- Version 15 additions -->

    <request name="set_server_start_resize" since="15">
      <description summary="request a server-side shadow for surface">
	Suggests a surface to have client-side decoration, but
	server-side decides when and where to start the resize. The server may also
	apply visual effects to indicate that the resize operation is ongoing.
      </description>
    </request>

    <!-- Version 16 additions -->

    <enum name="snap_direction">
      <description summary="surface snap directions">
        Surface snap directions.
      </description>
      <entry name="none" value="0" summary=""/>
      <entry name="left" value="1" summary=""/>
      <entry name="right" value="2" summary=""/>
    </enum>

    <request name="intent_to_snap" since="16">
      <description summary="client intents to snap the surface.">
        Notify (or inform) the server the client's intent to snap the window.
        To inform it's no longer willing to snap, send 'none'.
      </description>
      <arg name="direction" type="uint" enum="snap_direction"/>
    </request>

    <request name="set_snap_left" since="16">
      <description summary="snap the surface to the left.">
        Request that surface is snapped to the left.
      </description>
    </request>

    <request name="set_snap_right" since="16">
      <description summary="snap the surface to the right.">
        Request that surface is snapped to the right.
      </description>
    </request>

    <request name="unset_snap" since="16">
      <description summary="Unset the surface snap.">
        Request that surface resets snapping.
      </description>
    </request>

    <!-- Version 17 additions -->

    <event name="lock_frame_normal" since="17">
      <description summary="Notify the client that server intent to lock window in normal or restore state">
        Notifies the client to lock window in normal or restore state. When
        window is locked, the window frame should look like it is in restored
        state, but actually isn't. Locking happends while dragging a maximized
        window.
      </description>
    </event>

    <event name="unlock_frame_normal" since="17">
      <description summary="Notify the client that server intent to unlock window's normal or restore state">
        Notifies the client to unlock window if it is previously locked.
        Unlocking happends while dragging a maximized window.
      </description>
    </event>

    <!-- Version 18 additions -->
    <request name="set_window_session_id" since="18">
      <description summary="set surface window session id">
          Set window session id to the surface.
      </description>
      <arg name="id" type="int" summary="window session id"/>
    </request>

    <!-- Version 19 additions -->
    <request name="set_can_go_back" since="19">
      <description summary="Set the minimize-on-back-gesture behavior.">
        Sets that the surface can go back as per its navigation list.
        This allows the server to react to by minimizing the window upon a
        system wide back gesture.
      </description>
    </request>

    <request name="unset_can_go_back" since="19">
      <description summary="Unset the minimize-on-back-gesture behavior.">
        Unsets that the surface can go back as per its navigation list.
        See above.
      </description>
    </request>

    <!-- Version 20 additions -->
    <request name="set_pip" since="20">
      <description summary="Set pip for the surface.">
        Requests that the surface is set to Picture-in-Picture (PIP).
      </description>
    </request>

    <request name="unset_pip" since="20">
      <description summary="Unset pip for the surface.">
        Requests that the surface is unset from Picture-in-Picture (PIP).
      </description>
    </request>

    <request name="set_aspect_ratio" since="20">
      <description summary="Set aspect ratio for the surface.">
        Sets the aspect ratio of the surface.
      </description>
      <arg name="width" type="int"/>
      <arg name="height" type="int"/>
    </request>

    <!-- Version 21 additions -->
    <enum name="occlusion_state">
      <description summary="surface occlusion state">
	Describes the occlusion state of a surface.
      </description>
      <entry name="unknown" value="0" summary="The surface's occlusion state isn't tracked"/>
      <entry name="visible" value="1" summary="The surface is visible"/>
      <entry name="occluded" value="2" summary="The surface is occluded"/>
      <entry name="hidden" value="3" summary="The surface is not visible"/>
    </enum>

    <event name="occlusion_state_changed" since="21">
      <description summary="Notify the client that the occlusion state changed">
	Notifies the client that the occlusion state of a window has changed. Clients
	will only receive these messages if they previously request occlusion tracking
  via set_occlusion_tracking for a particular surface.
      </description>
      <arg name="mode" type="uint" enum="occlusion_state"/>
    </event>

    <!-- Version 22 additions -->
    <request name="move_to_desk" since="22">
        <description summary="move to desk">
        If |index| equals -1, requests that the server toggles whether client
        is visible on all workspaces.
        If |index| is not -1, requests that the server moves the client to the desk at
        |index|.
      </description>
      <arg name="index" type="int"/>
    </request>

    <event name="desk_changed" since="22">
      <description summary="window desk state changed">
        Notifies when there is a change in the desk state of a window.
        This is emitted when a window is moved to another desk or
        when its assigned-to-all-desks state changes.
      </description>
      <arg name="state" type="int" summary="index of desk or -1 for a window assigned to all desks"/>
    </event>

    <!-- Version 23 additions -->
    <request name="set_initial_workspace" since="23">
      <description summary="initial workspace for restore">
        If |initial_workspace| equals '-1', a window is restored and visible on all workspaces,
        Otherwise, set the initial workspace to restore the window to the corresponding workspace.
        This is not double buffered and must be set before attaching a buffer.
      </description>
      <arg name="initial_workspace" type="string" summary="intial workspace for restoring or '-1' for visible on all workspaces"/>
    </request>

    <!-- Version 25 additions -->
    <request name="set_pin" since="25">
      <description summary="pin a window (trusted or not)">
	Requests that a window is pinned which means that the system does not allow
  the user to leave the window until an exit criteria is met.

	This is a request to get the window pinned so that the user cannot get to any
	other window / application. There are two modes:
  A. trusted is 0 - which is slightly less restrictive and allows the user to
  get out of the window by a predefined way of authentication.
  B. trusted is not 0 in which case a trusted application was locking down the
  system and needs to unlock. This is used for e.g. School tests.
      </description>
      <arg name="trusted" type="int" summary="0 for non trusted"/>
    </request>

    <request name="unset_pin" since="25">
      <description summary="unpin a window">
	Requests that the user can leave a previously pinned window.

	This is a request to unpin a previously pinned window. It does not matter if
  the window was locked with the trusted state or not.
      </description>
    </request>

    <event name="start_throttle" since="29">
      <description summary="start throttling on the surface">
        Informs the client to start throttling on the surface.
      </description>
    </event>
    <event name="end_throttle" since="29">
      <description summary="end throttling on the surface">
        Informs the client to end throttling on the surface.
      </description>
    </event>

    <!-- Version 38 additions -->
    <request name="release" type="destructor" since="38">
      <description summary="destroy zaura_surface">
	Destroy the zaura_surface object. A client should destroy this object when the
  role is unmapped from a wl_surface.

  See zaura_shell.release for destructor naming.
      </description>
    </request>
  </interface>

  <interface name="zaura_output" version="38">
    <description summary="aura shell interface to a wl_output">
      An additional interface to a wl_output object, which allows the
      client to access aura shell specific functionality for output.
    </description>

    <!-- Version 2 additions -->

    <enum name="scale_property" bitfield="true">
      <description summary="scale information">
	These flags describe properties of an output scale.
	They are used in the flags bitfield of the scale event.
      </description>
      <entry name="current" value="0x1"
	     summary="indicates this is the current scale"/>
      <entry name="preferred" value="0x2"
	     summary="indicates this is the preferred scale"/>
    </enum>

    <enum name="scale_factor">
      <entry name="0400" value="400"/>
      <entry name="0500" value="500"/>
      <entry name="0550" value="550"/>
      <entry name="0600" value="600"/>
      <entry name="0625" value="625"/>
      <entry name="0650" value="650"/>
      <entry name="0700" value="700"/>
      <entry name="0750" value="750"/>
      <entry name="0800" value="800"/>
      <entry name="0850" value="850"/>
      <entry name="0900" value="900"/>
      <entry name="0950" value="950"/>
      <entry name="1000" value="1000"/>
      <entry name="1050" value="1050"/>
      <entry name="1100" value="1100"/>
      <entry name="1150" value="1150"/>
      <entry name="1125" value="1125"/>
      <entry name="1200" value="1200"/>
      <entry name="1250" value="1250"/>
      <entry name="1300" value="1300"/>
      <entry name="1400" value="1400"/>
      <entry name="1450" value="1450"/>
      <entry name="1500" value="1500"/>
      <entry name="1600" value="1600"/>
      <entry name="1750" value="1750"/>
      <entry name="1800" value="1800"/>
      <entry name="2000" value="2000"/>
      <entry name="2200" value="2200"/>
      <entry name="2250" value="2250"/>
      <entry name="2500" value="2500"/>
      <entry name="2750" value="2750"/>
      <entry name="3000" value="3000"/>
      <entry name="3500" value="3500"/>
      <entry name="4000" value="4000"/>
      <entry name="4500" value="4500"/>
      <entry name="5000" value="5000"/>
    </enum>

    <event name="scale" since="2">
      <description summary="advertise available scales for the output">
	The scale event describes an available scale for the output.

	The event is sent when binding to the output object and there
	will always be one scale, the current scale. The event is sent
	again if an output changes scale, for the scale that is now
	current. In other words, the current scale is always the last
	scale that was received with the current flag set.
      </description>
      <arg name="flags" type="uint" enum="scale_property" summary="bitfield of scale flags"/>
      <arg name="scale" type="uint" enum="scale_factor" summary="output scale"/>
    </event>

    <!-- Version 5 additions -->

    <enum name="connection_type">
      <entry name="unknown" value="0"/>
      <entry name="internal" value="1"/>
    </enum>

    <event name="connection" since="5">
      <description summary="advertise connection for the output">
	The connection event describes how the output is connected.

	The event is sent when binding to the output object.
      </description>
      <arg name="connection" type="uint" enum="connection_type" summary="output connection"/>
    </event>

    <event name="device_scale_factor" since="5">
      <description summary="advertise device scale factor for the output">
	This event describes the device specific scale factor for the output.

	The device specific scale factor is not expected the change during
	the lifetime of the output. And it is not limited to an integer value
	like the scale factor provided by wl_output interface. The exact
	contents scale used by the compositor can be determined by combining
	this device scale factor with the current output scale.

	The event is sent when binding to the output object.
      </description>
      <arg name="scale" type="uint" enum="scale_factor" summary="output device scale factor"/>
    </event>

    <!-- Version 33 additions -->

    <event name="insets" since="33">
      <description summary="advertise the insets for the output">
        This event describes the insets for the output in logical screen
        coordinates, from which the work area can be calculated.

        This event is sent before wl_output.done, after which the client would
        apply the change.
      </description>
      <arg name="top" type="int"/>
      <arg name="left" type="int"/>
      <arg name="bottom" type="int"/>
      <arg name="right" type="int"/>
    </event>

    <!-- Version 34 additions -->

    <event name="logical_transform" since="34">
      <description summary="advertise the output's logical transform">
        This event describes the logical transform for the output. Whereas
        wl_output.geometry's transform corresponds to the display's panel
        rotation, the logical transform corresponds to the display's logical
        rotation.

        This event is sent before wl_output.done, after which the client would
        apply the change.
      </description>
      <arg name="transform" type="int" enum="wl_output.transform"/>
    </event>

    <!-- Version 38 additions -->
    <request name="release" type="destructor" since="38">
      <description summary="destroy zaura_output">
	Destroy this zaura_shell object.

	Destroying a bound zaura_shell object while there are zaura_surfaces
	still alive created by this zaura_shell object instance is illegal
	and will result in a protocol error.

  See zaura_shell.release for destructor naming.
      </description>
    </request>
  </interface>

  <interface name="zaura_toplevel" version="40">
    <description summary="aura shell interface to the toplevel shell">
      An interface to the toplevel shell, which allows the
      client to access shell specific functionality.
    </description>

    <enum name="orientation_lock">
      <description summary="orientation lock request">
  Defines orientation request when a surface is in fullscreen.
      </description>
      <entry name="none" value="1" summary="no orientation lock"/>
      <entry name="portrait" value="2" summary="primary or secondary portrait"/>
      <entry name="landscape" value="3" summary="primary or secondary landscape"/>
      <entry name="current" value="4" summary="keep current orientation"/>
      <entry name="portrait_primary" value="5" summary="primary portrait"/>
      <entry name="landscape_primary" value="6" summary="primary landscape"/>
      <entry name="portrait_secondary" value="7" summary="secondary portrait"/>
      <entry name="landscape_secondary" value="8" summary="secondary landscape"/>
    </enum>

    <request name="set_orientation_lock" since="26">
      <description summary="set orientation lock for a remote surface">
  Request a specific orientation behavior when this surface is in fullscreen.
      </description>
      <arg name="orientation_lock" type="uint" enum="orientation_lock"/>
    </request>
    <request name="surface_submission_in_pixel_coordinates" since="28">
      <description summary="surface will be submitted in pixel coordinates">
        Informs the server that when submitting this surface, this client will not
        use wl_surface_set_buffer_scale to report the scales, nor will it apply
        scale via vp_viewporter. Instead the server should apply an appropriate
        scale transform for the submitted buffers to be composited correctly.
      </description>
    </request>

    <request name="set_supports_screen_coordinates" since="29">
      <description summary="enables screen coordinates in window bounds">
	Requesting this will enable screen coordinates in surfaces
	associated with aura_toplevel including sub surfaces and popup
	windows who added this toplevel as a parent. This should be
	set before first commit.
      </description>
    </request>

    <request name="set_window_bounds" since="29">
      <description summary="set window size and position">
	Request a new location and bounds of the surface in DP screen
	coordinates.  The size will be applied to visible bounds used
	in set_geometry.  The output is a hint for the compositor to
	determine which output the window should move to.  These
	parameters are just a request and the compositor may ignore,
	adjust the size and position based on the rule imposed by the
	window manager, or may preserve it for future operations. For
	example, the compositor will not allow a position outside of
	the output, or the compositor may just store it if the
	toplevel surface is in maximiezd state, and may use it upon
	unmaximized.
      </description>
      <arg name="x" type="int"/>
      <arg name="y" type="int"/>
      <arg name="width" type="int"/>
      <arg name="height" type="int"/>
      <arg name="output" type="object" interface="wl_output" summary="the output"/>
    </request>

    <event name="configure" since="29">
      <description summary="suggest a surface change">
        A configuration change that also includes the window origin in screen coordinates.
      </description>
      <arg name="x" type="int"/>
      <arg name="y" type="int"/>
      <arg name="width" type="int"/>
      <arg name="height" type="int"/>
      <arg name="states" type="array"/>
    </event>

    <enum name="state">
      <description summary="supplemental aura states to xdg states">
        The states that are contained here are supplemental to the states
        defined in the XDG shell and specific aura windows.
      </description>

      <!-- Offset by 100 to prevent collision with new XDG states. -->
      <entry name="immersive" value="100" since="36">
        <description summary="immersive mode with hidden title bar and shelf">
          User can access system UIs such as the shelf and window frame
          by pointing to, or swiping over, the screen edge.
        </description>
      </entry>
      <entry name="minimized" value="101" since="36">
        <description summary="surface is minimized">
          The window has been minimized.
        </description>
      </entry>
      <entry name="snapped_primary" value="102" since="38">
        <description summary="window is snapped in primary position">
          The window is snapped to the left if the display is in landscape mode
          and at the top in portrait mode.
        </description>
      </entry>
      <entry name="snapped_secondary" value="103" since="38">
        <description summary="window is snapped in secondary position">
          The window is snapped to the right if the display is in landscape mode
          and at the bottom in portrait mode.
        </description>
      </entry>
    </enum>

    <event name="origin_change" since="29">
      <description summary="window origin change">
        A notification sent when the window origin has changed. Unlike a configure,
        this does not imply the client needs to resize. The values are in screen
        coordinates.
      </description>
      <arg name="x" type="int" />
      <arg name="y" type="int" />
    </event>

    <request name="set_restore_info" since="30">
      <description summary="set session id and restore id">
      Request session id and restore id of a newly created browser window.
      Set the information used by compositor to restore the toplevel
      surface state, such as window position, window state, upon creation.
      This is not double buffered and must be set before sending first commit.
      </description>
      <arg name="restore_session_id" type="int" summary="unique browser session id"/>
      <arg name="restore_window_id" type="int" summary="restore browser window id"/>
    </request>

    <!-- Version 31 additions -->
    <request name="set_system_modal" since="31">
      <description summary="make window a system modal">
        Requests that the toplevel surface should become a system modal. The
        compositor will prevent other windows from receiving events. If there
        are multiple system modal surfaces, the compositor will decide which
        one to receive events.
      </description>
    </request>

    <request name="unset_system_modal" since="31">
      <description summary="unset window system modal state">
        Requests that the system modal state of the toplevel surface will be
        unset. The compositor will then allow other windows to recieve events.
      </description>
    </request>

    <request name="set_restore_info_with_window_id_source" since="32">
      <description summary="set session id and restore window id source">
      Request session id and restore id of the window. Set the information used by compositor to restore the toplevel surface state, such as window position, window state, upon creation. This is not double buffered and must be set before sending first commit. This is different from set_restore_info, used for clients that create multiple windows associated with restore_id_source.
      </description>
      <arg name="restore_session_id" type="int" summary="unique browser session id"/>
      <arg name="restore_window_id_source" type="string" summary="restore window id source"/>
    </request>

    <request name="set_decoration" since="35">
      <description summary="request a decoration for surface">
        Clients are allowed to request a particular decoration for a
        zaura_toplevel. The server is not required to honor this request. See
        decoration_type for available options. Available since M105.
      </description>
      <arg name="type" type="uint" summary="the new frame type"/>
    </request>

    <enum name="decoration_type">
      <description summary="different decoration types">
	Decoration types are used to modify the surface (e.g. drop shadow).
      </description>
      <entry name="none" value="0" summary="no frame"/>
      <entry name="normal" value="1" summary="caption with shadow"/>
      <entry name="shadow" value="2" summary="shadow only"/>
    </enum>

    <!-- Version 38 additions -->
    <request name="release" type="destructor" since="38">
      <description summary="destroy zaura_toplevel">
	Destroy this zaura_toplevel object. A client should call destroy when the role
  is unmapped from a wl_surface.

  See zaura_shell.release for destructor naming.
      </description>
    </request>

    <!-- Version 39 additions -->
    <request name="set_float" since="39">
      <description summary="float the surface on top">
        This is a request to place the surface above others.
      </description>
    </request>
    <request name="unset_float" since="39">
      <description summary="unset the surface float">
        Request that the surface resets floating.
      </description>
    </request>

    <!-- version 40 additions -->
    <request name="set_z_order" since="40">
      <description summary="set z order for window">
        Sets the z order for a toplevel surface. See z_order_level for available options.
      </description>
      <arg name="z_order" type="uint" summary="z order value for the window"/>
    </request>

    <enum name="z_order_level">
      <description summary="z order levels for windows">
        Different z order levels that are used to set the z order for a toplevel surface.
      </description>
      <entry name="normal" value="0" summary="the default level for windows"/>
      <entry name="floating_window" value="1" summary="a floating window z-ordered above other normal windows"/>
      <entry name="floating_ui_element" value="2" summary="used to show non-window style UIs that are shown above floating windows"/>
      <entry name="security_surface" value="3" summary="cannot be interfered with or covered up"/>
    </enum>
  </interface>

  <interface name="zaura_popup" version="38">
    <description summary="aura shell interface to the popup shell">
      An interface to the popup shell, which allows the
      client to access shell specific functionality.
    </description>

   <request name="surface_submission_in_pixel_coordinates" since="28">
      <description summary="surface will be submitted in pixel coordinates">
        Informs the server that when submitting this surface, this client will not
        use wl_surface_set_buffer_scale to report the scales, nor will it apply
        scale via vp_viewporter. Instead the server should apply an appropriate
        scale transform for the submitted buffers to be composited correctly.
      </description>
    </request>

    <request name="set_decoration" since="35">
      <description summary="request a decoration for surface">
        Clients are allowed to request a particular decoration for a
        zaura_toplevel. The server is not required to honor this request. See
        decoration_type for available options. Available since M105.
      </description>
      <arg name="type" type="uint" summary="the new frame type"/>
    </request>

    <enum name="decoration_type">
      <description summary="different decoration types">
	Decoration types are used to modify the surface (e.g. drop shadow).
      </description>
      <entry name="none" value="0" summary="no frame"/>
      <entry name="normal" value="1" summary="caption with shadow"/>
      <entry name="shadow" value="2" summary="shadow only"/>
    </enum>

    <request name="set_menu" since="37">
      <description summary="set popup type to menu">
        Set popup type to menu
      </description>
    </request>

    <!-- Version 38 additions -->
    <request name="release" type="destructor" since="38">
      <description summary="destroy zaura_popup">
	This request destroys the zaura_popup. A client should call destroy when the
  role is unmapped from a wl_surface.

  See zaura_shell.release for destructor naming.
      </description>
    </request>
  </interface>
</protocol>
