1*6c119a46SAndroid Build Coastguard Worker<?xml version="1.0" encoding="UTF-8"?>
2*6c119a46SAndroid Build Coastguard Worker<protocol name="xdg_shell_unstable_v6">
3*6c119a46SAndroid Build Coastguard Worker
4*6c119a46SAndroid Build Coastguard Worker  <copyright>
5*6c119a46SAndroid Build Coastguard Worker    Copyright © 2008-2013 Kristian Høgsberg
6*6c119a46SAndroid Build Coastguard Worker    Copyright © 2013      Rafael Antognolli
7*6c119a46SAndroid Build Coastguard Worker    Copyright © 2013      Jasper St. Pierre
8*6c119a46SAndroid Build Coastguard Worker    Copyright © 2010-2013 Intel Corporation
9*6c119a46SAndroid Build Coastguard Worker
10*6c119a46SAndroid Build Coastguard Worker    Permission is hereby granted, free of charge, to any person obtaining a
11*6c119a46SAndroid Build Coastguard Worker    copy of this software and associated documentation files (the "Software"),
12*6c119a46SAndroid Build Coastguard Worker    to deal in the Software without restriction, including without limitation
13*6c119a46SAndroid Build Coastguard Worker    the rights to use, copy, modify, merge, publish, distribute, sublicense,
14*6c119a46SAndroid Build Coastguard Worker    and/or sell copies of the Software, and to permit persons to whom the
15*6c119a46SAndroid Build Coastguard Worker    Software is furnished to do so, subject to the following conditions:
16*6c119a46SAndroid Build Coastguard Worker
17*6c119a46SAndroid Build Coastguard Worker    The above copyright notice and this permission notice (including the next
18*6c119a46SAndroid Build Coastguard Worker    paragraph) shall be included in all copies or substantial portions of the
19*6c119a46SAndroid Build Coastguard Worker    Software.
20*6c119a46SAndroid Build Coastguard Worker
21*6c119a46SAndroid Build Coastguard Worker    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22*6c119a46SAndroid Build Coastguard Worker    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23*6c119a46SAndroid Build Coastguard Worker    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
24*6c119a46SAndroid Build Coastguard Worker    THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25*6c119a46SAndroid Build Coastguard Worker    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
26*6c119a46SAndroid Build Coastguard Worker    FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
27*6c119a46SAndroid Build Coastguard Worker    DEALINGS IN THE SOFTWARE.
28*6c119a46SAndroid Build Coastguard Worker  </copyright>
29*6c119a46SAndroid Build Coastguard Worker
30*6c119a46SAndroid Build Coastguard Worker  <interface name="zxdg_shell_v6" version="1">
31*6c119a46SAndroid Build Coastguard Worker    <description summary="create desktop-style surfaces">
32*6c119a46SAndroid Build Coastguard Worker      xdg_shell allows clients to turn a wl_surface into a "real window"
33*6c119a46SAndroid Build Coastguard Worker      which can be dragged, resized, stacked, and moved around by the
34*6c119a46SAndroid Build Coastguard Worker      user. Everything about this interface is suited towards traditional
35*6c119a46SAndroid Build Coastguard Worker      desktop environments.
36*6c119a46SAndroid Build Coastguard Worker    </description>
37*6c119a46SAndroid Build Coastguard Worker
38*6c119a46SAndroid Build Coastguard Worker    <enum name="error">
39*6c119a46SAndroid Build Coastguard Worker      <entry name="role" value="0" summary="given wl_surface has another role"/>
40*6c119a46SAndroid Build Coastguard Worker      <entry name="defunct_surfaces" value="1"
41*6c119a46SAndroid Build Coastguard Worker	     summary="xdg_shell was destroyed before children"/>
42*6c119a46SAndroid Build Coastguard Worker      <entry name="not_the_topmost_popup" value="2"
43*6c119a46SAndroid Build Coastguard Worker	     summary="the client tried to map or destroy a non-topmost popup"/>
44*6c119a46SAndroid Build Coastguard Worker      <entry name="invalid_popup_parent" value="3"
45*6c119a46SAndroid Build Coastguard Worker	     summary="the client specified an invalid popup parent surface"/>
46*6c119a46SAndroid Build Coastguard Worker      <entry name="invalid_surface_state" value="4"
47*6c119a46SAndroid Build Coastguard Worker	     summary="the client provided an invalid surface state"/>
48*6c119a46SAndroid Build Coastguard Worker      <entry name="invalid_positioner" value="5"
49*6c119a46SAndroid Build Coastguard Worker	     summary="the client provided an invalid positioner"/>
50*6c119a46SAndroid Build Coastguard Worker    </enum>
51*6c119a46SAndroid Build Coastguard Worker
52*6c119a46SAndroid Build Coastguard Worker    <request name="destroy" type="destructor">
53*6c119a46SAndroid Build Coastguard Worker      <description summary="destroy xdg_shell">
54*6c119a46SAndroid Build Coastguard Worker	Destroy this xdg_shell object.
55*6c119a46SAndroid Build Coastguard Worker
56*6c119a46SAndroid Build Coastguard Worker	Destroying a bound xdg_shell object while there are surfaces
57*6c119a46SAndroid Build Coastguard Worker	still alive created by this xdg_shell object instance is illegal
58*6c119a46SAndroid Build Coastguard Worker	and will result in a protocol error.
59*6c119a46SAndroid Build Coastguard Worker      </description>
60*6c119a46SAndroid Build Coastguard Worker    </request>
61*6c119a46SAndroid Build Coastguard Worker
62*6c119a46SAndroid Build Coastguard Worker    <request name="create_positioner">
63*6c119a46SAndroid Build Coastguard Worker      <description summary="create a positioner object">
64*6c119a46SAndroid Build Coastguard Worker	Create a positioner object. A positioner object is used to position
65*6c119a46SAndroid Build Coastguard Worker	surfaces relative to some parent surface. See the interface description
66*6c119a46SAndroid Build Coastguard Worker	and xdg_surface.get_popup for details.
67*6c119a46SAndroid Build Coastguard Worker      </description>
68*6c119a46SAndroid Build Coastguard Worker      <arg name="id" type="new_id" interface="zxdg_positioner_v6"/>
69*6c119a46SAndroid Build Coastguard Worker    </request>
70*6c119a46SAndroid Build Coastguard Worker
71*6c119a46SAndroid Build Coastguard Worker    <request name="get_xdg_surface">
72*6c119a46SAndroid Build Coastguard Worker      <description summary="create a shell surface from a surface">
73*6c119a46SAndroid Build Coastguard Worker	This creates an xdg_surface for the given surface. While xdg_surface
74*6c119a46SAndroid Build Coastguard Worker	itself is not a role, the corresponding surface may only be assigned
75*6c119a46SAndroid Build Coastguard Worker	a role extending xdg_surface, such as xdg_toplevel or xdg_popup.
76*6c119a46SAndroid Build Coastguard Worker
77*6c119a46SAndroid Build Coastguard Worker	This creates an xdg_surface for the given surface. An xdg_surface is
78*6c119a46SAndroid Build Coastguard Worker	used as basis to define a role to a given surface, such as xdg_toplevel
79*6c119a46SAndroid Build Coastguard Worker	or xdg_popup. It also manages functionality shared between xdg_surface
80*6c119a46SAndroid Build Coastguard Worker	based surface roles.
81*6c119a46SAndroid Build Coastguard Worker
82*6c119a46SAndroid Build Coastguard Worker	See the documentation of xdg_surface for more details about what an
83*6c119a46SAndroid Build Coastguard Worker	xdg_surface is and how it is used.
84*6c119a46SAndroid Build Coastguard Worker      </description>
85*6c119a46SAndroid Build Coastguard Worker      <arg name="id" type="new_id" interface="zxdg_surface_v6"/>
86*6c119a46SAndroid Build Coastguard Worker      <arg name="surface" type="object" interface="wl_surface"/>
87*6c119a46SAndroid Build Coastguard Worker    </request>
88*6c119a46SAndroid Build Coastguard Worker
89*6c119a46SAndroid Build Coastguard Worker    <request name="pong">
90*6c119a46SAndroid Build Coastguard Worker      <description summary="respond to a ping event">
91*6c119a46SAndroid Build Coastguard Worker	A client must respond to a ping event with a pong request or
92*6c119a46SAndroid Build Coastguard Worker	the client may be deemed unresponsive. See xdg_shell.ping.
93*6c119a46SAndroid Build Coastguard Worker      </description>
94*6c119a46SAndroid Build Coastguard Worker      <arg name="serial" type="uint" summary="serial of the ping event"/>
95*6c119a46SAndroid Build Coastguard Worker    </request>
96*6c119a46SAndroid Build Coastguard Worker
97*6c119a46SAndroid Build Coastguard Worker    <event name="ping">
98*6c119a46SAndroid Build Coastguard Worker      <description summary="check if the client is alive">
99*6c119a46SAndroid Build Coastguard Worker	The ping event asks the client if it's still alive. Pass the
100*6c119a46SAndroid Build Coastguard Worker	serial specified in the event back to the compositor by sending
101*6c119a46SAndroid Build Coastguard Worker	a "pong" request back with the specified serial. See xdg_shell.ping.
102*6c119a46SAndroid Build Coastguard Worker
103*6c119a46SAndroid Build Coastguard Worker	Compositors can use this to determine if the client is still
104*6c119a46SAndroid Build Coastguard Worker	alive. It's unspecified what will happen if the client doesn't
105*6c119a46SAndroid Build Coastguard Worker	respond to the ping request, or in what timeframe. Clients should
106*6c119a46SAndroid Build Coastguard Worker	try to respond in a reasonable amount of time.
107*6c119a46SAndroid Build Coastguard Worker
108*6c119a46SAndroid Build Coastguard Worker	A compositor is free to ping in any way it wants, but a client must
109*6c119a46SAndroid Build Coastguard Worker	always respond to any xdg_shell object it created.
110*6c119a46SAndroid Build Coastguard Worker      </description>
111*6c119a46SAndroid Build Coastguard Worker      <arg name="serial" type="uint" summary="pass this to the pong request"/>
112*6c119a46SAndroid Build Coastguard Worker    </event>
113*6c119a46SAndroid Build Coastguard Worker  </interface>
114*6c119a46SAndroid Build Coastguard Worker
115*6c119a46SAndroid Build Coastguard Worker  <interface name="zxdg_positioner_v6" version="1">
116*6c119a46SAndroid Build Coastguard Worker    <description summary="child surface positioner">
117*6c119a46SAndroid Build Coastguard Worker      The xdg_positioner provides a collection of rules for the placement of a
118*6c119a46SAndroid Build Coastguard Worker      child surface relative to a parent surface. Rules can be defined to ensure
119*6c119a46SAndroid Build Coastguard Worker      the child surface remains within the visible area's borders, and to
120*6c119a46SAndroid Build Coastguard Worker      specify how the child surface changes its position, such as sliding along
121*6c119a46SAndroid Build Coastguard Worker      an axis, or flipping around a rectangle. These positioner-created rules are
122*6c119a46SAndroid Build Coastguard Worker      constrained by the requirement that a child surface must intersect with or
123*6c119a46SAndroid Build Coastguard Worker      be at least partially adjacent to its parent surface.
124*6c119a46SAndroid Build Coastguard Worker
125*6c119a46SAndroid Build Coastguard Worker      See the various requests for details about possible rules.
126*6c119a46SAndroid Build Coastguard Worker
127*6c119a46SAndroid Build Coastguard Worker      At the time of the request, the compositor makes a copy of the rules
128*6c119a46SAndroid Build Coastguard Worker      specified by the xdg_positioner. Thus, after the request is complete the
129*6c119a46SAndroid Build Coastguard Worker      xdg_positioner object can be destroyed or reused; further changes to the
130*6c119a46SAndroid Build Coastguard Worker      object will have no effect on previous usages.
131*6c119a46SAndroid Build Coastguard Worker
132*6c119a46SAndroid Build Coastguard Worker      For an xdg_positioner object to be considered complete, it must have a
133*6c119a46SAndroid Build Coastguard Worker      non-zero size set by set_size, and a non-zero anchor rectangle set by
134*6c119a46SAndroid Build Coastguard Worker      set_anchor_rect. Passing an incomplete xdg_positioner object when
135*6c119a46SAndroid Build Coastguard Worker      positioning a surface raises an error.
136*6c119a46SAndroid Build Coastguard Worker    </description>
137*6c119a46SAndroid Build Coastguard Worker
138*6c119a46SAndroid Build Coastguard Worker    <enum name="error">
139*6c119a46SAndroid Build Coastguard Worker      <entry name="invalid_input" value="0" summary="invalid input provided"/>
140*6c119a46SAndroid Build Coastguard Worker    </enum>
141*6c119a46SAndroid Build Coastguard Worker
142*6c119a46SAndroid Build Coastguard Worker    <request name="destroy" type="destructor">
143*6c119a46SAndroid Build Coastguard Worker      <description summary="destroy the xdg_positioner object">
144*6c119a46SAndroid Build Coastguard Worker	Notify the compositor that the xdg_positioner will no longer be used.
145*6c119a46SAndroid Build Coastguard Worker      </description>
146*6c119a46SAndroid Build Coastguard Worker    </request>
147*6c119a46SAndroid Build Coastguard Worker
148*6c119a46SAndroid Build Coastguard Worker    <request name="set_size">
149*6c119a46SAndroid Build Coastguard Worker      <description summary="set the size of the to-be positioned rectangle">
150*6c119a46SAndroid Build Coastguard Worker	Set the size of the surface that is to be positioned with the positioner
151*6c119a46SAndroid Build Coastguard Worker	object. The size is in surface-local coordinates and corresponds to the
152*6c119a46SAndroid Build Coastguard Worker	window geometry. See xdg_surface.set_window_geometry.
153*6c119a46SAndroid Build Coastguard Worker
154*6c119a46SAndroid Build Coastguard Worker	If a zero or negative size is set the invalid_input error is raised.
155*6c119a46SAndroid Build Coastguard Worker      </description>
156*6c119a46SAndroid Build Coastguard Worker      <arg name="width" type="int" summary="width of positioned rectangle"/>
157*6c119a46SAndroid Build Coastguard Worker      <arg name="height" type="int" summary="height of positioned rectangle"/>
158*6c119a46SAndroid Build Coastguard Worker    </request>
159*6c119a46SAndroid Build Coastguard Worker
160*6c119a46SAndroid Build Coastguard Worker    <request name="set_anchor_rect">
161*6c119a46SAndroid Build Coastguard Worker      <description summary="set the anchor rectangle within the parent surface">
162*6c119a46SAndroid Build Coastguard Worker	Specify the anchor rectangle within the parent surface that the child
163*6c119a46SAndroid Build Coastguard Worker	surface will be placed relative to. The rectangle is relative to the
164*6c119a46SAndroid Build Coastguard Worker	window geometry as defined by xdg_surface.set_window_geometry of the
165*6c119a46SAndroid Build Coastguard Worker	parent surface. The rectangle must be at least 1x1 large.
166*6c119a46SAndroid Build Coastguard Worker
167*6c119a46SAndroid Build Coastguard Worker	When the xdg_positioner object is used to position a child surface, the
168*6c119a46SAndroid Build Coastguard Worker	anchor rectangle may not extend outside the window geometry of the
169*6c119a46SAndroid Build Coastguard Worker	positioned child's parent surface.
170*6c119a46SAndroid Build Coastguard Worker
171*6c119a46SAndroid Build Coastguard Worker	If a zero or negative size is set the invalid_input error is raised.
172*6c119a46SAndroid Build Coastguard Worker      </description>
173*6c119a46SAndroid Build Coastguard Worker      <arg name="x" type="int" summary="x position of anchor rectangle"/>
174*6c119a46SAndroid Build Coastguard Worker      <arg name="y" type="int" summary="y position of anchor rectangle"/>
175*6c119a46SAndroid Build Coastguard Worker      <arg name="width" type="int" summary="width of anchor rectangle"/>
176*6c119a46SAndroid Build Coastguard Worker      <arg name="height" type="int" summary="height of anchor rectangle"/>
177*6c119a46SAndroid Build Coastguard Worker    </request>
178*6c119a46SAndroid Build Coastguard Worker
179*6c119a46SAndroid Build Coastguard Worker    <enum name="anchor" bitfield="true">
180*6c119a46SAndroid Build Coastguard Worker      <entry name="none" value="0"
181*6c119a46SAndroid Build Coastguard Worker	     summary="the center of the anchor rectangle"/>
182*6c119a46SAndroid Build Coastguard Worker      <entry name="top" value="1"
183*6c119a46SAndroid Build Coastguard Worker	     summary="the top edge of the anchor rectangle"/>
184*6c119a46SAndroid Build Coastguard Worker      <entry name="bottom" value="2"
185*6c119a46SAndroid Build Coastguard Worker	     summary="the bottom edge of the anchor rectangle"/>
186*6c119a46SAndroid Build Coastguard Worker      <entry name="left" value="4"
187*6c119a46SAndroid Build Coastguard Worker	     summary="the left edge of the anchor rectangle"/>
188*6c119a46SAndroid Build Coastguard Worker      <entry name="right" value="8"
189*6c119a46SAndroid Build Coastguard Worker	     summary="the right edge of the anchor rectangle"/>
190*6c119a46SAndroid Build Coastguard Worker    </enum>
191*6c119a46SAndroid Build Coastguard Worker
192*6c119a46SAndroid Build Coastguard Worker    <request name="set_anchor">
193*6c119a46SAndroid Build Coastguard Worker      <description summary="set anchor rectangle anchor edges">
194*6c119a46SAndroid Build Coastguard Worker	Defines a set of edges for the anchor rectangle. These are used to
195*6c119a46SAndroid Build Coastguard Worker	derive an anchor point that the child surface will be positioned
196*6c119a46SAndroid Build Coastguard Worker	relative to. If two orthogonal edges are specified (e.g. 'top' and
197*6c119a46SAndroid Build Coastguard Worker	'left'), then the anchor point will be the intersection of the edges
198*6c119a46SAndroid Build Coastguard Worker	(e.g. the top left position of the rectangle); otherwise, the derived
199*6c119a46SAndroid Build Coastguard Worker	anchor point will be centered on the specified edge, or in the center of
200*6c119a46SAndroid Build Coastguard Worker	the anchor rectangle if no edge is specified.
201*6c119a46SAndroid Build Coastguard Worker
202*6c119a46SAndroid Build Coastguard Worker	If two parallel anchor edges are specified (e.g. 'left' and 'right'),
203*6c119a46SAndroid Build Coastguard Worker	the invalid_input error is raised.
204*6c119a46SAndroid Build Coastguard Worker      </description>
205*6c119a46SAndroid Build Coastguard Worker      <arg name="anchor" type="uint" enum="anchor"
206*6c119a46SAndroid Build Coastguard Worker	   summary="bit mask of anchor edges"/>
207*6c119a46SAndroid Build Coastguard Worker    </request>
208*6c119a46SAndroid Build Coastguard Worker
209*6c119a46SAndroid Build Coastguard Worker    <enum name="gravity" bitfield="true">
210*6c119a46SAndroid Build Coastguard Worker      <entry name="none" value="0"
211*6c119a46SAndroid Build Coastguard Worker	     summary="center over the anchor edge"/>
212*6c119a46SAndroid Build Coastguard Worker      <entry name="top" value="1"
213*6c119a46SAndroid Build Coastguard Worker	     summary="position above the anchor edge"/>
214*6c119a46SAndroid Build Coastguard Worker      <entry name="bottom" value="2"
215*6c119a46SAndroid Build Coastguard Worker	     summary="position below the anchor edge"/>
216*6c119a46SAndroid Build Coastguard Worker      <entry name="left" value="4"
217*6c119a46SAndroid Build Coastguard Worker	     summary="position to the left of the anchor edge"/>
218*6c119a46SAndroid Build Coastguard Worker      <entry name="right" value="8"
219*6c119a46SAndroid Build Coastguard Worker	     summary="position to the right of the anchor edge"/>
220*6c119a46SAndroid Build Coastguard Worker    </enum>
221*6c119a46SAndroid Build Coastguard Worker
222*6c119a46SAndroid Build Coastguard Worker    <request name="set_gravity">
223*6c119a46SAndroid Build Coastguard Worker      <description summary="set child surface gravity">
224*6c119a46SAndroid Build Coastguard Worker	Defines in what direction a surface should be positioned, relative to
225*6c119a46SAndroid Build Coastguard Worker	the anchor point of the parent surface. If two orthogonal gravities are
226*6c119a46SAndroid Build Coastguard Worker	specified (e.g. 'bottom' and 'right'), then the child surface will be
227*6c119a46SAndroid Build Coastguard Worker	placed in the specified direction; otherwise, the child surface will be
228*6c119a46SAndroid Build Coastguard Worker	centered over the anchor point on any axis that had no gravity
229*6c119a46SAndroid Build Coastguard Worker	specified.
230*6c119a46SAndroid Build Coastguard Worker
231*6c119a46SAndroid Build Coastguard Worker	If two parallel gravities are specified (e.g. 'left' and 'right'), the
232*6c119a46SAndroid Build Coastguard Worker	invalid_input error is raised.
233*6c119a46SAndroid Build Coastguard Worker      </description>
234*6c119a46SAndroid Build Coastguard Worker      <arg name="gravity" type="uint" enum="gravity"
235*6c119a46SAndroid Build Coastguard Worker	   summary="bit mask of gravity directions"/>
236*6c119a46SAndroid Build Coastguard Worker    </request>
237*6c119a46SAndroid Build Coastguard Worker
238*6c119a46SAndroid Build Coastguard Worker    <enum name="constraint_adjustment" bitfield="true">
239*6c119a46SAndroid Build Coastguard Worker      <description summary="constraint adjustments">
240*6c119a46SAndroid Build Coastguard Worker	The constraint adjustment value define ways the compositor will adjust
241*6c119a46SAndroid Build Coastguard Worker	the position of the surface, if the unadjusted position would result
242*6c119a46SAndroid Build Coastguard Worker	in the surface being partly constrained.
243*6c119a46SAndroid Build Coastguard Worker
244*6c119a46SAndroid Build Coastguard Worker	Whether a surface is considered 'constrained' is left to the compositor
245*6c119a46SAndroid Build Coastguard Worker	to determine. For example, the surface may be partly outside the
246*6c119a46SAndroid Build Coastguard Worker	compositor's defined 'work area', thus necessitating the child surface's
247*6c119a46SAndroid Build Coastguard Worker	position be adjusted until it is entirely inside the work area.
248*6c119a46SAndroid Build Coastguard Worker
249*6c119a46SAndroid Build Coastguard Worker	The adjustments can be combined, according to a defined precedence: 1)
250*6c119a46SAndroid Build Coastguard Worker	Flip, 2) Slide, 3) Resize.
251*6c119a46SAndroid Build Coastguard Worker      </description>
252*6c119a46SAndroid Build Coastguard Worker      <entry name="none" value="0">
253*6c119a46SAndroid Build Coastguard Worker	<description summary="don't move the child surface when constrained">
254*6c119a46SAndroid Build Coastguard Worker	  Don't alter the surface position even if it is constrained on some
255*6c119a46SAndroid Build Coastguard Worker	  axis, for example partially outside the edge of a monitor.
256*6c119a46SAndroid Build Coastguard Worker	</description>
257*6c119a46SAndroid Build Coastguard Worker      </entry>
258*6c119a46SAndroid Build Coastguard Worker      <entry name="slide_x" value="1">
259*6c119a46SAndroid Build Coastguard Worker	<description summary="move along the x axis until unconstrained">
260*6c119a46SAndroid Build Coastguard Worker	  Slide the surface along the x axis until it is no longer constrained.
261*6c119a46SAndroid Build Coastguard Worker
262*6c119a46SAndroid Build Coastguard Worker	  First try to slide towards the direction of the gravity on the x axis
263*6c119a46SAndroid Build Coastguard Worker	  until either the edge in the opposite direction of the gravity is
264*6c119a46SAndroid Build Coastguard Worker	  unconstrained or the edge in the direction of the gravity is
265*6c119a46SAndroid Build Coastguard Worker	  constrained.
266*6c119a46SAndroid Build Coastguard Worker
267*6c119a46SAndroid Build Coastguard Worker	  Then try to slide towards the opposite direction of the gravity on the
268*6c119a46SAndroid Build Coastguard Worker	  x axis until either the edge in the direction of the gravity is
269*6c119a46SAndroid Build Coastguard Worker	  unconstrained or the edge in the opposite direction of the gravity is
270*6c119a46SAndroid Build Coastguard Worker	  constrained.
271*6c119a46SAndroid Build Coastguard Worker	</description>
272*6c119a46SAndroid Build Coastguard Worker      </entry>
273*6c119a46SAndroid Build Coastguard Worker      <entry name="slide_y" value="2">
274*6c119a46SAndroid Build Coastguard Worker	<description summary="move along the y axis until unconstrained">
275*6c119a46SAndroid Build Coastguard Worker	  Slide the surface along the y axis until it is no longer constrained.
276*6c119a46SAndroid Build Coastguard Worker
277*6c119a46SAndroid Build Coastguard Worker	  First try to slide towards the direction of the gravity on the y axis
278*6c119a46SAndroid Build Coastguard Worker	  until either the edge in the opposite direction of the gravity is
279*6c119a46SAndroid Build Coastguard Worker	  unconstrained or the edge in the direction of the gravity is
280*6c119a46SAndroid Build Coastguard Worker	  constrained.
281*6c119a46SAndroid Build Coastguard Worker
282*6c119a46SAndroid Build Coastguard Worker	  Then try to slide towards the opposite direction of the gravity on the
283*6c119a46SAndroid Build Coastguard Worker	  y axis until either the edge in the direction of the gravity is
284*6c119a46SAndroid Build Coastguard Worker	  unconstrained or the edge in the opposite direction of the gravity is
285*6c119a46SAndroid Build Coastguard Worker	  constrained.
286*6c119a46SAndroid Build Coastguard Worker	</description>
287*6c119a46SAndroid Build Coastguard Worker      </entry>
288*6c119a46SAndroid Build Coastguard Worker      <entry name="flip_x" value="4">
289*6c119a46SAndroid Build Coastguard Worker	<description summary="invert the anchor and gravity on the x axis">
290*6c119a46SAndroid Build Coastguard Worker	  Invert the anchor and gravity on the x axis if the surface is
291*6c119a46SAndroid Build Coastguard Worker	  constrained on the x axis. For example, if the left edge of the
292*6c119a46SAndroid Build Coastguard Worker	  surface is constrained, the gravity is 'left' and the anchor is
293*6c119a46SAndroid Build Coastguard Worker	  'left', change the gravity to 'right' and the anchor to 'right'.
294*6c119a46SAndroid Build Coastguard Worker
295*6c119a46SAndroid Build Coastguard Worker	  If the adjusted position also ends up being constrained, the resulting
296*6c119a46SAndroid Build Coastguard Worker	  position of the flip_x adjustment will be the one before the
297*6c119a46SAndroid Build Coastguard Worker	  adjustment.
298*6c119a46SAndroid Build Coastguard Worker	</description>
299*6c119a46SAndroid Build Coastguard Worker      </entry>
300*6c119a46SAndroid Build Coastguard Worker      <entry name="flip_y" value="8">
301*6c119a46SAndroid Build Coastguard Worker	<description summary="invert the anchor and gravity on the y axis">
302*6c119a46SAndroid Build Coastguard Worker	  Invert the anchor and gravity on the y axis if the surface is
303*6c119a46SAndroid Build Coastguard Worker	  constrained on the y axis. For example, if the bottom edge of the
304*6c119a46SAndroid Build Coastguard Worker	  surface is constrained, the gravity is 'bottom' and the anchor is
305*6c119a46SAndroid Build Coastguard Worker	  'bottom', change the gravity to 'top' and the anchor to 'top'.
306*6c119a46SAndroid Build Coastguard Worker
307*6c119a46SAndroid Build Coastguard Worker	  If the adjusted position also ends up being constrained, the resulting
308*6c119a46SAndroid Build Coastguard Worker	  position of the flip_y adjustment will be the one before the
309*6c119a46SAndroid Build Coastguard Worker	  adjustment.
310*6c119a46SAndroid Build Coastguard Worker	</description>
311*6c119a46SAndroid Build Coastguard Worker      </entry>
312*6c119a46SAndroid Build Coastguard Worker      <entry name="resize_x" value="16">
313*6c119a46SAndroid Build Coastguard Worker	<description summary="horizontally resize the surface">
314*6c119a46SAndroid Build Coastguard Worker	  Resize the surface horizontally so that it is completely
315*6c119a46SAndroid Build Coastguard Worker	  unconstrained.
316*6c119a46SAndroid Build Coastguard Worker	</description>
317*6c119a46SAndroid Build Coastguard Worker      </entry>
318*6c119a46SAndroid Build Coastguard Worker      <entry name="resize_y" value="32">
319*6c119a46SAndroid Build Coastguard Worker	<description summary="vertically resize the surface">
320*6c119a46SAndroid Build Coastguard Worker	  Resize the surface vertically so that it is completely unconstrained.
321*6c119a46SAndroid Build Coastguard Worker	</description>
322*6c119a46SAndroid Build Coastguard Worker      </entry>
323*6c119a46SAndroid Build Coastguard Worker    </enum>
324*6c119a46SAndroid Build Coastguard Worker
325*6c119a46SAndroid Build Coastguard Worker    <request name="set_constraint_adjustment">
326*6c119a46SAndroid Build Coastguard Worker      <description summary="set the adjustment to be done when constrained">
327*6c119a46SAndroid Build Coastguard Worker	Specify how the window should be positioned if the originally intended
328*6c119a46SAndroid Build Coastguard Worker	position caused the surface to be constrained, meaning at least
329*6c119a46SAndroid Build Coastguard Worker	partially outside positioning boundaries set by the compositor. The
330*6c119a46SAndroid Build Coastguard Worker	adjustment is set by constructing a bitmask describing the adjustment to
331*6c119a46SAndroid Build Coastguard Worker	be made when the surface is constrained on that axis.
332*6c119a46SAndroid Build Coastguard Worker
333*6c119a46SAndroid Build Coastguard Worker	If no bit for one axis is set, the compositor will assume that the child
334*6c119a46SAndroid Build Coastguard Worker	surface should not change its position on that axis when constrained.
335*6c119a46SAndroid Build Coastguard Worker
336*6c119a46SAndroid Build Coastguard Worker	If more than one bit for one axis is set, the order of how adjustments
337*6c119a46SAndroid Build Coastguard Worker	are applied is specified in the corresponding adjustment descriptions.
338*6c119a46SAndroid Build Coastguard Worker
339*6c119a46SAndroid Build Coastguard Worker	The default adjustment is none.
340*6c119a46SAndroid Build Coastguard Worker      </description>
341*6c119a46SAndroid Build Coastguard Worker      <arg name="constraint_adjustment" type="uint"
342*6c119a46SAndroid Build Coastguard Worker	   summary="bit mask of constraint adjustments"/>
343*6c119a46SAndroid Build Coastguard Worker    </request>
344*6c119a46SAndroid Build Coastguard Worker
345*6c119a46SAndroid Build Coastguard Worker    <request name="set_offset">
346*6c119a46SAndroid Build Coastguard Worker      <description summary="set surface position offset">
347*6c119a46SAndroid Build Coastguard Worker	Specify the surface position offset relative to the position of the
348*6c119a46SAndroid Build Coastguard Worker	anchor on the anchor rectangle and the anchor on the surface. For
349*6c119a46SAndroid Build Coastguard Worker	example if the anchor of the anchor rectangle is at (x, y), the surface
350*6c119a46SAndroid Build Coastguard Worker	has the gravity bottom|right, and the offset is (ox, oy), the calculated
351*6c119a46SAndroid Build Coastguard Worker	surface position will be (x + ox, y + oy). The offset position of the
352*6c119a46SAndroid Build Coastguard Worker	surface is the one used for constraint testing. See
353*6c119a46SAndroid Build Coastguard Worker	set_constraint_adjustment.
354*6c119a46SAndroid Build Coastguard Worker
355*6c119a46SAndroid Build Coastguard Worker	An example use case is placing a popup menu on top of a user interface
356*6c119a46SAndroid Build Coastguard Worker	element, while aligning the user interface element of the parent surface
357*6c119a46SAndroid Build Coastguard Worker	with some user interface element placed somewhere in the popup surface.
358*6c119a46SAndroid Build Coastguard Worker      </description>
359*6c119a46SAndroid Build Coastguard Worker      <arg name="x" type="int" summary="surface position x offset"/>
360*6c119a46SAndroid Build Coastguard Worker      <arg name="y" type="int" summary="surface position y offset"/>
361*6c119a46SAndroid Build Coastguard Worker    </request>
362*6c119a46SAndroid Build Coastguard Worker  </interface>
363*6c119a46SAndroid Build Coastguard Worker
364*6c119a46SAndroid Build Coastguard Worker  <interface name="zxdg_surface_v6" version="1">
365*6c119a46SAndroid Build Coastguard Worker    <description summary="desktop user interface surface base interface">
366*6c119a46SAndroid Build Coastguard Worker      An interface that may be implemented by a wl_surface, for
367*6c119a46SAndroid Build Coastguard Worker      implementations that provide a desktop-style user interface.
368*6c119a46SAndroid Build Coastguard Worker
369*6c119a46SAndroid Build Coastguard Worker      It provides a base set of functionality required to construct user
370*6c119a46SAndroid Build Coastguard Worker      interface elements requiring management by the compositor, such as
371*6c119a46SAndroid Build Coastguard Worker      toplevel windows, menus, etc. The types of functionality are split into
372*6c119a46SAndroid Build Coastguard Worker      xdg_surface roles.
373*6c119a46SAndroid Build Coastguard Worker
374*6c119a46SAndroid Build Coastguard Worker      Creating an xdg_surface does not set the role for a wl_surface. In order
375*6c119a46SAndroid Build Coastguard Worker      to map an xdg_surface, the client must create a role-specific object
376*6c119a46SAndroid Build Coastguard Worker      using, e.g., get_toplevel, get_popup. The wl_surface for any given
377*6c119a46SAndroid Build Coastguard Worker      xdg_surface can have at most one role, and may not be assigned any role
378*6c119a46SAndroid Build Coastguard Worker      not based on xdg_surface.
379*6c119a46SAndroid Build Coastguard Worker
380*6c119a46SAndroid Build Coastguard Worker      A role must be assigned before any other requests are made to the
381*6c119a46SAndroid Build Coastguard Worker      xdg_surface object.
382*6c119a46SAndroid Build Coastguard Worker
383*6c119a46SAndroid Build Coastguard Worker      The client must call wl_surface.commit on the corresponding wl_surface
384*6c119a46SAndroid Build Coastguard Worker      for the xdg_surface state to take effect.
385*6c119a46SAndroid Build Coastguard Worker
386*6c119a46SAndroid Build Coastguard Worker      Creating an xdg_surface from a wl_surface which has a buffer attached or
387*6c119a46SAndroid Build Coastguard Worker      committed is a client error, and any attempts by a client to attach or
388*6c119a46SAndroid Build Coastguard Worker      manipulate a buffer prior to the first xdg_surface.configure call must
389*6c119a46SAndroid Build Coastguard Worker      also be treated as errors.
390*6c119a46SAndroid Build Coastguard Worker
391*6c119a46SAndroid Build Coastguard Worker      For a surface to be mapped by the compositor, the following conditions
392*6c119a46SAndroid Build Coastguard Worker      must be met: (1) the client has assigned an xdg_surface based role to the
393*6c119a46SAndroid Build Coastguard Worker      surface, (2) the client has set and committed the xdg_surface state and
394*6c119a46SAndroid Build Coastguard Worker      the role dependent state to the surface and (3) the client has committed a
395*6c119a46SAndroid Build Coastguard Worker      buffer to the surface.
396*6c119a46SAndroid Build Coastguard Worker    </description>
397*6c119a46SAndroid Build Coastguard Worker
398*6c119a46SAndroid Build Coastguard Worker    <enum name="error">
399*6c119a46SAndroid Build Coastguard Worker      <entry name="not_constructed" value="1"/>
400*6c119a46SAndroid Build Coastguard Worker      <entry name="already_constructed" value="2"/>
401*6c119a46SAndroid Build Coastguard Worker      <entry name="unconfigured_buffer" value="3"/>
402*6c119a46SAndroid Build Coastguard Worker    </enum>
403*6c119a46SAndroid Build Coastguard Worker
404*6c119a46SAndroid Build Coastguard Worker    <request name="destroy" type="destructor">
405*6c119a46SAndroid Build Coastguard Worker      <description summary="destroy the xdg_surface">
406*6c119a46SAndroid Build Coastguard Worker	Destroy the xdg_surface object. An xdg_surface must only be destroyed
407*6c119a46SAndroid Build Coastguard Worker	after its role object has been destroyed.
408*6c119a46SAndroid Build Coastguard Worker      </description>
409*6c119a46SAndroid Build Coastguard Worker    </request>
410*6c119a46SAndroid Build Coastguard Worker
411*6c119a46SAndroid Build Coastguard Worker    <request name="get_toplevel">
412*6c119a46SAndroid Build Coastguard Worker      <description summary="assign the xdg_toplevel surface role">
413*6c119a46SAndroid Build Coastguard Worker	This creates an xdg_toplevel object for the given xdg_surface and gives
414*6c119a46SAndroid Build Coastguard Worker	the associated wl_surface the xdg_toplevel role.
415*6c119a46SAndroid Build Coastguard Worker
416*6c119a46SAndroid Build Coastguard Worker	See the documentation of xdg_toplevel for more details about what an
417*6c119a46SAndroid Build Coastguard Worker	xdg_toplevel is and how it is used.
418*6c119a46SAndroid Build Coastguard Worker      </description>
419*6c119a46SAndroid Build Coastguard Worker      <arg name="id" type="new_id" interface="zxdg_toplevel_v6"/>
420*6c119a46SAndroid Build Coastguard Worker    </request>
421*6c119a46SAndroid Build Coastguard Worker
422*6c119a46SAndroid Build Coastguard Worker    <request name="get_popup">
423*6c119a46SAndroid Build Coastguard Worker      <description summary="assign the xdg_popup surface role">
424*6c119a46SAndroid Build Coastguard Worker	This creates an xdg_popup object for the given xdg_surface and gives the
425*6c119a46SAndroid Build Coastguard Worker	associated wl_surface the xdg_popup role.
426*6c119a46SAndroid Build Coastguard Worker
427*6c119a46SAndroid Build Coastguard Worker	See the documentation of xdg_popup for more details about what an
428*6c119a46SAndroid Build Coastguard Worker	xdg_popup is and how it is used.
429*6c119a46SAndroid Build Coastguard Worker      </description>
430*6c119a46SAndroid Build Coastguard Worker      <arg name="id" type="new_id" interface="zxdg_popup_v6"/>
431*6c119a46SAndroid Build Coastguard Worker      <arg name="parent" type="object" interface="zxdg_surface_v6"/>
432*6c119a46SAndroid Build Coastguard Worker      <arg name="positioner" type="object" interface="zxdg_positioner_v6"/>
433*6c119a46SAndroid Build Coastguard Worker    </request>
434*6c119a46SAndroid Build Coastguard Worker
435*6c119a46SAndroid Build Coastguard Worker    <request name="set_window_geometry">
436*6c119a46SAndroid Build Coastguard Worker      <description summary="set the new window geometry">
437*6c119a46SAndroid Build Coastguard Worker	The window geometry of a surface is its "visible bounds" from the
438*6c119a46SAndroid Build Coastguard Worker	user's perspective. Client-side decorations often have invisible
439*6c119a46SAndroid Build Coastguard Worker	portions like drop-shadows which should be ignored for the
440*6c119a46SAndroid Build Coastguard Worker	purposes of aligning, placing and constraining windows.
441*6c119a46SAndroid Build Coastguard Worker
442*6c119a46SAndroid Build Coastguard Worker	The window geometry is double buffered, and will be applied at the
443*6c119a46SAndroid Build Coastguard Worker	time wl_surface.commit of the corresponding wl_surface is called.
444*6c119a46SAndroid Build Coastguard Worker
445*6c119a46SAndroid Build Coastguard Worker	Once the window geometry of the surface is set, it is not possible to
446*6c119a46SAndroid Build Coastguard Worker	unset it, and it will remain the same until set_window_geometry is
447*6c119a46SAndroid Build Coastguard Worker	called again, even if a new subsurface or buffer is attached.
448*6c119a46SAndroid Build Coastguard Worker
449*6c119a46SAndroid Build Coastguard Worker	If never set, the value is the full bounds of the surface,
450*6c119a46SAndroid Build Coastguard Worker	including any subsurfaces. This updates dynamically on every
451*6c119a46SAndroid Build Coastguard Worker	commit. This unset is meant for extremely simple clients.
452*6c119a46SAndroid Build Coastguard Worker
453*6c119a46SAndroid Build Coastguard Worker	The arguments are given in the surface-local coordinate space of
454*6c119a46SAndroid Build Coastguard Worker	the wl_surface associated with this xdg_surface.
455*6c119a46SAndroid Build Coastguard Worker
456*6c119a46SAndroid Build Coastguard Worker	The width and height must be greater than zero. Setting an invalid size
457*6c119a46SAndroid Build Coastguard Worker	will raise an error. When applied, the effective window geometry will be
458*6c119a46SAndroid Build Coastguard Worker	the set window geometry clamped to the bounding rectangle of the
459*6c119a46SAndroid Build Coastguard Worker	combined geometry of the surface of the xdg_surface and the associated
460*6c119a46SAndroid Build Coastguard Worker	subsurfaces.
461*6c119a46SAndroid Build Coastguard Worker      </description>
462*6c119a46SAndroid Build Coastguard Worker      <arg name="x" type="int"/>
463*6c119a46SAndroid Build Coastguard Worker      <arg name="y" type="int"/>
464*6c119a46SAndroid Build Coastguard Worker      <arg name="width" type="int"/>
465*6c119a46SAndroid Build Coastguard Worker      <arg name="height" type="int"/>
466*6c119a46SAndroid Build Coastguard Worker    </request>
467*6c119a46SAndroid Build Coastguard Worker
468*6c119a46SAndroid Build Coastguard Worker    <request name="ack_configure">
469*6c119a46SAndroid Build Coastguard Worker      <description summary="ack a configure event">
470*6c119a46SAndroid Build Coastguard Worker	When a configure event is received, if a client commits the
471*6c119a46SAndroid Build Coastguard Worker	surface in response to the configure event, then the client
472*6c119a46SAndroid Build Coastguard Worker	must make an ack_configure request sometime before the commit
473*6c119a46SAndroid Build Coastguard Worker	request, passing along the serial of the configure event.
474*6c119a46SAndroid Build Coastguard Worker
475*6c119a46SAndroid Build Coastguard Worker	For instance, for toplevel surfaces the compositor might use this
476*6c119a46SAndroid Build Coastguard Worker	information to move a surface to the top left only when the client has
477*6c119a46SAndroid Build Coastguard Worker	drawn itself for the maximized or fullscreen state.
478*6c119a46SAndroid Build Coastguard Worker
479*6c119a46SAndroid Build Coastguard Worker	If the client receives multiple configure events before it
480*6c119a46SAndroid Build Coastguard Worker	can respond to one, it only has to ack the last configure event.
481*6c119a46SAndroid Build Coastguard Worker
482*6c119a46SAndroid Build Coastguard Worker	A client is not required to commit immediately after sending
483*6c119a46SAndroid Build Coastguard Worker	an ack_configure request - it may even ack_configure several times
484*6c119a46SAndroid Build Coastguard Worker	before its next surface commit.
485*6c119a46SAndroid Build Coastguard Worker
486*6c119a46SAndroid Build Coastguard Worker	A client may send multiple ack_configure requests before committing, but
487*6c119a46SAndroid Build Coastguard Worker	only the last request sent before a commit indicates which configure
488*6c119a46SAndroid Build Coastguard Worker	event the client really is responding to.
489*6c119a46SAndroid Build Coastguard Worker      </description>
490*6c119a46SAndroid Build Coastguard Worker      <arg name="serial" type="uint" summary="the serial from the configure event"/>
491*6c119a46SAndroid Build Coastguard Worker    </request>
492*6c119a46SAndroid Build Coastguard Worker
493*6c119a46SAndroid Build Coastguard Worker    <event name="configure">
494*6c119a46SAndroid Build Coastguard Worker      <description summary="suggest a surface change">
495*6c119a46SAndroid Build Coastguard Worker	The configure event marks the end of a configure sequence. A configure
496*6c119a46SAndroid Build Coastguard Worker	sequence is a set of one or more events configuring the state of the
497*6c119a46SAndroid Build Coastguard Worker	xdg_surface, including the final xdg_surface.configure event.
498*6c119a46SAndroid Build Coastguard Worker
499*6c119a46SAndroid Build Coastguard Worker	Where applicable, xdg_surface surface roles will during a configure
500*6c119a46SAndroid Build Coastguard Worker	sequence extend this event as a latched state sent as events before the
501*6c119a46SAndroid Build Coastguard Worker	xdg_surface.configure event. Such events should be considered to make up
502*6c119a46SAndroid Build Coastguard Worker	a set of atomically applied configuration states, where the
503*6c119a46SAndroid Build Coastguard Worker	xdg_surface.configure commits the accumulated state.
504*6c119a46SAndroid Build Coastguard Worker
505*6c119a46SAndroid Build Coastguard Worker	Clients should arrange their surface for the new states, and then send
506*6c119a46SAndroid Build Coastguard Worker	an ack_configure request with the serial sent in this configure event at
507*6c119a46SAndroid Build Coastguard Worker	some point before committing the new surface.
508*6c119a46SAndroid Build Coastguard Worker
509*6c119a46SAndroid Build Coastguard Worker	If the client receives multiple configure events before it can respond
510*6c119a46SAndroid Build Coastguard Worker	to one, it is free to discard all but the last event it received.
511*6c119a46SAndroid Build Coastguard Worker      </description>
512*6c119a46SAndroid Build Coastguard Worker      <arg name="serial" type="uint" summary="serial of the configure event"/>
513*6c119a46SAndroid Build Coastguard Worker    </event>
514*6c119a46SAndroid Build Coastguard Worker  </interface>
515*6c119a46SAndroid Build Coastguard Worker
516*6c119a46SAndroid Build Coastguard Worker  <interface name="zxdg_toplevel_v6" version="1">
517*6c119a46SAndroid Build Coastguard Worker    <description summary="toplevel surface">
518*6c119a46SAndroid Build Coastguard Worker      This interface defines an xdg_surface role which allows a surface to,
519*6c119a46SAndroid Build Coastguard Worker      among other things, set window-like properties such as maximize,
520*6c119a46SAndroid Build Coastguard Worker      fullscreen, and minimize, set application-specific metadata like title and
521*6c119a46SAndroid Build Coastguard Worker      id, and well as trigger user interactive operations such as interactive
522*6c119a46SAndroid Build Coastguard Worker      resize and move.
523*6c119a46SAndroid Build Coastguard Worker    </description>
524*6c119a46SAndroid Build Coastguard Worker
525*6c119a46SAndroid Build Coastguard Worker    <request name="destroy" type="destructor">
526*6c119a46SAndroid Build Coastguard Worker      <description summary="destroy the xdg_toplevel">
527*6c119a46SAndroid Build Coastguard Worker	Unmap and destroy the window. The window will be effectively
528*6c119a46SAndroid Build Coastguard Worker	hidden from the user's point of view, and all state like
529*6c119a46SAndroid Build Coastguard Worker	maximization, fullscreen, and so on, will be lost.
530*6c119a46SAndroid Build Coastguard Worker      </description>
531*6c119a46SAndroid Build Coastguard Worker    </request>
532*6c119a46SAndroid Build Coastguard Worker
533*6c119a46SAndroid Build Coastguard Worker    <request name="set_parent">
534*6c119a46SAndroid Build Coastguard Worker      <description summary="set the parent of this surface">
535*6c119a46SAndroid Build Coastguard Worker	Set the "parent" of this surface. This window should be stacked
536*6c119a46SAndroid Build Coastguard Worker	above a parent. The parent surface must be mapped as long as this
537*6c119a46SAndroid Build Coastguard Worker	surface is mapped.
538*6c119a46SAndroid Build Coastguard Worker
539*6c119a46SAndroid Build Coastguard Worker	Parent windows should be set on dialogs, toolboxes, or other
540*6c119a46SAndroid Build Coastguard Worker	"auxiliary" surfaces, so that the parent is raised when the dialog
541*6c119a46SAndroid Build Coastguard Worker	is raised.
542*6c119a46SAndroid Build Coastguard Worker      </description>
543*6c119a46SAndroid Build Coastguard Worker      <arg name="parent" type="object" interface="zxdg_toplevel_v6" allow-null="true"/>
544*6c119a46SAndroid Build Coastguard Worker    </request>
545*6c119a46SAndroid Build Coastguard Worker
546*6c119a46SAndroid Build Coastguard Worker    <request name="set_title">
547*6c119a46SAndroid Build Coastguard Worker      <description summary="set surface title">
548*6c119a46SAndroid Build Coastguard Worker	Set a short title for the surface.
549*6c119a46SAndroid Build Coastguard Worker
550*6c119a46SAndroid Build Coastguard Worker	This string may be used to identify the surface in a task bar,
551*6c119a46SAndroid Build Coastguard Worker	window list, or other user interface elements provided by the
552*6c119a46SAndroid Build Coastguard Worker	compositor.
553*6c119a46SAndroid Build Coastguard Worker
554*6c119a46SAndroid Build Coastguard Worker	The string must be encoded in UTF-8.
555*6c119a46SAndroid Build Coastguard Worker      </description>
556*6c119a46SAndroid Build Coastguard Worker      <arg name="title" type="string"/>
557*6c119a46SAndroid Build Coastguard Worker    </request>
558*6c119a46SAndroid Build Coastguard Worker
559*6c119a46SAndroid Build Coastguard Worker    <request name="set_app_id">
560*6c119a46SAndroid Build Coastguard Worker      <description summary="set application ID">
561*6c119a46SAndroid Build Coastguard Worker	Set an application identifier for the surface.
562*6c119a46SAndroid Build Coastguard Worker
563*6c119a46SAndroid Build Coastguard Worker	The app ID identifies the general class of applications to which
564*6c119a46SAndroid Build Coastguard Worker	the surface belongs. The compositor can use this to group multiple
565*6c119a46SAndroid Build Coastguard Worker	surfaces together, or to determine how to launch a new application.
566*6c119a46SAndroid Build Coastguard Worker
567*6c119a46SAndroid Build Coastguard Worker	For D-Bus activatable applications, the app ID is used as the D-Bus
568*6c119a46SAndroid Build Coastguard Worker	service name.
569*6c119a46SAndroid Build Coastguard Worker
570*6c119a46SAndroid Build Coastguard Worker	The compositor shell will try to group application surfaces together
571*6c119a46SAndroid Build Coastguard Worker	by their app ID. As a best practice, it is suggested to select app
572*6c119a46SAndroid Build Coastguard Worker	ID's that match the basename of the application's .desktop file.
573*6c119a46SAndroid Build Coastguard Worker	For example, "org.freedesktop.FooViewer" where the .desktop file is
574*6c119a46SAndroid Build Coastguard Worker	"org.freedesktop.FooViewer.desktop".
575*6c119a46SAndroid Build Coastguard Worker
576*6c119a46SAndroid Build Coastguard Worker	See the desktop-entry specification [0] for more details on
577*6c119a46SAndroid Build Coastguard Worker	application identifiers and how they relate to well-known D-Bus
578*6c119a46SAndroid Build Coastguard Worker	names and .desktop files.
579*6c119a46SAndroid Build Coastguard Worker
580*6c119a46SAndroid Build Coastguard Worker	[0] http://standards.freedesktop.org/desktop-entry-spec/
581*6c119a46SAndroid Build Coastguard Worker      </description>
582*6c119a46SAndroid Build Coastguard Worker      <arg name="app_id" type="string"/>
583*6c119a46SAndroid Build Coastguard Worker    </request>
584*6c119a46SAndroid Build Coastguard Worker
585*6c119a46SAndroid Build Coastguard Worker    <request name="show_window_menu">
586*6c119a46SAndroid Build Coastguard Worker      <description summary="show the window menu">
587*6c119a46SAndroid Build Coastguard Worker	Clients implementing client-side decorations might want to show
588*6c119a46SAndroid Build Coastguard Worker	a context menu when right-clicking on the decorations, giving the
589*6c119a46SAndroid Build Coastguard Worker	user a menu that they can use to maximize or minimize the window.
590*6c119a46SAndroid Build Coastguard Worker
591*6c119a46SAndroid Build Coastguard Worker	This request asks the compositor to pop up such a window menu at
592*6c119a46SAndroid Build Coastguard Worker	the given position, relative to the local surface coordinates of
593*6c119a46SAndroid Build Coastguard Worker	the parent surface. There are no guarantees as to what menu items
594*6c119a46SAndroid Build Coastguard Worker	the window menu contains.
595*6c119a46SAndroid Build Coastguard Worker
596*6c119a46SAndroid Build Coastguard Worker	This request must be used in response to some sort of user action
597*6c119a46SAndroid Build Coastguard Worker	like a button press, key press, or touch down event.
598*6c119a46SAndroid Build Coastguard Worker      </description>
599*6c119a46SAndroid Build Coastguard Worker      <arg name="seat" type="object" interface="wl_seat" summary="the wl_seat of the user event"/>
600*6c119a46SAndroid Build Coastguard Worker      <arg name="serial" type="uint" summary="the serial of the user event"/>
601*6c119a46SAndroid Build Coastguard Worker      <arg name="x" type="int" summary="the x position to pop up the window menu at"/>
602*6c119a46SAndroid Build Coastguard Worker      <arg name="y" type="int" summary="the y position to pop up the window menu at"/>
603*6c119a46SAndroid Build Coastguard Worker    </request>
604*6c119a46SAndroid Build Coastguard Worker
605*6c119a46SAndroid Build Coastguard Worker    <request name="move">
606*6c119a46SAndroid Build Coastguard Worker      <description summary="start an interactive move">
607*6c119a46SAndroid Build Coastguard Worker	Start an interactive, user-driven move of the surface.
608*6c119a46SAndroid Build Coastguard Worker
609*6c119a46SAndroid Build Coastguard Worker	This request must be used in response to some sort of user action
610*6c119a46SAndroid Build Coastguard Worker	like a button press, key press, or touch down event. The passed
611*6c119a46SAndroid Build Coastguard Worker	serial is used to determine the type of interactive move (touch,
612*6c119a46SAndroid Build Coastguard Worker	pointer, etc).
613*6c119a46SAndroid Build Coastguard Worker
614*6c119a46SAndroid Build Coastguard Worker	The server may ignore move requests depending on the state of
615*6c119a46SAndroid Build Coastguard Worker	the surface (e.g. fullscreen or maximized), or if the passed serial
616*6c119a46SAndroid Build Coastguard Worker	is no longer valid.
617*6c119a46SAndroid Build Coastguard Worker
618*6c119a46SAndroid Build Coastguard Worker	If triggered, the surface will lose the focus of the device
619*6c119a46SAndroid Build Coastguard Worker	(wl_pointer, wl_touch, etc) used for the move. It is up to the
620*6c119a46SAndroid Build Coastguard Worker	compositor to visually indicate that the move is taking place, such as
621*6c119a46SAndroid Build Coastguard Worker	updating a pointer cursor, during the move. There is no guarantee
622*6c119a46SAndroid Build Coastguard Worker	that the device focus will return when the move is completed.
623*6c119a46SAndroid Build Coastguard Worker      </description>
624*6c119a46SAndroid Build Coastguard Worker      <arg name="seat" type="object" interface="wl_seat" summary="the wl_seat of the user event"/>
625*6c119a46SAndroid Build Coastguard Worker      <arg name="serial" type="uint" summary="the serial of the user event"/>
626*6c119a46SAndroid Build Coastguard Worker    </request>
627*6c119a46SAndroid Build Coastguard Worker
628*6c119a46SAndroid Build Coastguard Worker    <enum name="resize_edge">
629*6c119a46SAndroid Build Coastguard Worker      <description summary="edge values for resizing">
630*6c119a46SAndroid Build Coastguard Worker	These values are used to indicate which edge of a surface
631*6c119a46SAndroid Build Coastguard Worker	is being dragged in a resize operation.
632*6c119a46SAndroid Build Coastguard Worker      </description>
633*6c119a46SAndroid Build Coastguard Worker      <entry name="none" value="0"/>
634*6c119a46SAndroid Build Coastguard Worker      <entry name="top" value="1"/>
635*6c119a46SAndroid Build Coastguard Worker      <entry name="bottom" value="2"/>
636*6c119a46SAndroid Build Coastguard Worker      <entry name="left" value="4"/>
637*6c119a46SAndroid Build Coastguard Worker      <entry name="top_left" value="5"/>
638*6c119a46SAndroid Build Coastguard Worker      <entry name="bottom_left" value="6"/>
639*6c119a46SAndroid Build Coastguard Worker      <entry name="right" value="8"/>
640*6c119a46SAndroid Build Coastguard Worker      <entry name="top_right" value="9"/>
641*6c119a46SAndroid Build Coastguard Worker      <entry name="bottom_right" value="10"/>
642*6c119a46SAndroid Build Coastguard Worker    </enum>
643*6c119a46SAndroid Build Coastguard Worker
644*6c119a46SAndroid Build Coastguard Worker    <request name="resize">
645*6c119a46SAndroid Build Coastguard Worker      <description summary="start an interactive resize">
646*6c119a46SAndroid Build Coastguard Worker	Start a user-driven, interactive resize of the surface.
647*6c119a46SAndroid Build Coastguard Worker
648*6c119a46SAndroid Build Coastguard Worker	This request must be used in response to some sort of user action
649*6c119a46SAndroid Build Coastguard Worker	like a button press, key press, or touch down event. The passed
650*6c119a46SAndroid Build Coastguard Worker	serial is used to determine the type of interactive resize (touch,
651*6c119a46SAndroid Build Coastguard Worker	pointer, etc).
652*6c119a46SAndroid Build Coastguard Worker
653*6c119a46SAndroid Build Coastguard Worker	The server may ignore resize requests depending on the state of
654*6c119a46SAndroid Build Coastguard Worker	the surface (e.g. fullscreen or maximized).
655*6c119a46SAndroid Build Coastguard Worker
656*6c119a46SAndroid Build Coastguard Worker	If triggered, the client will receive configure events with the
657*6c119a46SAndroid Build Coastguard Worker	"resize" state enum value and the expected sizes. See the "resize"
658*6c119a46SAndroid Build Coastguard Worker	enum value for more details about what is required. The client
659*6c119a46SAndroid Build Coastguard Worker	must also acknowledge configure events using "ack_configure". After
660*6c119a46SAndroid Build Coastguard Worker	the resize is completed, the client will receive another "configure"
661*6c119a46SAndroid Build Coastguard Worker	event without the resize state.
662*6c119a46SAndroid Build Coastguard Worker
663*6c119a46SAndroid Build Coastguard Worker	If triggered, the surface also will lose the focus of the device
664*6c119a46SAndroid Build Coastguard Worker	(wl_pointer, wl_touch, etc) used for the resize. It is up to the
665*6c119a46SAndroid Build Coastguard Worker	compositor to visually indicate that the resize is taking place,
666*6c119a46SAndroid Build Coastguard Worker	such as updating a pointer cursor, during the resize. There is no
667*6c119a46SAndroid Build Coastguard Worker	guarantee that the device focus will return when the resize is
668*6c119a46SAndroid Build Coastguard Worker	completed.
669*6c119a46SAndroid Build Coastguard Worker
670*6c119a46SAndroid Build Coastguard Worker	The edges parameter specifies how the surface should be resized,
671*6c119a46SAndroid Build Coastguard Worker	and is one of the values of the resize_edge enum. The compositor
672*6c119a46SAndroid Build Coastguard Worker	may use this information to update the surface position for
673*6c119a46SAndroid Build Coastguard Worker	example when dragging the top left corner. The compositor may also
674*6c119a46SAndroid Build Coastguard Worker	use this information to adapt its behavior, e.g. choose an
675*6c119a46SAndroid Build Coastguard Worker	appropriate cursor image.
676*6c119a46SAndroid Build Coastguard Worker      </description>
677*6c119a46SAndroid Build Coastguard Worker      <arg name="seat" type="object" interface="wl_seat" summary="the wl_seat of the user event"/>
678*6c119a46SAndroid Build Coastguard Worker      <arg name="serial" type="uint" summary="the serial of the user event"/>
679*6c119a46SAndroid Build Coastguard Worker      <arg name="edges" type="uint" summary="which edge or corner is being dragged"/>
680*6c119a46SAndroid Build Coastguard Worker    </request>
681*6c119a46SAndroid Build Coastguard Worker
682*6c119a46SAndroid Build Coastguard Worker    <enum name="state">
683*6c119a46SAndroid Build Coastguard Worker      <description summary="types of state on the surface">
684*6c119a46SAndroid Build Coastguard Worker	The different state values used on the surface. This is designed for
685*6c119a46SAndroid Build Coastguard Worker	state values like maximized, fullscreen. It is paired with the
686*6c119a46SAndroid Build Coastguard Worker	configure event to ensure that both the client and the compositor
687*6c119a46SAndroid Build Coastguard Worker	setting the state can be synchronized.
688*6c119a46SAndroid Build Coastguard Worker
689*6c119a46SAndroid Build Coastguard Worker	States set in this way are double-buffered. They will get applied on
690*6c119a46SAndroid Build Coastguard Worker	the next commit.
691*6c119a46SAndroid Build Coastguard Worker      </description>
692*6c119a46SAndroid Build Coastguard Worker      <entry name="maximized" value="1" summary="the surface is maximized">
693*6c119a46SAndroid Build Coastguard Worker	<description summary="the surface is maximized">
694*6c119a46SAndroid Build Coastguard Worker	  The surface is maximized. The window geometry specified in the configure
695*6c119a46SAndroid Build Coastguard Worker	  event must be obeyed by the client.
696*6c119a46SAndroid Build Coastguard Worker	</description>
697*6c119a46SAndroid Build Coastguard Worker      </entry>
698*6c119a46SAndroid Build Coastguard Worker      <entry name="fullscreen" value="2" summary="the surface is fullscreen">
699*6c119a46SAndroid Build Coastguard Worker	<description summary="the surface is fullscreen">
700*6c119a46SAndroid Build Coastguard Worker	  The surface is fullscreen. The window geometry specified in the configure
701*6c119a46SAndroid Build Coastguard Worker	  event must be obeyed by the client.
702*6c119a46SAndroid Build Coastguard Worker	</description>
703*6c119a46SAndroid Build Coastguard Worker      </entry>
704*6c119a46SAndroid Build Coastguard Worker      <entry name="resizing" value="3" summary="the surface is being resized">
705*6c119a46SAndroid Build Coastguard Worker	<description summary="the surface is being resized">
706*6c119a46SAndroid Build Coastguard Worker	  The surface is being resized. The window geometry specified in the
707*6c119a46SAndroid Build Coastguard Worker	  configure event is a maximum; the client cannot resize beyond it.
708*6c119a46SAndroid Build Coastguard Worker	  Clients that have aspect ratio or cell sizing configuration can use
709*6c119a46SAndroid Build Coastguard Worker	  a smaller size, however.
710*6c119a46SAndroid Build Coastguard Worker	</description>
711*6c119a46SAndroid Build Coastguard Worker      </entry>
712*6c119a46SAndroid Build Coastguard Worker      <entry name="activated" value="4" summary="the surface is now activated">
713*6c119a46SAndroid Build Coastguard Worker	<description summary="the surface is now activated">
714*6c119a46SAndroid Build Coastguard Worker	  Client window decorations should be painted as if the window is
715*6c119a46SAndroid Build Coastguard Worker	  active. Do not assume this means that the window actually has
716*6c119a46SAndroid Build Coastguard Worker	  keyboard or pointer focus.
717*6c119a46SAndroid Build Coastguard Worker	</description>
718*6c119a46SAndroid Build Coastguard Worker      </entry>
719*6c119a46SAndroid Build Coastguard Worker    </enum>
720*6c119a46SAndroid Build Coastguard Worker
721*6c119a46SAndroid Build Coastguard Worker    <request name="set_max_size">
722*6c119a46SAndroid Build Coastguard Worker      <description summary="set the maximum size">
723*6c119a46SAndroid Build Coastguard Worker	Set a maximum size for the window.
724*6c119a46SAndroid Build Coastguard Worker
725*6c119a46SAndroid Build Coastguard Worker	The client can specify a maximum size so that the compositor does
726*6c119a46SAndroid Build Coastguard Worker	not try to configure the window beyond this size.
727*6c119a46SAndroid Build Coastguard Worker
728*6c119a46SAndroid Build Coastguard Worker	The width and height arguments are in window geometry coordinates.
729*6c119a46SAndroid Build Coastguard Worker	See xdg_surface.set_window_geometry.
730*6c119a46SAndroid Build Coastguard Worker
731*6c119a46SAndroid Build Coastguard Worker	Values set in this way are double-buffered. They will get applied
732*6c119a46SAndroid Build Coastguard Worker	on the next commit.
733*6c119a46SAndroid Build Coastguard Worker
734*6c119a46SAndroid Build Coastguard Worker	The compositor can use this information to allow or disallow
735*6c119a46SAndroid Build Coastguard Worker	different states like maximize or fullscreen and draw accurate
736*6c119a46SAndroid Build Coastguard Worker	animations.
737*6c119a46SAndroid Build Coastguard Worker
738*6c119a46SAndroid Build Coastguard Worker	Similarly, a tiling window manager may use this information to
739*6c119a46SAndroid Build Coastguard Worker	place and resize client windows in a more effective way.
740*6c119a46SAndroid Build Coastguard Worker
741*6c119a46SAndroid Build Coastguard Worker	The client should not rely on the compositor to obey the maximum
742*6c119a46SAndroid Build Coastguard Worker	size. The compositor may decide to ignore the values set by the
743*6c119a46SAndroid Build Coastguard Worker	client and request a larger size.
744*6c119a46SAndroid Build Coastguard Worker
745*6c119a46SAndroid Build Coastguard Worker	If never set, or a value of zero in the request, means that the
746*6c119a46SAndroid Build Coastguard Worker	client has no expected maximum size in the given dimension.
747*6c119a46SAndroid Build Coastguard Worker	As a result, a client wishing to reset the maximum size
748*6c119a46SAndroid Build Coastguard Worker	to an unspecified state can use zero for width and height in the
749*6c119a46SAndroid Build Coastguard Worker	request.
750*6c119a46SAndroid Build Coastguard Worker
751*6c119a46SAndroid Build Coastguard Worker	Requesting a maximum size to be smaller than the minimum size of
752*6c119a46SAndroid Build Coastguard Worker	a surface is illegal and will result in a protocol error.
753*6c119a46SAndroid Build Coastguard Worker
754*6c119a46SAndroid Build Coastguard Worker	The width and height must be greater than or equal to zero. Using
755*6c119a46SAndroid Build Coastguard Worker	strictly negative values for width and height will result in a
756*6c119a46SAndroid Build Coastguard Worker	protocol error.
757*6c119a46SAndroid Build Coastguard Worker      </description>
758*6c119a46SAndroid Build Coastguard Worker      <arg name="width" type="int"/>
759*6c119a46SAndroid Build Coastguard Worker      <arg name="height" type="int"/>
760*6c119a46SAndroid Build Coastguard Worker    </request>
761*6c119a46SAndroid Build Coastguard Worker
762*6c119a46SAndroid Build Coastguard Worker    <request name="set_min_size">
763*6c119a46SAndroid Build Coastguard Worker      <description summary="set the minimum size">
764*6c119a46SAndroid Build Coastguard Worker	Set a minimum size for the window.
765*6c119a46SAndroid Build Coastguard Worker
766*6c119a46SAndroid Build Coastguard Worker	The client can specify a minimum size so that the compositor does
767*6c119a46SAndroid Build Coastguard Worker	not try to configure the window below this size.
768*6c119a46SAndroid Build Coastguard Worker
769*6c119a46SAndroid Build Coastguard Worker	The width and height arguments are in window geometry coordinates.
770*6c119a46SAndroid Build Coastguard Worker	See xdg_surface.set_window_geometry.
771*6c119a46SAndroid Build Coastguard Worker
772*6c119a46SAndroid Build Coastguard Worker	Values set in this way are double-buffered. They will get applied
773*6c119a46SAndroid Build Coastguard Worker	on the next commit.
774*6c119a46SAndroid Build Coastguard Worker
775*6c119a46SAndroid Build Coastguard Worker	The compositor can use this information to allow or disallow
776*6c119a46SAndroid Build Coastguard Worker	different states like maximize or fullscreen and draw accurate
777*6c119a46SAndroid Build Coastguard Worker	animations.
778*6c119a46SAndroid Build Coastguard Worker
779*6c119a46SAndroid Build Coastguard Worker	Similarly, a tiling window manager may use this information to
780*6c119a46SAndroid Build Coastguard Worker	place and resize client windows in a more effective way.
781*6c119a46SAndroid Build Coastguard Worker
782*6c119a46SAndroid Build Coastguard Worker	The client should not rely on the compositor to obey the minimum
783*6c119a46SAndroid Build Coastguard Worker	size. The compositor may decide to ignore the values set by the
784*6c119a46SAndroid Build Coastguard Worker	client and request a smaller size.
785*6c119a46SAndroid Build Coastguard Worker
786*6c119a46SAndroid Build Coastguard Worker	If never set, or a value of zero in the request, means that the
787*6c119a46SAndroid Build Coastguard Worker	client has no expected minimum size in the given dimension.
788*6c119a46SAndroid Build Coastguard Worker	As a result, a client wishing to reset the minimum size
789*6c119a46SAndroid Build Coastguard Worker	to an unspecified state can use zero for width and height in the
790*6c119a46SAndroid Build Coastguard Worker	request.
791*6c119a46SAndroid Build Coastguard Worker
792*6c119a46SAndroid Build Coastguard Worker	Requesting a minimum size to be larger than the maximum size of
793*6c119a46SAndroid Build Coastguard Worker	a surface is illegal and will result in a protocol error.
794*6c119a46SAndroid Build Coastguard Worker
795*6c119a46SAndroid Build Coastguard Worker	The width and height must be greater than or equal to zero. Using
796*6c119a46SAndroid Build Coastguard Worker	strictly negative values for width and height will result in a
797*6c119a46SAndroid Build Coastguard Worker	protocol error.
798*6c119a46SAndroid Build Coastguard Worker      </description>
799*6c119a46SAndroid Build Coastguard Worker      <arg name="width" type="int"/>
800*6c119a46SAndroid Build Coastguard Worker      <arg name="height" type="int"/>
801*6c119a46SAndroid Build Coastguard Worker    </request>
802*6c119a46SAndroid Build Coastguard Worker
803*6c119a46SAndroid Build Coastguard Worker    <request name="set_maximized">
804*6c119a46SAndroid Build Coastguard Worker      <description summary="maximize the window">
805*6c119a46SAndroid Build Coastguard Worker	Maximize the surface.
806*6c119a46SAndroid Build Coastguard Worker
807*6c119a46SAndroid Build Coastguard Worker	After requesting that the surface should be maximized, the compositor
808*6c119a46SAndroid Build Coastguard Worker	will respond by emitting a configure event with the "maximized" state
809*6c119a46SAndroid Build Coastguard Worker	and the required window geometry. The client should then update its
810*6c119a46SAndroid Build Coastguard Worker	content, drawing it in a maximized state, i.e. without shadow or other
811*6c119a46SAndroid Build Coastguard Worker	decoration outside of the window geometry. The client must also
812*6c119a46SAndroid Build Coastguard Worker	acknowledge the configure when committing the new content (see
813*6c119a46SAndroid Build Coastguard Worker	ack_configure).
814*6c119a46SAndroid Build Coastguard Worker
815*6c119a46SAndroid Build Coastguard Worker	It is up to the compositor to decide how and where to maximize the
816*6c119a46SAndroid Build Coastguard Worker	surface, for example which output and what region of the screen should
817*6c119a46SAndroid Build Coastguard Worker	be used.
818*6c119a46SAndroid Build Coastguard Worker
819*6c119a46SAndroid Build Coastguard Worker	If the surface was already maximized, the compositor will still emit
820*6c119a46SAndroid Build Coastguard Worker	a configure event with the "maximized" state.
821*6c119a46SAndroid Build Coastguard Worker      </description>
822*6c119a46SAndroid Build Coastguard Worker    </request>
823*6c119a46SAndroid Build Coastguard Worker
824*6c119a46SAndroid Build Coastguard Worker    <request name="unset_maximized">
825*6c119a46SAndroid Build Coastguard Worker      <description summary="unmaximize the window">
826*6c119a46SAndroid Build Coastguard Worker	Unmaximize the surface.
827*6c119a46SAndroid Build Coastguard Worker
828*6c119a46SAndroid Build Coastguard Worker	After requesting that the surface should be unmaximized, the compositor
829*6c119a46SAndroid Build Coastguard Worker	will respond by emitting a configure event without the "maximized"
830*6c119a46SAndroid Build Coastguard Worker	state. If available, the compositor will include the window geometry
831*6c119a46SAndroid Build Coastguard Worker	dimensions the window had prior to being maximized in the configure
832*6c119a46SAndroid Build Coastguard Worker	request. The client must then update its content, drawing it in a
833*6c119a46SAndroid Build Coastguard Worker	regular state, i.e. potentially with shadow, etc. The client must also
834*6c119a46SAndroid Build Coastguard Worker	acknowledge the configure when committing the new content (see
835*6c119a46SAndroid Build Coastguard Worker	ack_configure).
836*6c119a46SAndroid Build Coastguard Worker
837*6c119a46SAndroid Build Coastguard Worker	It is up to the compositor to position the surface after it was
838*6c119a46SAndroid Build Coastguard Worker	unmaximized; usually the position the surface had before maximizing, if
839*6c119a46SAndroid Build Coastguard Worker	applicable.
840*6c119a46SAndroid Build Coastguard Worker
841*6c119a46SAndroid Build Coastguard Worker	If the surface was already not maximized, the compositor will still
842*6c119a46SAndroid Build Coastguard Worker	emit a configure event without the "maximized" state.
843*6c119a46SAndroid Build Coastguard Worker      </description>
844*6c119a46SAndroid Build Coastguard Worker    </request>
845*6c119a46SAndroid Build Coastguard Worker
846*6c119a46SAndroid Build Coastguard Worker    <request name="set_fullscreen">
847*6c119a46SAndroid Build Coastguard Worker      <description summary="set the window as fullscreen on a monitor">
848*6c119a46SAndroid Build Coastguard Worker	Make the surface fullscreen.
849*6c119a46SAndroid Build Coastguard Worker
850*6c119a46SAndroid Build Coastguard Worker	You can specify an output that you would prefer to be fullscreen.
851*6c119a46SAndroid Build Coastguard Worker	If this value is NULL, it's up to the compositor to choose which
852*6c119a46SAndroid Build Coastguard Worker	display will be used to map this surface.
853*6c119a46SAndroid Build Coastguard Worker
854*6c119a46SAndroid Build Coastguard Worker	If the surface doesn't cover the whole output, the compositor will
855*6c119a46SAndroid Build Coastguard Worker	position the surface in the center of the output and compensate with
856*6c119a46SAndroid Build Coastguard Worker	black borders filling the rest of the output.
857*6c119a46SAndroid Build Coastguard Worker      </description>
858*6c119a46SAndroid Build Coastguard Worker      <arg name="output" type="object" interface="wl_output" allow-null="true"/>
859*6c119a46SAndroid Build Coastguard Worker    </request>
860*6c119a46SAndroid Build Coastguard Worker    <request name="unset_fullscreen" />
861*6c119a46SAndroid Build Coastguard Worker
862*6c119a46SAndroid Build Coastguard Worker    <request name="set_minimized">
863*6c119a46SAndroid Build Coastguard Worker      <description summary="set the window as minimized">
864*6c119a46SAndroid Build Coastguard Worker	Request that the compositor minimize your surface. There is no
865*6c119a46SAndroid Build Coastguard Worker	way to know if the surface is currently minimized, nor is there
866*6c119a46SAndroid Build Coastguard Worker	any way to unset minimization on this surface.
867*6c119a46SAndroid Build Coastguard Worker
868*6c119a46SAndroid Build Coastguard Worker	If you are looking to throttle redrawing when minimized, please
869*6c119a46SAndroid Build Coastguard Worker	instead use the wl_surface.frame event for this, as this will
870*6c119a46SAndroid Build Coastguard Worker	also work with live previews on windows in Alt-Tab, Expose or
871*6c119a46SAndroid Build Coastguard Worker	similar compositor features.
872*6c119a46SAndroid Build Coastguard Worker      </description>
873*6c119a46SAndroid Build Coastguard Worker    </request>
874*6c119a46SAndroid Build Coastguard Worker
875*6c119a46SAndroid Build Coastguard Worker    <event name="configure">
876*6c119a46SAndroid Build Coastguard Worker      <description summary="suggest a surface change">
877*6c119a46SAndroid Build Coastguard Worker	This configure event asks the client to resize its toplevel surface or
878*6c119a46SAndroid Build Coastguard Worker	to change its state. The configured state should not be applied
879*6c119a46SAndroid Build Coastguard Worker	immediately. See xdg_surface.configure for details.
880*6c119a46SAndroid Build Coastguard Worker
881*6c119a46SAndroid Build Coastguard Worker	The width and height arguments specify a hint to the window
882*6c119a46SAndroid Build Coastguard Worker	about how its surface should be resized in window geometry
883*6c119a46SAndroid Build Coastguard Worker	coordinates. See set_window_geometry.
884*6c119a46SAndroid Build Coastguard Worker
885*6c119a46SAndroid Build Coastguard Worker	If the width or height arguments are zero, it means the client
886*6c119a46SAndroid Build Coastguard Worker	should decide its own window dimension. This may happen when the
887*6c119a46SAndroid Build Coastguard Worker	compositor needs to configure the state of the surface but doesn't
888*6c119a46SAndroid Build Coastguard Worker	have any information about any previous or expected dimension.
889*6c119a46SAndroid Build Coastguard Worker
890*6c119a46SAndroid Build Coastguard Worker	The states listed in the event specify how the width/height
891*6c119a46SAndroid Build Coastguard Worker	arguments should be interpreted, and possibly how it should be
892*6c119a46SAndroid Build Coastguard Worker	drawn.
893*6c119a46SAndroid Build Coastguard Worker
894*6c119a46SAndroid Build Coastguard Worker	Clients must send an ack_configure in response to this event. See
895*6c119a46SAndroid Build Coastguard Worker	xdg_surface.configure and xdg_surface.ack_configure for details.
896*6c119a46SAndroid Build Coastguard Worker      </description>
897*6c119a46SAndroid Build Coastguard Worker      <arg name="width" type="int"/>
898*6c119a46SAndroid Build Coastguard Worker      <arg name="height" type="int"/>
899*6c119a46SAndroid Build Coastguard Worker      <arg name="states" type="array"/>
900*6c119a46SAndroid Build Coastguard Worker    </event>
901*6c119a46SAndroid Build Coastguard Worker
902*6c119a46SAndroid Build Coastguard Worker    <event name="close">
903*6c119a46SAndroid Build Coastguard Worker      <description summary="surface wants to be closed">
904*6c119a46SAndroid Build Coastguard Worker	The close event is sent by the compositor when the user
905*6c119a46SAndroid Build Coastguard Worker	wants the surface to be closed. This should be equivalent to
906*6c119a46SAndroid Build Coastguard Worker	the user clicking the close button in client-side decorations,
907*6c119a46SAndroid Build Coastguard Worker	if your application has any.
908*6c119a46SAndroid Build Coastguard Worker
909*6c119a46SAndroid Build Coastguard Worker	This is only a request that the user intends to close the
910*6c119a46SAndroid Build Coastguard Worker	window. The client may choose to ignore this request, or show
911*6c119a46SAndroid Build Coastguard Worker	a dialog to ask the user to save their data, etc.
912*6c119a46SAndroid Build Coastguard Worker      </description>
913*6c119a46SAndroid Build Coastguard Worker    </event>
914*6c119a46SAndroid Build Coastguard Worker  </interface>
915*6c119a46SAndroid Build Coastguard Worker
916*6c119a46SAndroid Build Coastguard Worker  <interface name="zxdg_popup_v6" version="1">
917*6c119a46SAndroid Build Coastguard Worker    <description summary="short-lived, popup surfaces for menus">
918*6c119a46SAndroid Build Coastguard Worker      A popup surface is a short-lived, temporary surface. It can be used to
919*6c119a46SAndroid Build Coastguard Worker      implement for example menus, popovers, tooltips and other similar user
920*6c119a46SAndroid Build Coastguard Worker      interface concepts.
921*6c119a46SAndroid Build Coastguard Worker
922*6c119a46SAndroid Build Coastguard Worker      A popup can be made to take an explicit grab. See xdg_popup.grab for
923*6c119a46SAndroid Build Coastguard Worker      details.
924*6c119a46SAndroid Build Coastguard Worker
925*6c119a46SAndroid Build Coastguard Worker      When the popup is dismissed, a popup_done event will be sent out, and at
926*6c119a46SAndroid Build Coastguard Worker      the same time the surface will be unmapped. See the xdg_popup.popup_done
927*6c119a46SAndroid Build Coastguard Worker      event for details.
928*6c119a46SAndroid Build Coastguard Worker
929*6c119a46SAndroid Build Coastguard Worker      Explicitly destroying the xdg_popup object will also dismiss the popup and
930*6c119a46SAndroid Build Coastguard Worker      unmap the surface. Clients that want to dismiss the popup when another
931*6c119a46SAndroid Build Coastguard Worker      surface of their own is clicked should dismiss the popup using the destroy
932*6c119a46SAndroid Build Coastguard Worker      request.
933*6c119a46SAndroid Build Coastguard Worker
934*6c119a46SAndroid Build Coastguard Worker      The parent surface must have either the xdg_toplevel or xdg_popup surface
935*6c119a46SAndroid Build Coastguard Worker      role.
936*6c119a46SAndroid Build Coastguard Worker
937*6c119a46SAndroid Build Coastguard Worker      A newly created xdg_popup will be stacked on top of all previously created
938*6c119a46SAndroid Build Coastguard Worker      xdg_popup surfaces associated with the same xdg_toplevel.
939*6c119a46SAndroid Build Coastguard Worker
940*6c119a46SAndroid Build Coastguard Worker      The parent of an xdg_popup must be mapped (see the xdg_surface
941*6c119a46SAndroid Build Coastguard Worker      description) before the xdg_popup itself.
942*6c119a46SAndroid Build Coastguard Worker
943*6c119a46SAndroid Build Coastguard Worker      The x and y arguments passed when creating the popup object specify
944*6c119a46SAndroid Build Coastguard Worker      where the top left of the popup should be placed, relative to the
945*6c119a46SAndroid Build Coastguard Worker      local surface coordinates of the parent surface. See
946*6c119a46SAndroid Build Coastguard Worker      xdg_surface.get_popup. An xdg_popup must intersect with or be at least
947*6c119a46SAndroid Build Coastguard Worker      partially adjacent to its parent surface.
948*6c119a46SAndroid Build Coastguard Worker
949*6c119a46SAndroid Build Coastguard Worker      The client must call wl_surface.commit on the corresponding wl_surface
950*6c119a46SAndroid Build Coastguard Worker      for the xdg_popup state to take effect.
951*6c119a46SAndroid Build Coastguard Worker    </description>
952*6c119a46SAndroid Build Coastguard Worker
953*6c119a46SAndroid Build Coastguard Worker    <enum name="error">
954*6c119a46SAndroid Build Coastguard Worker      <entry name="invalid_grab" value="0"
955*6c119a46SAndroid Build Coastguard Worker	     summary="tried to grab after being mapped"/>
956*6c119a46SAndroid Build Coastguard Worker    </enum>
957*6c119a46SAndroid Build Coastguard Worker
958*6c119a46SAndroid Build Coastguard Worker    <request name="destroy" type="destructor">
959*6c119a46SAndroid Build Coastguard Worker      <description summary="remove xdg_popup interface">
960*6c119a46SAndroid Build Coastguard Worker	This destroys the popup. Explicitly destroying the xdg_popup
961*6c119a46SAndroid Build Coastguard Worker	object will also dismiss the popup, and unmap the surface.
962*6c119a46SAndroid Build Coastguard Worker
963*6c119a46SAndroid Build Coastguard Worker	If this xdg_popup is not the "topmost" popup, a protocol error
964*6c119a46SAndroid Build Coastguard Worker	will be sent.
965*6c119a46SAndroid Build Coastguard Worker      </description>
966*6c119a46SAndroid Build Coastguard Worker    </request>
967*6c119a46SAndroid Build Coastguard Worker
968*6c119a46SAndroid Build Coastguard Worker    <request name="grab">
969*6c119a46SAndroid Build Coastguard Worker      <description summary="make the popup take an explicit grab">
970*6c119a46SAndroid Build Coastguard Worker	This request makes the created popup take an explicit grab. An explicit
971*6c119a46SAndroid Build Coastguard Worker	grab will be dismissed when the user dismisses the popup, or when the
972*6c119a46SAndroid Build Coastguard Worker	client destroys the xdg_popup. This can be done by the user clicking
973*6c119a46SAndroid Build Coastguard Worker	outside the surface, using the keyboard, or even locking the screen
974*6c119a46SAndroid Build Coastguard Worker	through closing the lid or a timeout.
975*6c119a46SAndroid Build Coastguard Worker
976*6c119a46SAndroid Build Coastguard Worker	If the compositor denies the grab, the popup will be immediately
977*6c119a46SAndroid Build Coastguard Worker	dismissed.
978*6c119a46SAndroid Build Coastguard Worker
979*6c119a46SAndroid Build Coastguard Worker	This request must be used in response to some sort of user action like a
980*6c119a46SAndroid Build Coastguard Worker	button press, key press, or touch down event. The serial number of the
981*6c119a46SAndroid Build Coastguard Worker	event should be passed as 'serial'.
982*6c119a46SAndroid Build Coastguard Worker
983*6c119a46SAndroid Build Coastguard Worker	The parent of a grabbing popup must either be an xdg_toplevel surface or
984*6c119a46SAndroid Build Coastguard Worker	another xdg_popup with an explicit grab. If the parent is another
985*6c119a46SAndroid Build Coastguard Worker	xdg_popup it means that the popups are nested, with this popup now being
986*6c119a46SAndroid Build Coastguard Worker	the topmost popup.
987*6c119a46SAndroid Build Coastguard Worker
988*6c119a46SAndroid Build Coastguard Worker	Nested popups must be destroyed in the reverse order they were created
989*6c119a46SAndroid Build Coastguard Worker	in, e.g. the only popup you are allowed to destroy at all times is the
990*6c119a46SAndroid Build Coastguard Worker	topmost one.
991*6c119a46SAndroid Build Coastguard Worker
992*6c119a46SAndroid Build Coastguard Worker	When compositors choose to dismiss a popup, they may dismiss every
993*6c119a46SAndroid Build Coastguard Worker	nested grabbing popup as well. When a compositor dismisses popups, it
994*6c119a46SAndroid Build Coastguard Worker	will follow the same dismissing order as required from the client.
995*6c119a46SAndroid Build Coastguard Worker
996*6c119a46SAndroid Build Coastguard Worker	The parent of a grabbing popup must either be another xdg_popup with an
997*6c119a46SAndroid Build Coastguard Worker	active explicit grab, or an xdg_popup or xdg_toplevel, if there are no
998*6c119a46SAndroid Build Coastguard Worker	explicit grabs already taken.
999*6c119a46SAndroid Build Coastguard Worker
1000*6c119a46SAndroid Build Coastguard Worker	If the topmost grabbing popup is destroyed, the grab will be returned to
1001*6c119a46SAndroid Build Coastguard Worker	the parent of the popup, if that parent previously had an explicit grab.
1002*6c119a46SAndroid Build Coastguard Worker
1003*6c119a46SAndroid Build Coastguard Worker	If the parent is a grabbing popup which has already been dismissed, this
1004*6c119a46SAndroid Build Coastguard Worker	popup will be immediately dismissed. If the parent is a popup that did
1005*6c119a46SAndroid Build Coastguard Worker	not take an explicit grab, an error will be raised.
1006*6c119a46SAndroid Build Coastguard Worker
1007*6c119a46SAndroid Build Coastguard Worker	During a popup grab, the client owning the grab will receive pointer
1008*6c119a46SAndroid Build Coastguard Worker	and touch events for all their surfaces as normal (similar to an
1009*6c119a46SAndroid Build Coastguard Worker	"owner-events" grab in X11 parlance), while the top most grabbing popup
1010*6c119a46SAndroid Build Coastguard Worker	will always have keyboard focus.
1011*6c119a46SAndroid Build Coastguard Worker      </description>
1012*6c119a46SAndroid Build Coastguard Worker      <arg name="seat" type="object" interface="wl_seat"
1013*6c119a46SAndroid Build Coastguard Worker	   summary="the wl_seat of the user event"/>
1014*6c119a46SAndroid Build Coastguard Worker      <arg name="serial" type="uint" summary="the serial of the user event"/>
1015*6c119a46SAndroid Build Coastguard Worker    </request>
1016*6c119a46SAndroid Build Coastguard Worker
1017*6c119a46SAndroid Build Coastguard Worker    <event name="configure">
1018*6c119a46SAndroid Build Coastguard Worker      <description summary="configure the popup surface">
1019*6c119a46SAndroid Build Coastguard Worker	This event asks the popup surface to configure itself given the
1020*6c119a46SAndroid Build Coastguard Worker	configuration. The configured state should not be applied immediately.
1021*6c119a46SAndroid Build Coastguard Worker	See xdg_surface.configure for details.
1022*6c119a46SAndroid Build Coastguard Worker
1023*6c119a46SAndroid Build Coastguard Worker	The x and y arguments represent the position the popup was placed at
1024*6c119a46SAndroid Build Coastguard Worker	given the xdg_positioner rule, relative to the upper left corner of the
1025*6c119a46SAndroid Build Coastguard Worker	window geometry of the parent surface.
1026*6c119a46SAndroid Build Coastguard Worker      </description>
1027*6c119a46SAndroid Build Coastguard Worker      <arg name="x" type="int"
1028*6c119a46SAndroid Build Coastguard Worker	   summary="x position relative to parent surface window geometry"/>
1029*6c119a46SAndroid Build Coastguard Worker      <arg name="y" type="int"
1030*6c119a46SAndroid Build Coastguard Worker	   summary="y position relative to parent surface window geometry"/>
1031*6c119a46SAndroid Build Coastguard Worker      <arg name="width" type="int" summary="window geometry width"/>
1032*6c119a46SAndroid Build Coastguard Worker      <arg name="height" type="int" summary="window geometry height"/>
1033*6c119a46SAndroid Build Coastguard Worker    </event>
1034*6c119a46SAndroid Build Coastguard Worker
1035*6c119a46SAndroid Build Coastguard Worker    <event name="popup_done">
1036*6c119a46SAndroid Build Coastguard Worker      <description summary="popup interaction is done">
1037*6c119a46SAndroid Build Coastguard Worker	The popup_done event is sent out when a popup is dismissed by the
1038*6c119a46SAndroid Build Coastguard Worker	compositor. The client should destroy the xdg_popup object at this
1039*6c119a46SAndroid Build Coastguard Worker	point.
1040*6c119a46SAndroid Build Coastguard Worker      </description>
1041*6c119a46SAndroid Build Coastguard Worker    </event>
1042*6c119a46SAndroid Build Coastguard Worker
1043*6c119a46SAndroid Build Coastguard Worker  </interface>
1044*6c119a46SAndroid Build Coastguard Worker</protocol>
1045