xref: /aosp_15_r20/external/wayland-protocols/chromium.org/components/exo/wayland/protocol/aura-shell.xml (revision 6c119a463dd5c45dd05bbe67429293292dde15ee)
1<?xml version="1.0" encoding="UTF-8"?>
2<protocol name="aura_shell">
3
4  <copyright>
5    Copyright 2017 The Chromium Authors
6
7    Permission is hereby granted, free of charge, to any person obtaining a
8    copy of this software and associated documentation files (the "Software"),
9    to deal in the Software without restriction, including without limitation
10    the rights to use, copy, modify, merge, publish, distribute, sublicense,
11    and/or sell copies of the Software, and to permit persons to whom the
12    Software is furnished to do so, subject to the following conditions:
13
14    The above copyright notice and this permission notice (including the next
15    paragraph) shall be included in all copies or substantial portions of the
16    Software.
17
18    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
21    THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23    FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
24    DEALINGS IN THE SOFTWARE.
25  </copyright>
26
27  <interface name="zaura_shell" version="65">
28    <description summary="aura_shell">
29      The global interface exposing aura shell capabilities is used to
30      instantiate an interface extension for a wl_surface object.
31      This extended interface will then allow the client to use aura shell
32      specific functionality.
33    </description>
34
35    <enum name="error">
36      <entry name="aura_surface_exists" value="0"
37	     summary="the surface already has an aura surface object associated"/>
38      <entry name="aura_output_exists" value="1"
39	     summary="the output already has an aura output object associated"/>
40    </enum>
41
42    <request name="get_aura_surface">
43      <description summary="extend surface interface for aura shell">
44	Instantiate an interface extension for the given wl_surface to
45	provide aura shell functionality. If the given wl_surface is not
46	associated with a shell surface, the shell_surface_missing protocol
47	error is raised.
48      </description>
49
50      <arg name="id" type="new_id" interface="zaura_surface"
51	   summary="the new aura surface interface id"/>
52      <arg name="surface" type="object" interface="wl_surface"
53	   summary="the surface"/>
54    </request>
55
56    <!-- Version 2 additions -->
57
58    <request name="get_aura_output" since="2">
59      <description summary="extend output interface for aura shell">
60	Instantiate an interface extension for the given wl_output to
61	provide aura shell functionality.
62      </description>
63
64      <arg name="id" type="new_id" interface="zaura_output"
65	   summary="the new aura output interface id"/>
66      <arg name="output" type="object" interface="wl_output"
67	   summary="the output"/>
68    </request>
69
70    <!-- Version 11 additions -->
71
72    <enum name="layout_mode">
73      <description summary="the layout mode">
74        Specifies the server's window layout mode.
75      </description>
76      <entry name="windowed" value="1" summary="multiple windows"/>
77      <entry name="tablet" value="2" summary="restricted mode for tablet"/>
78    </enum>
79
80    <event name="layout_mode" since="11">
81      <description summary="sends the layout_mode">
82        Sends the layout_mode used by the server.
83      </description>
84      <arg name="layout_mode" type="uint" summary="layout_mode enum"/>
85    </event>
86
87    <!-- Version 14 additions -->
88
89    <event name="bug_fix" since="14">
90      <description summary="sends a bug fix ID">
91        Sends a monorail ID of a bug fixed on the exo server that clients can
92        use to gate functionality.
93      </description>
94      <arg name="id" type="uint" summary="ID of a single bug fix"/>
95    </event>
96
97    <event name="desks_changed" since="22">
98      <description summary="sends names of desks">
99        Notifies when there is a change in global desks state. This is emitted on
100        desk name changes, desk addition/removal or desks are reordered.
101        "desk_names" argument contains the set of null terminated strings as names of desks.
102      </description>
103      <arg name="desk_names" type="array" summary="an array of existing desks' names"/>
104    </event>
105    <event name="desk_activation_changed" since="22">
106      <description summary="sends the index of the active desk">
107        Notifies when there is a change of the active desk.
108      </description>
109      <arg name="active_desk_index" type="int" summary="index of the active desk"/>
110    </event>
111
112    <!-- Version 24 additions -->
113    <event name="activated" since="24">
114      <description summary="activated surface changed">
115	Notifies client that the activated surface changed.
116      </description>
117      <arg name="gained_active" type="object" interface="wl_surface" allow-null="true"/>
118      <arg name="lost_active" type="object" interface="wl_surface" allow-null="true"/>
119    </event>
120
121    <!-- Version 26 additions -->
122    <request name="surface_submission_in_pixel_coordinates" since="26">
123      <description summary="surfaces will be submitted in pixel coordinates">
124        [Deprecated] Informs the server that when submitting surfaces, this
125        client will not use wl_surface_set_buffer_scale to report the scales,
126        nor will it apply scale via vp_viewporter. Instead the server should
127        apply an appropriate scale transform to have the submitted buffers
128        composited correctly.
129      </description>
130    </request>
131
132    <request name="get_aura_toplevel_for_xdg_toplevel" since="27">
133      <description summary="get aura toplevel">
134  Retrieve the aura toplevel interface for a given xdg toplevel interface
135      </description>
136      <arg name="id" type="new_id" interface="zaura_toplevel"
137	   summary="the new aura toplevel interface id"/>
138      <arg name="toplevel" type="object" interface="xdg_toplevel"/>
139    </request>
140
141    <request name="get_aura_popup_for_xdg_popup" since="28">
142      <description summary="get aura popup">
143        Retrieve the aura popup interface for the given xdg popup interface
144      </description>
145      <arg name="id" type="new_id" interface="zaura_popup"
146	    summary="the aura popup interface id"/>
147      <arg name="popup" type="object" interface="xdg_popup"/>
148    </request>
149
150    <request name="release" type="destructor" since="38">
151      <description summary="release zaura_shell object">
152	Using this request a client can tell the server that it is not going to
153	use the zaura_shell object anymore. This does not affect any other objects.
154
155  This is named "release" because "destroy" is a special named function used for
156  freeing wl_proxy objects. Naming it "destroy" will cause marshalling errors
157  when running on lower versioned hosts. All "release" requests here should be
158  renamed to "destroy" if we move to aura-shell v2.
159      </description>
160    </request>
161
162    <!-- Version 57 additions -->
163    <event name="set_overview_mode" since="57">
164      <description summary="entered overview mode">
165        Notifies client that the server has entered overview mode. Overview mode
166        displays all app windows associated with the current desk for the user.
167      </description>
168    </event>
169    <event name="unset_overview_mode" since="57">
170      <description summary="exited overview mode">
171        Notifies client that the server has exited overview mode.
172      </description>
173    </event>
174
175    <!-- Version 58 additions -->
176    <event name="compositor_version" since="58">
177      <description summary="sends the server version">
178        Sends the Exo compositor version information.
179      </description>
180      <arg name="version_label" type="string" summary="version string label"/>
181    </event>
182
183    <!-- Version 60 additions -->
184    <event name="all_bug_fixes_sent" since="60">
185      <description summary="completed sending all bug fix ids">
186        Notifies client that all the IDs of a bug fixed on the exo server is
187        sent. Bug fix ids are sent via `bug_fix` events which sends ids one by
188        one, not an array. This event is used to confirm all ids are sent.
189      </description>
190    </event>
191
192    <!-- Version 61 additions -->
193    <event name="window_corners_radii" since="61">
194      <description summary="sends the radius of each corner the window">
195        Sends the radius of each corner of the window to the clients in dips.
196      </description>
197      <arg name="upper_left_radius" type="uint"/>
198      <arg name="upper_right_radius" type="uint"/>
199      <arg name="lower_right_radius" type="uint"/>
200      <arg name="lower_left_radius" type="uint"/>
201    </event>
202  </interface>
203
204  <interface name="zaura_surface" version="51">
205    <description summary="aura shell interface to a wl_surface">
206      An additional interface to a wl_surface object, which allows the
207      client to access aura shell specific functionality for surface.
208    </description>
209
210    <enum name="frame_type">
211      <description summary="different frame types">
212	Frame types that can be used to decorate a surface.
213      </description>
214      <entry name="none" value="0" summary="no frame"/>
215      <entry name="normal" value="1" summary="caption with shadow" />
216      <entry name="shadow" value="2" summary="shadow only"/>
217    </enum>
218
219    <request name="set_frame">
220      <description summary="request a frame for surface">
221        [Deprecated] Suggests a surface should use a specific frame. Deprecated
222        since M105. See the set_decoration method on zaura_toplevel and
223        zaura_popup.
224      </description>
225      <arg name="type" type="uint" summary="the new frame type"/>
226    </request>
227
228    <!-- Version 2 additions -->
229
230    <request name="set_parent" since="2">
231      <description summary="set the parent of this surface">
232	Set the "parent" of this surface. "x" and "y" arguments specify the
233	initial position for surface relative to parent.
234      </description>
235      <arg name="parent" type="object" interface="zaura_surface" allow-null="true"/>
236      <arg name="x" type="int"/>
237      <arg name="y" type="int"/>
238    </request>
239
240    <!-- Version 3 additions -->
241
242    <request name="set_frame_colors" since="3">
243      <description summary="set the frame colors of this surface">
244	Set the frame colors. This must be set before the initial
245	commit first, otherwise the subsequent request may not be
246	fulfilled.
247      </description>
248      <arg name="active_color" type="uint" summary="32 bit ARGB color value, not premultiplied"/>
249      <arg name="inactive_color" type="uint" summary="32 bit ARGB color value, not premultiplied"/>
250    </request>
251
252    <!-- Version 4 additions -->
253
254    <request name="set_startup_id" since="4">
255      <description summary="set the startup ID of this surface">
256	Set the startup ID.
257      </description>
258      <arg name="startup_id" type="string" allow-null="true"/>
259    </request>
260
261    <!-- Version 5 additions -->
262
263    <request name="set_application_id" since="5">
264      <description summary="set the application ID of this surface">
265	Set the application ID.
266      </description>
267      <arg name="application_id" type="string" allow-null="true"/>
268    </request>
269
270    <!-- Version 7 additions -->
271
272    <request name="set_client_surface_id" since="7">
273      <description summary="set the client surface ID of this surface">
274	Deprecated. Please use set_client_surface_str_id instead.
275	Set the identifier of the surface assigned by the client.
276      </description>
277      <arg name="client_surface_id" type="int" />
278    </request>
279
280    <!-- Version 8 additions -->
281
282    <enum name="occlusion_change_reason">
283      <description summary="occlusion change reason">
284	Enum describing why an occlusion change happened. An occlusion change as a
285	result of a user action could include things like the user moving a window,
286	changing occlusion, or opening/closing a window, changing the occlusion.
287      </description>
288      <entry name="user_action" value="1" summary="occlusion changed as a result of a user action"/>
289    </enum>
290
291    <request name="set_occlusion_tracking" since="8">
292      <description summary="set tracked occlusion region">
293	Sets occlusion tracking on this surface. The client will be updated with a
294	new occlusion fraction when the amount of occlusion of this surface changes.
295      </description>
296    </request>
297
298    <request name="unset_occlusion_tracking" since="8">
299      <description summary="unset tracked occlusion region">
300	Unsets occlusion tracking for this surface.
301      </description>
302    </request>
303
304    <event name="occlusion_changed" since="8">
305      <description summary="Notifies on an occlusion change">
306	Notifies when there is a change in the amount this surface is occluded.
307	The occlusion update is sent as a fixed point number from 0 to 1, representing
308	the proportion of occlusion.
309      </description>
310      <arg name="occlusion_fraction" type="fixed"/>
311      <arg name="occlusion_reason" type="uint"/>
312    </event>
313
314    <!-- Version 9 additions -->
315
316    <request name="activate" since="9">
317      <description summary="Indicate that this window wants to be the active window">
318        [Deprecated] Make this the active window. This usually implies something
319        like restacking this surface to the foreground. The compositor is free
320        to ignore this request if it deems the client to be misbehaving.
321        Typically this request will only be honoured in response to some user
322        driven event, such as executing an application or opening a file in a
323        window that already exists.
324      </description>
325    </request>
326
327    <request name="draw_attention" since="9">
328      <description summary="Indicate that this window wants some of the user's attention">
329	Draw attention to this surface in a way that does not change the user's
330	focus. This usually means animating window decorations or taskbar icons.
331	The compositor can still ignore this request if it deems fit, but unlike
332	draw_focus, these requests are expected to come from background tasks,
333	and are more likely to be honoured.
334      </description>
335    </request>
336
337    <!-- Version 10 additions -->
338
339    <enum name="fullscreen_mode">
340      <description
341        summary="Specifies the behavior of the surface in fullscreen.">
342          [Deprecated] Possible windowing system behaviors if this surface were to go
343          fullscreen.
344      </description>
345      <entry
346        name="immersive"
347        value="0"
348        summary="user can access system UIs such as the shelf and window frame
349          by pointing to, or swiping over, the screen edge"/>
350      <entry
351        name="plain"
352        value="1"
353        summary="user cannot access system UIs using mouse/touches"/>
354    </enum>
355
356    <request name="set_fullscreen_mode" since="10">
357      <description summary="Sets the behavior of the surface in fullscreen.">
358        [Deprecated] Use the set_fullscreen_mode in the toplevel interface.
359        Suggests how the windowing system should behave if this surface were
360        to go fullscreen. Does not make the surface fullscreen.
361
362        Typically the default mode is "immersive".
363      </description>
364      <arg name="mode" type="uint" enum="fullscreen_mode"/>
365    </request>
366
367    <!-- Version 12 additions -->
368
369    <request name="set_client_surface_str_id" since="12">
370      <description summary="set the client surface ID of this surface">
371        Set the identifier of the surface assigned by the client.
372      </description>
373      <arg name="client_surface_id" type="string" />
374    </request>
375
376    <!-- Version 15 additions -->
377
378    <request name="set_server_start_resize" since="15">
379      <description summary="request a server-side shadow for surface">
380	Suggests a surface to have client-side decoration, but
381	server-side decides when and where to start the resize. The server may also
382	apply visual effects to indicate that the resize operation is ongoing.
383      </description>
384    </request>
385
386    <!-- Version 16 additions -->
387
388    <enum name="snap_direction">
389      <description summary="surface snap directions">
390        Surface snap directions.
391      </description>
392      <entry name="none" value="0" summary=""/>
393      <entry name="left" value="1" summary=""/>
394      <entry name="right" value="2" summary=""/>
395    </enum>
396
397    <request name="intent_to_snap" since="16">
398      <description summary="client intents to snap the surface.">
399        [Deprecated] Use intent_to_snap on zaura_toplevel.
400        Notify (or inform) the server the client's intent to snap the window.
401        To inform it's no longer willing to snap, send 'none'.
402      </description>
403      <arg name="direction" type="uint" enum="snap_direction"/>
404    </request>
405
406    <request name="set_snap_left" since="16">
407      <description summary="snap the surface to the left.">
408        [Deprecated] Use set_snap_primary on zaura_toplevel.
409        Request that surface is snapped to the left.
410      </description>
411    </request>
412
413    <request name="set_snap_right" since="16">
414      <description summary="snap the surface to the right.">
415        [Deprecated] Use set_snap_secondary on zaura_toplevel.
416        Request that surface is snapped to the right.
417      </description>
418    </request>
419
420    <request name="unset_snap" since="16">
421      <description summary="Unset the surface snap.">
422        [Deprecated] Use unset_snap on zaura_toplevel.
423        Request that surface resets snapping.
424      </description>
425    </request>
426
427    <!-- Version 17 additions -->
428
429    <event name="lock_frame_normal" since="17">
430      <description summary="Notify the client that server intent to lock window in normal or restore state">
431        Notifies the client to lock window in normal or restore state. When
432        window is locked, the window frame should look like it is in restored
433        state, but actually isn't. Locking happends while dragging a maximized
434        window.
435      </description>
436    </event>
437
438    <event name="unlock_frame_normal" since="17">
439      <description summary="Notify the client that server intent to unlock window's normal or restore state">
440        Notifies the client to unlock window if it is previously locked.
441        Unlocking happends while dragging a maximized window.
442      </description>
443    </event>
444
445    <!-- Version 18 additions -->
446    <request name="set_window_session_id" since="18">
447      <description summary="set surface window session id">
448          Set window session id to the surface.
449      </description>
450      <arg name="id" type="int" summary="window session id"/>
451    </request>
452
453    <!-- Version 19 additions -->
454    <request name="set_can_go_back" since="19">
455      <description summary="Set the minimize-on-back-gesture behavior.">
456        Sets that the surface can go back as per its navigation list.
457        This allows the server to react to by minimizing the window upon a
458        system wide back gesture.
459      </description>
460    </request>
461
462    <request name="unset_can_go_back" since="19">
463      <description summary="Unset the minimize-on-back-gesture behavior.">
464        Unsets that the surface can go back as per its navigation list.
465        See above.
466      </description>
467    </request>
468
469    <!-- Version 20 additions -->
470    <request name="set_pip" since="20">
471      <description summary="Set pip for the surface.">
472        Requests that the surface is set to Picture-in-Picture (PIP).
473      </description>
474    </request>
475
476    <request name="unset_pip" since="20">
477      <description summary="Unset pip for the surface.">
478        Requests that the surface is unset from Picture-in-Picture (PIP).
479      </description>
480    </request>
481
482    <request name="set_aspect_ratio" since="20">
483      <description summary="Set aspect ratio for the surface.">
484        Sets the aspect ratio of the surface.
485      </description>
486      <arg name="width" type="int"/>
487      <arg name="height" type="int"/>
488    </request>
489
490    <!-- Version 21 additions -->
491    <enum name="occlusion_state">
492      <description summary="surface occlusion state">
493	Describes the occlusion state of a surface.
494      </description>
495      <entry name="unknown" value="0" summary="The surface's occlusion state isn't tracked"/>
496      <entry name="visible" value="1" summary="The surface is visible"/>
497      <entry name="occluded" value="2" summary="The surface is occluded"/>
498      <entry name="hidden" value="3" summary="The surface is not visible"/>
499    </enum>
500
501    <event name="occlusion_state_changed" since="21">
502      <description summary="Notify the client that the occlusion state changed">
503	Notifies the client that the occlusion state of a window has changed. Clients
504	will only receive these messages if they previously request occlusion tracking
505  via set_occlusion_tracking for a particular surface.
506      </description>
507      <arg name="mode" type="uint" enum="occlusion_state"/>
508    </event>
509
510    <!-- Version 22 additions -->
511    <request name="move_to_desk" since="22">
512        <description summary="move to desk">
513        If |index| equals -1, requests that the server toggles whether client
514        is visible on all workspaces.
515        If |index| is not -1, requests that the server moves the client to the desk at
516        |index|.
517      </description>
518      <arg name="index" type="int"/>
519    </request>
520
521    <event name="desk_changed" since="22">
522      <description summary="window desk state changed">
523        Notifies when there is a change in the desk state of a window.
524        This is emitted when a window is moved to another desk or
525        when its assigned-to-all-desks state changes.
526      </description>
527      <arg name="state" type="int" summary="index of desk or -1 for a window assigned to all desks"/>
528    </event>
529
530    <!-- Version 23 additions -->
531    <request name="set_initial_workspace" since="23">
532      <description summary="initial workspace for restore">
533        If |initial_workspace| equals '-1', a window is restored and visible on all workspaces,
534        Otherwise, set the initial workspace to restore the window to the corresponding workspace.
535        This is not double buffered and must be set before attaching a buffer.
536      </description>
537      <arg name="initial_workspace" type="string" summary="intial workspace for restoring or '-1' for visible on all workspaces"/>
538    </request>
539
540    <!-- Version 25 additions -->
541    <request name="set_pin" since="25">
542      <description summary="pin a window (trusted or not)">
543	Requests that a window is pinned which means that the system does not allow
544  the user to leave the window until an exit criteria is met.
545
546	This is a request to get the window pinned so that the user cannot get to any
547	other window / application. There are two modes:
548  A. trusted is 0 - which is slightly less restrictive and allows the user to
549  get out of the window by a predefined way of authentication.
550  B. trusted is not 0 in which case a trusted application was locking down the
551  system and needs to unlock. This is used for e.g. School tests.
552      </description>
553      <arg name="trusted" type="int" summary="0 for non trusted"/>
554    </request>
555
556    <request name="unset_pin" since="25">
557      <description summary="unpin a window">
558	Requests that the user can leave a previously pinned window.
559
560	This is a request to unpin a previously pinned window. It does not matter if
561  the window was locked with the trusted state or not.
562      </description>
563    </request>
564
565    <event name="start_throttle" since="29">
566      <description summary="start throttling on the surface">
567        Informs the client to start throttling on the surface.
568      </description>
569    </event>
570    <event name="end_throttle" since="29">
571      <description summary="end throttling on the surface">
572        Informs the client to end throttling on the surface.
573      </description>
574    </event>
575
576    <!-- Version 38 additions -->
577    <request name="release" type="destructor" since="38">
578      <description summary="destroy zaura_surface">
579	Destroy the zaura_surface object. A client should destroy this object when the
580  role is unmapped from a wl_surface.
581
582  See zaura_shell.release for destructor naming.
583      </description>
584    </request>
585
586    <!-- Version 47 additions -->
587    <request name="show_tooltip" since="47">
588      <description summary="show tooltip window">
589        Show tooltip on server side.
590        `x` and `y` specifies the location of tooltip in surface local coordinates.
591        `hide_delay` and `show_delay` specify the time to wait until showing/hiding tooltip.
592        The unit is millisecond.
593      </description>
594      <arg name="text" type="string"/>
595      <arg name="x" type="int"/>
596      <arg name="y" type="int"/>
597      <arg name="tooltip_trigger" type="uint" summary="tooltip_trigger enum"/>
598      <arg name="show_delay" type="uint" summary="delay to show tooltip in millisecond"/>
599      <arg name="hide_delay" type="uint" summary="delay to hide tooltip in millisecond"/>
600    </request>
601
602    <enum name="tooltip_trigger">
603      <description summary="type of tooltip trigger">
604        Describes what triggered tooltip
605      </description>
606      <entry name="cursor" value="0" summary="triggered by cursor"/>
607      <entry name="keyboard" value="1" summary="triggered by keyboard"/>
608    </enum>
609
610    <request name="hide_tooltip" since="47">
611      <description summary="hide tooltip window">
612        Hide tooltip created by the same client on server side.
613        This may be called even when there is no tooltip window to hide.
614      </description>
615    </request>
616
617    <event name="tooltip_shown" since="47">
618      <description summary="tooltip is shown by server side">
619        Informs the client that the tooltip is shown with states.
620        `x` and `y` specifies the location of tooltip in surface local coordinates.
621      </description>
622      <arg name="text" type="string"/>
623      <arg name="x" type="int"/>
624      <arg name="y" type="int"/>
625      <arg name="width" type="int"/>
626      <arg name="height" type="int"/>
627    </event>
628
629    <event name="tooltip_hidden" since="47">
630      <description summary="tooltip is hidden by server side">
631        Informs the client that the tooltip is hidden.
632      </description>
633    </event>
634
635    <!-- Version 51 additions -->
636    <request name="set_accessibility_id" since="51">
637      <description summary="set accessibility ID to the surface">
638        Set accessibility window ID to the surface. A negative number removes
639        the existing accessibility ID from the surface.
640      </description>
641      <arg name="id" type="int" summary="Accessibility ID. Negative number removes existing accessibility ID from the surface."/>
642    </request>
643  </interface>
644
645  <interface name="zaura_output" version="45">
646    <description summary="aura shell interface to a wl_output">
647      An additional interface to a wl_output object, which allows the
648      client to access aura shell specific functionality for output.
649    </description>
650
651    <!-- Version 2 additions -->
652
653    <enum name="scale_property" bitfield="true">
654      <description summary="scale information">
655	These flags describe properties of an output scale.
656	They are used in the flags bitfield of the scale event.
657      </description>
658      <entry name="current" value="0x1"
659	     summary="indicates this is the current scale"/>
660      <entry name="preferred" value="0x2"
661	     summary="indicates this is the preferred scale"/>
662    </enum>
663
664    <enum name="scale_factor">
665      <entry name="0400" value="400"/>
666      <entry name="0500" value="500"/>
667      <entry name="0550" value="550"/>
668      <entry name="0600" value="600"/>
669      <entry name="0625" value="625"/>
670      <entry name="0650" value="650"/>
671      <entry name="0700" value="700"/>
672      <entry name="0750" value="750"/>
673      <entry name="0800" value="800"/>
674      <entry name="0850" value="850"/>
675      <entry name="0900" value="900"/>
676      <entry name="0950" value="950"/>
677      <entry name="1000" value="1000"/>
678      <entry name="1050" value="1050"/>
679      <entry name="1100" value="1100"/>
680      <entry name="1150" value="1150"/>
681      <entry name="1125" value="1125"/>
682      <entry name="1200" value="1200"/>
683      <entry name="1250" value="1250"/>
684      <entry name="1300" value="1300"/>
685      <entry name="1400" value="1400"/>
686      <entry name="1450" value="1450"/>
687      <entry name="1500" value="1500"/>
688      <entry name="1600" value="1600"/>
689      <entry name="1750" value="1750"/>
690      <entry name="1800" value="1800"/>
691      <entry name="2000" value="2000"/>
692      <entry name="2200" value="2200"/>
693      <entry name="2250" value="2250"/>
694      <entry name="2500" value="2500"/>
695      <entry name="2750" value="2750"/>
696      <entry name="3000" value="3000"/>
697      <entry name="3500" value="3500"/>
698      <entry name="4000" value="4000"/>
699      <entry name="4500" value="4500"/>
700      <entry name="5000" value="5000"/>
701    </enum>
702
703    <event name="scale" since="2">
704      <description summary="advertise available scales for the output">
705	The scale event describes an available scale for the output.
706
707	The event is sent when binding to the output object and there
708	will always be one scale, the current scale. The event is sent
709	again if an output changes scale, for the scale that is now
710	current. In other words, the current scale is always the last
711	scale that was received with the current flag set.
712      </description>
713      <arg name="flags" type="uint" enum="scale_property" summary="bitfield of scale flags"/>
714      <arg name="scale" type="uint" enum="scale_factor" summary="output scale"/>
715    </event>
716
717    <!-- Version 5 additions -->
718
719    <enum name="connection_type">
720      <entry name="unknown" value="0"/>
721      <entry name="internal" value="1"/>
722    </enum>
723
724    <event name="connection" since="5">
725      <description summary="advertise connection for the output">
726	The connection event describes how the output is connected.
727
728	The event is sent when binding to the output object.
729      </description>
730      <arg name="connection" type="uint" enum="connection_type" summary="output connection"/>
731    </event>
732
733    <event name="device_scale_factor" since="5">
734      <description summary="advertise device scale factor for the output">
735	This event describes the device specific scale factor for the output.
736
737	The device specific scale factor is not expected the change during
738	the lifetime of the output. And it is not limited to an integer value
739	like the scale factor provided by wl_output interface. The exact
740	contents scale used by the compositor can be determined by combining
741	this device scale factor with the current output scale.
742
743	The event is sent when binding to the output object.
744      </description>
745      <arg name="scale" type="uint" enum="scale_factor" summary="output device scale factor"/>
746    </event>
747
748    <!-- Version 33 additions -->
749
750    <event name="insets" since="33">
751      <description summary="advertise the work area insets for the output">
752        This event describes the insets for the output in logical screen
753        coordinates, from which the work area can be calculated.
754
755        This event is sent before wl_output.done, after which the client would
756        apply the change.
757      </description>
758      <arg name="top" type="int"/>
759      <arg name="left" type="int"/>
760      <arg name="bottom" type="int"/>
761      <arg name="right" type="int"/>
762    </event>
763
764    <!-- Version 34 additions -->
765
766    <event name="logical_transform" since="34">
767      <description summary="advertise the output's logical transform">
768        This event describes the logical transform for the output. Whereas
769        wl_output.geometry's transform corresponds to the display's panel
770        rotation, the logical transform corresponds to the display's logical
771        rotation.
772
773        This event is sent before wl_output.done, after which the client would
774        apply the change.
775      </description>
776      <arg name="transform" type="int" enum="wl_output.transform"/>
777    </event>
778
779    <!-- Version 38 additions -->
780    <request name="release" type="destructor" since="38">
781      <description summary="destroy zaura_output">
782	Destroy this zaura_shell object.
783
784	Destroying a bound zaura_shell object while there are zaura_surfaces
785	still alive created by this zaura_shell object instance is illegal
786	and will result in a protocol error.
787
788  See zaura_shell.release for destructor naming.
789      </description>
790    </request>
791
792    <event name="display_id" since="43">
793      <description summary="advertise the output's display id">
794        This event describes the 64bit display id assigned to each display by ChromeOS.
795	The value is opaque and should not be interpreted.
796      </description>
797      <arg name="display_id_hi" type="uint"/>
798      <arg name="display_id_lo" type="uint"/>
799    </event>
800
801    <!-- Version 45 additions -->
802    <event name="activated" since="45">
803      <description summary="target display for new windows">
804        Notifies that this output is now active output. It is typically used as a
805        target when a new window is created without specific bounds.
806      </description>
807    </event>
808  </interface>
809
810  <interface name="zaura_toplevel" version="65">
811    <description summary="aura shell interface to the toplevel shell">
812      An interface to the toplevel shell, which allows the
813      client to access shell specific functionality.
814    </description>
815
816    <enum name="orientation_lock">
817      <description summary="orientation lock request">
818  Defines orientation request when a surface is in fullscreen.
819      </description>
820      <entry name="none" value="1" summary="no orientation lock"/>
821      <entry name="portrait" value="2" summary="primary or secondary portrait"/>
822      <entry name="landscape" value="3" summary="primary or secondary landscape"/>
823      <entry name="current" value="4" summary="keep current orientation"/>
824      <entry name="portrait_primary" value="5" summary="primary portrait"/>
825      <entry name="landscape_primary" value="6" summary="primary landscape"/>
826      <entry name="portrait_secondary" value="7" summary="secondary portrait"/>
827      <entry name="landscape_secondary" value="8" summary="secondary landscape"/>
828    </enum>
829
830    <request name="set_orientation_lock" since="26">
831      <description summary="set orientation lock for a remote surface">
832  Request a specific orientation behavior when this surface is in fullscreen.
833      </description>
834      <arg name="orientation_lock" type="uint" enum="orientation_lock"/>
835    </request>
836    <request name="surface_submission_in_pixel_coordinates" since="28">
837      <description summary="surface will be submitted in pixel coordinates">
838        Informs the server that when submitting this surface, this client will not
839        use wl_surface_set_buffer_scale to report the scales, nor will it apply
840        scale via vp_viewporter. Instead the server should apply an appropriate
841        scale transform for the submitted buffers to be composited correctly.
842      </description>
843    </request>
844
845    <request name="set_supports_screen_coordinates" since="29">
846      <description summary="enables screen coordinates in window bounds">
847	Requesting this will enable screen coordinates in surfaces
848	associated with aura_toplevel including sub surfaces and popup
849	windows who added this toplevel as a parent. This should be
850	set before first commit.
851      </description>
852    </request>
853
854    <request name="set_window_bounds" since="29">
855      <description summary="set window size and position">
856	Request a new location and bounds of the surface in DP screen
857	coordinates.  The size will be applied to visible bounds used
858	in set_geometry.  The output is a hint for the compositor to
859	determine which output the window should move to. If the
860	output is null, the compositor should make decision solely by
861	the given bounds. These parameters are just a request and the
862	compositor may ignore, adjust the size and position based on
863	the rule imposed by the window manager, or may preserve it for
864	future operations. For example, the compositor will not allow
865	a position outside of the output, or the compositor may just
866	store it if the toplevel surface is in maximiezd state, and
867	may use it upon unmaximized.
868      </description>
869      <arg name="x" type="int"/>
870      <arg name="y" type="int"/>
871      <arg name="width" type="int"/>
872      <arg name="height" type="int"/>
873      <arg name="output" type="object" interface="wl_output" summary="the output" allow-null="true"/>
874    </request>
875
876    <event name="configure" since="29">
877      <description summary="suggest a surface change">
878        A configuration change that also includes the window origin in screen coordinates.
879      </description>
880      <arg name="x" type="int"/>
881      <arg name="y" type="int"/>
882      <arg name="width" type="int"/>
883      <arg name="height" type="int"/>
884      <arg name="states" type="array"/>
885    </event>
886
887    <enum name="state">
888      <description summary="supplemental aura states to xdg states">
889        The states that are contained here are supplemental to the states
890        defined in the XDG shell and specific aura windows.
891      </description>
892
893      <!-- Offset by 100 to prevent collision with new XDG states. -->
894      <entry name="immersive" value="100" since="36">
895        <description summary="immersive mode with hidden title bar and shelf">
896          User can access system UIs such as the shelf and window frame
897          by pointing to, or swiping over, the screen edge.
898        </description>
899      </entry>
900      <entry name="minimized" value="101" since="36">
901        <description summary="surface is minimized">
902          The window has been minimized.
903        </description>
904      </entry>
905      <entry name="snapped_primary" value="102" since="38">
906        <description summary="window is snapped in primary position">
907          The window is snapped to the left if the display is in landscape mode
908          and at the top in portrait mode.
909        </description>
910      </entry>
911      <entry name="snapped_secondary" value="103" since="38">
912        <description summary="window is snapped in secondary position">
913          The window is snapped to the right if the display is in landscape mode
914          and at the bottom in portrait mode.
915        </description>
916      </entry>
917      <entry name="floated" value="104" since="38">
918        <description summary="window is floated on top">
919          The window is floated on top of other windows. One floated window is
920          allowed per desk. Floating a window when there is already a floated
921          window on the same desk will unfloat the floated window.
922        </description>
923      </entry>
924      <entry name="pip" value="105" since="54">
925        <description summary="window is PiP">
926          The window is in PiP mode.
927        </description>
928      </entry>
929      <entry name="pinned" value="106" since="64">
930        <description summary="window is pinned">
931          The window is pinned.
932        </description>
933      </entry>
934      <entry name="trusted_pinned" value="107" since="64">
935        <description summary="window is trusted pinned">
936          The window is trusted pinned.
937        </description>
938      </entry>
939    </enum>
940
941    <event name="origin_change" since="29">
942      <description summary="window origin change">
943        A notification sent when the window origin has changed. Unlike a configure,
944        this does not imply the client needs to resize. The values are in screen
945        coordinates.
946      </description>
947      <arg name="x" type="int" />
948      <arg name="y" type="int" />
949    </event>
950
951    <request name="set_restore_info" since="30">
952      <description summary="set session id and restore id">
953      Request session id and restore id of a newly created browser window.
954      Set the information used by compositor to restore the toplevel
955      surface state, such as window position, window state, upon creation.
956      This is not double buffered and must be set before sending first commit.
957      </description>
958      <arg name="restore_session_id" type="int" summary="unique browser session id"/>
959      <arg name="restore_window_id" type="int" summary="restore browser window id"/>
960    </request>
961
962    <!-- Version 31 additions -->
963    <request name="set_system_modal" since="31">
964      <description summary="make window a system modal">
965        Requests that the toplevel surface should become a system modal. The
966        compositor will prevent other windows from receiving events. If there
967        are multiple system modal surfaces, the compositor will decide which
968        one to receive events.
969      </description>
970    </request>
971
972    <request name="unset_system_modal" since="31">
973      <description summary="unset window system modal state">
974        Requests that the system modal state of the toplevel surface will be
975        unset. The compositor will then allow other windows to recieve events.
976      </description>
977    </request>
978
979    <request name="set_restore_info_with_window_id_source" since="32">
980      <description summary="set session id and restore window id source">
981      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.
982      </description>
983      <arg name="restore_session_id" type="int" summary="unique browser session id"/>
984      <arg name="restore_window_id_source" type="string" summary="restore window id source"/>
985    </request>
986
987    <request name="set_decoration" since="35">
988      <description summary="request a decoration for surface">
989        Clients are allowed to request a particular decoration for a
990        zaura_toplevel. The server is not required to honor this
991        request. See decoration_type for available options. This must
992        be set before the initial commit first, otherwise the
993        subsequent request may not be fulfilled. Available since M105.
994      </description>
995      <arg name="type" type="uint" summary="the new frame type"/>
996    </request>
997
998    <enum name="decoration_type">
999      <description summary="different decoration types">
1000	Decoration types are used to modify the surface (e.g. drop shadow).
1001      </description>
1002      <entry name="none" value="0" summary="no frame"/>
1003      <entry name="normal" value="1" summary="caption with shadow"/>
1004      <entry name="shadow" value="2" summary="shadow only"/>
1005    </enum>
1006
1007    <!-- Version 38 additions -->
1008    <request name="release" type="destructor" since="38">
1009      <description summary="destroy zaura_toplevel">
1010	Destroy this zaura_toplevel object. A client should call destroy when the role
1011  is unmapped from a wl_surface.
1012
1013  See zaura_shell.release for destructor naming.
1014      </description>
1015    </request>
1016
1017    <!-- Version 39 additions -->
1018    <request name="set_float" since="39">
1019      <description summary="float the surface on top">
1020        [Deprecated] Use set_float_to_location.
1021        This is a request to place the surface above others.
1022      </description>
1023    </request>
1024    <request name="unset_float" since="39">
1025      <description summary="unset the surface float">
1026        Request that the surface resets floating.
1027      </description>
1028    </request>
1029
1030    <!-- version 40 additions -->
1031    <request name="set_z_order" since="40">
1032      <description summary="set z order for window">
1033        Sets the z order for a toplevel surface. See z_order_level for available options.
1034      </description>
1035      <arg name="z_order" type="uint" summary="z order value for the window"/>
1036    </request>
1037
1038    <enum name="z_order_level">
1039      <description summary="z order levels for windows">
1040        Different z order levels that are used to set the z order for a toplevel surface.
1041      </description>
1042      <entry name="normal" value="0" summary="the default level for windows"/>
1043      <entry name="floating_window" value="1" summary="a floating window z-ordered above other normal windows"/>
1044      <entry name="floating_ui_element" value="2" summary="used to show non-window style UIs that are shown above floating windows"/>
1045      <entry name="security_surface" value="3" summary="cannot be interfered with or covered up"/>
1046    </enum>
1047
1048    <!-- version 41 additions -->
1049    <request name="set_origin" since="41">
1050      <description summary="set window position in DPs">
1051         Request a new location for the surface in device-independent pixels
1052         (DPs), relative to the top-left corner of the given output.
1053
1054         A null output means whichever output currently contains the surface.
1055
1056         These parameters are just a request and the compositor may ignore
1057         them, adjust them due to rules imposed by the window manager, or
1058         preserve them for future operations. For example, the compositor will
1059         not allow a position outside of the output; or the compositor may just
1060         store it if the toplevel surface is in maximized state, and may use it
1061         upon unmaximize.
1062      </description>
1063      <arg name="x" type="int"/>
1064      <arg name="y" type="int"/>
1065      <arg name="output" type="object" interface="wl_output" allow-null="true"
1066        summary="output to contain the surface"/>
1067    </request>
1068
1069    <request name="activate" since="42">
1070      <description summary="activates the window">
1071        Activates this window. This is equivalent to bringing the window to the
1072        foreground. The compositor is free to ignore this request if it deems
1073        the client to be misbehaving.
1074      </description>
1075    </request>
1076
1077    <request name="deactivate" since="42">
1078      <description summary="deactivates the window">
1079        Deactivates this window. This is equivalent to requesting that the
1080        window not be the foreground window. The exact behavior is
1081        compositor-defined. The compositor is free to ignore this request
1082        if it deems the client to be misbehaving.
1083      </description>
1084    </request>
1085
1086    <!-- Version 44 additions -->
1087    <enum name="fullscreen_mode">
1088      <description
1089        summary="Specifies the behavior of the surface in fullscreen.">
1090          Possible windowing system behaviors if this surface were to go
1091          fullscreen.
1092      </description>
1093       <entry
1094        name="plain"
1095        value="0"
1096        summary="user cannot access system UIs using mouse/touches"/>
1097      <entry
1098        name="immersive"
1099        value="1"
1100        summary="user can access system UIs such as the shelf and window frame
1101          by pointing to, or swiping over, the screen edge"/>
1102    </enum>
1103
1104    <request name="set_fullscreen_mode" since="44">
1105      <description summary="Sets the behavior of the surface in fullscreen.">
1106        Suggests how the windowing manager should behave if this surface were
1107        to go fullscreen. Does not make the surface fullscreen.
1108
1109        In precise, if the surface is not in fullscreen yet, switching the mode
1110        does not have immediate impact from the client side perspective, but
1111        will change the behavior when making the surface fullscreen is
1112        requested next time.
1113        If the surface is already in fullscreen, then this request has an
1114        immediate impact to switch the fullscreen mode between plan and
1115        immersive.
1116      </description>
1117      <arg name="mode" type="uint" enum="fullscreen_mode"/>
1118    </request>
1119
1120    <!-- Version 46 additions -->
1121    <request name="set_scale_factor" since="46">
1122      <description summary="Allows the client to set the scale factor for the future buffer commits.">
1123        The client has a 32-bit float scale factor that is associated with each
1124        zaura toplevel. This scale factor must be propagated exactly to exo. To
1125        do so we reinterpret_cast into a 32-bit uint and later cast back into a
1126        float. This is because wayland does not support native transport of
1127        floats. As different CPU architectures may use different endian
1128        representations for IEEE 754 floats, this protocol implicitly assumes
1129        that the caller and receiver are the same machine. To avoid redundant
1130        messages, this request needs to only be called once when the zaura
1131        toplevel scale factor changes. This is double buffered state and will be
1132        applied in the next commit.
1133      </description>
1134      <arg name="scale_factor_as_uint" type="uint"/>
1135    </request>
1136
1137    <!-- Version 48 additions-->
1138    <request name="set_snap_primary" since="48">
1139      <description summary="snap the surface to the primary snap position.">
1140        Request that surface is snapped to the left or top if primary layout,
1141        right or bottom otherwise.
1142      </description>/>
1143      <arg name="snap_ratio_as_uint" type="uint"/>
1144    </request>
1145
1146    <request name="set_snap_secondary" since="48">
1147      <description summary="snap the surface to the secondary snap position.">
1148        Request that surface is snapped to the right or bottom if primary
1149        layout, left or top otherwise.
1150      </description>
1151      <arg name="snap_ratio_as_uint" type="uint"/>
1152    </request>
1153
1154    <!-- Version 49 additions-->
1155    <enum name="snap_direction">
1156      <description summary="window snap directions">
1157        Window snap directions.
1158      </description>
1159      <entry name="none" value="0" summary="unsnap the window"/>
1160      <entry name="primary" value="1" summary="snap the window to the left or
1161        top in primary layout, right or bottom in secondary layout"/>
1162      <entry name="secondary" value="2" summary="snap the window to the right
1163        or bottom in primary layout, top or left in secondary layout"/>
1164    </enum>
1165
1166    <request name="intent_to_snap" since="49">
1167      <description summary="client intents to snap the surface.">
1168        Notify (or inform) the server the client's intent to snap the window.
1169        To inform it's no longer willing to snap, send 'none'.
1170      </description>
1171      <arg name="direction" type="uint" enum="snap_direction"/>
1172    </request>
1173
1174    <request name="unset_snap" since="49">
1175      <description summary="Unset the window snap.">
1176        Request that window unsets snapping.
1177      </description>
1178    </request>
1179
1180    <!-- Version 50 additions -->
1181    <event name="configure_raster_scale" since="50">
1182      <description summary="set the raster scale during a configure">
1183        Sets the raster scale of this window. This should be called during a
1184        configure event sequence. To do so we reinterpret_cast into a 32-bit
1185        uint and later cast back into a float. This is because wayland does not
1186        support native transport of floats. As different CPU architectures may
1187        use different endian representations for IEEE 754 floats, this protocol
1188        implicitly assumes that the caller and receiver are the same machine.
1189      </description>
1190      <arg name="scale" type="uint" summary="Raster scale, in float format"/>
1191    </event>
1192
1193    <!-- Version 52 additions -->
1194    <enum name="persistable">
1195      <description summary="Describes whether or not the value is persistable">
1196        Binary enum maps to boolean, describes whether or not a value is
1197        persistable.
1198      </description>
1199      <entry name="not_persistable" value="0" summary="the value is not persistable"/>
1200      <entry name="persistable" value="1" summary="the value is persistable"/>
1201    </enum>
1202
1203    <request name="set_persistable" since="52">
1204      <description summary="Describes if the window is persistable">
1205      Request the persistable status of a window.  Sets the persistable status
1206      of the window in its window properties.  Should be called before first
1207      commit.
1208      </description>
1209      <arg name="persistable" type="uint" enum="persistable" summary="is the argument persistable"/>
1210    </request>
1211
1212    <!-- Version 53 additions -->
1213    <request name="set_shape" since="53">
1214      <description summary="set the shape of the surface in DP">
1215        Sets the shape of the toplevel window in DP. Passing NULL will reset the
1216        shape of the window.
1217
1218        This should be used only in support of the existing (deprecated) Chrome
1219        Apps SetShape API and not for any other purpose.
1220      </description>
1221      <arg name="region" type="object" interface="wl_region" allow-null="true"/>
1222    </request>
1223
1224    <request name="set_top_inset" since="55">
1225      <description summary="set top inset to the surface">
1226        Sets the top inset to the surface. This represents the header height
1227        and should be non negative.
1228      </description>
1229      <arg name="height" type="int" summary="Top inset of client window. Should be non negative."/>
1230    </request>
1231
1232    <!-- Version 56 additions -->
1233    <enum name="rotate_direction">
1234      <entry name="backward" value="0" />
1235      <entry name="forward" value="1" />
1236    </enum>
1237
1238    <enum name="rotate_restart_state">
1239      <entry name="no_restart" value="0" />
1240      <entry name="restart" value="1" />
1241    </enum>
1242
1243    <event name="rotate_focus" since="56">
1244      <description summary="rotate focus within window">
1245        Rotates focus within the toplevel window. The window must sort its
1246        focusable view into a stable and linearly traversable order. Prior to
1247        rotating focus, the surface should already be activated and have
1248        keyboard focus. If the surface has not been activated or does not have
1249        keyboard focus, the server should first activate and enter keyboard
1250        focus for the window. An example of event order could be:
1251
1252        1. activate surface
1253        2. enter keyboard focus
1254        3. rotate focus
1255
1256        If the window is not activated or does not have keyboard focus, the
1257        client should respond with a "not handled" and not perform any
1258        operation.
1259
1260        To start a new series rotation, the server will set the "restart" arg
1261        to true. If the "restart" arg is set to true, the window should set the
1262        focus on the first UI element for the given direction and not perform
1263        any rotation.
1264
1265        The client should respond with whether the rotation was successful via
1266        the "handled" field in the "ack_rotate_focus" request. The client should
1267        pass on the event serial and direction within the ack message.
1268      </description>
1269      <arg name="serial" type="uint" summary="serial for the rotation event" />
1270      <arg name="direction" type="uint" enum="rotate_direction" summary="the direction for linear traversal" />
1271      <arg name="restart" type="uint" enum="rotate_restart_state" summary="whether or not to restart traversal" />
1272    </event>
1273
1274    <enum name="rotate_handled_state">
1275      <entry name="not_handled" value="0" />
1276      <entry name="handled" value="1" />
1277    </enum>
1278
1279    <request name="ack_rotate_focus" since="56">
1280      <description summary="status of rotate focus event">
1281        If the focus has been successfully rotated between UI elements inside
1282        surface, client replies with 'handled'. If the focus didn't rotate, the
1283        client reply with 'not_handled'. A server may use this to move the focus
1284        to next focusable surface.
1285
1286        Note that a delay in processing in the client could result in stale acks
1287        received by the server.
1288      </description>
1289      <arg name="serial" type="uint" summary="serial for the original; rotation event" />
1290      <arg name="handled" type="uint" enum="rotate_handled_state" summary="whether or not the rotation was successful" />
1291    </request>
1292
1293    <request name="set_can_maximize" since="58">
1294      <description summary="Hint that the toplevel surface can be maximized">
1295        Hints to the window manager that the toplevel surface can be maximized.
1296      </description>
1297    </request>
1298
1299    <request name="unset_can_maximize" since="58">
1300      <description summary="Hint that the toplevel surface should not be maximized">
1301        Hints to the window manager that the toplevel surface should not be
1302        maximized. Note that the window manager might still request the client
1303        to be maximized. In such an event, the client should respect the
1304        window manager's request and maximize. It may unset the maximized state
1305        afterwards.
1306      </description>
1307    </request>
1308
1309    <request name="set_can_fullscreen" since="58">
1310      <description summary="Hint that the toplevel surface can enter fullscreen">
1311        Hints to the window manager that the toplevel surface can enter
1312        fullscreen.
1313      </description>
1314    </request>
1315
1316    <request name="unset_can_fullscreen" since="58">
1317      <description summary="Hint that the toplevel surface should not enter fullscreen">
1318        Hints to the window manager that the toplevel surface should not be
1319        enter fullscreen. Note that the window manager might still request the
1320        client enter fullscreen. In such an event, the client should respect the
1321        window manager's request and enter fullscreen. It may exit fullscreen
1322        afterwards.
1323      </description>
1324    </request>
1325
1326    <!-- Version 59 additions -->
1327    <enum name="float_start_location">
1328      <description
1329        summary="Specifies the location of a surface that just got floated.">
1330          Possible start locations if a surface gets floated.
1331      </description>
1332       <entry
1333        name="bottom_right"
1334        value="0"
1335        summary="On float, surface goes to the bottom right of the work area. This is the default."/>
1336      <entry
1337        name="bottom_left"
1338        value="1"
1339        summary="On float, surface goes to the bottom left of the work area."/>
1340    </enum>
1341    <request name="set_float_to_location" since="59">
1342      <description summary="float the surface on top">
1343        This is a request to place the surface above others.
1344      </description>
1345      <arg name="mode" type="uint" enum="float_start_location"/>
1346    </request>
1347
1348    <!-- Version 60 additions -->
1349    <request name="set_window_corner_radii" since="60">
1350      <description summary="Request to apply rounded corners to the window of the surface.">
1351        The client specifies the radius of each corner to be applied to the
1352        window in DPs (device independent pixels).
1353
1354        The window radius is double buffered, and will be applied at the
1355        time wl_surface.commit of the corresponding wl_surface is called.
1356
1357        Note: Rounded corner radii affects the wl_surface tree, including
1358        subsurfaces. Once this protocol is called, surfaces cannot set
1359        their own rounded corner bounds because rounded window bounds will be
1360        applied to the whole surface tree.
1361      </description>
1362      <arg name="upper_left_radius" type="uint"/>
1363      <arg name="upper_right_radius" type="uint"/>
1364      <arg name="lower_right_radius" type="uint"/>
1365      <arg name="lower_left_radius" type="uint"/>
1366    </request>
1367
1368    <!-- Version 62 additions -->
1369    <enum name="in_overview">
1370      <description summary="Describes whether or not the value is in overview">
1371        Binary enum maps to boolean, describes whether or not a value is in
1372        overview.
1373      </description>
1374      <entry name="not_in_overview" value="0" summary="the value is not in overview"/>
1375      <entry name="in_overview" value="1" summary="the value is in overview"/>
1376    </enum>
1377
1378    <event name="overview_change" since="62">
1379      <description summary="window is in overview">
1380        The window is being shown in overview mode. Note that this is
1381        different than shell overview state, as not all windows will be
1382        part of the overview grid.
1383      </description>
1384      <arg name="in_overview" type="uint" enum="in_overview" summary="in overview or not"/>
1385    </event>
1386
1387    <!-- Version 63 additions -->
1388    <request name="set_shadow_corner_radii" since="63">
1389      <description summary="Request to apply rounded corners to the shadow of the surface.">
1390        The client specifies the radius of each corner to be applied to the shadow
1391        associated with the aura toplevel surface in device independent pixels (DPs).
1392
1393        The shadow radius is double buffered, and will be applied at the
1394        time wl_surface.commit of the corresponding wl_surface is called.
1395      </description>
1396      <arg name="upper_left_radius" type="uint"/>
1397      <arg name="upper_right_radius" type="uint"/>
1398      <arg name="lower_right_radius" type="uint"/>
1399      <arg name="lower_left_radius" type="uint"/>
1400    </request>
1401
1402    <!-- Version 65 additions -->
1403    <event name="configure_occlusion_state" since="65">
1404      <description summary="set the occlusion state during a configure">
1405        Sets the occlusion state of this window. This should be called during a
1406        configure event sequence. This is used when the occlusion state needs to
1407        be set as a synchronized operation, compared to occlusion_state_changed,
1408        which is not synchronized. For example, this can be used to mark a
1409        window as hidden so it can discard resources. When making it visible
1410        again, it may need some time to recreate its buffers, which is why this
1411        operation needs to be synchronized.
1412      </description>
1413      <arg name="mode" type="uint" enum="occlusion_state"/>
1414    </event>
1415
1416  </interface>
1417
1418  <interface name="zaura_popup" version="46">
1419    <description summary="aura shell interface to the popup shell">
1420      An interface to the popup shell, which allows the
1421      client to access shell specific functionality.
1422    </description>
1423
1424   <request name="surface_submission_in_pixel_coordinates" since="28">
1425      <description summary="surface will be submitted in pixel coordinates">
1426        Informs the server that when submitting this surface, this client will not
1427        use wl_surface_set_buffer_scale to report the scales, nor will it apply
1428        scale via vp_viewporter. Instead the server should apply an appropriate
1429        scale transform for the submitted buffers to be composited correctly.
1430      </description>
1431    </request>
1432
1433    <request name="set_decoration" since="35">
1434      <description summary="request a decoration for surface">
1435        Clients are allowed to request a particular decoration for a
1436        zaura_toplevel. The server is not required to honor this request. See
1437        decoration_type for available options. Available since M105.
1438      </description>
1439      <arg name="type" type="uint" summary="the new frame type"/>
1440    </request>
1441
1442    <enum name="decoration_type">
1443      <description summary="different decoration types">
1444	Decoration types are used to modify the surface (e.g. drop shadow).
1445      </description>
1446      <entry name="none" value="0" summary="no frame"/>
1447      <entry name="normal" value="1" summary="caption with shadow"/>
1448      <entry name="shadow" value="2" summary="shadow only"/>
1449    </enum>
1450
1451    <request name="set_menu" since="37">
1452      <description summary="set popup type to menu">
1453        Set popup type to menu
1454      </description>
1455    </request>
1456
1457    <!-- Version 38 additions -->
1458    <request name="release" type="destructor" since="38">
1459      <description summary="destroy zaura_popup">
1460	This request destroys the zaura_popup. A client should call destroy when the
1461  role is unmapped from a wl_surface.
1462
1463  See zaura_shell.release for destructor naming.
1464      </description>
1465    </request>
1466
1467    <!-- Version 46 additions -->
1468    <request name="set_scale_factor" since="46">
1469      <description summary="Allows the client to set the scale factor for the future buffer commits.">
1470        The client has a 32-bit float scale factor that is associated with each
1471        zaura popup. This scale factor must be propagated exactly to exo. To
1472        do so we reinterpret_cast into a 32-bit uint and later cast back into a
1473        float. This is because wayland does not support native transport of
1474        floats. As different CPU architectures may use different endian
1475        representations for IEEE 754 floats, this protocol implicitly assumes
1476        that the caller and receiver are the same machine. To avoid redundant
1477        messages, this request needs to only be called once when the zaura
1478        popup's scale factor changes.
1479      </description>
1480      <arg name="scale_factor_as_uint" type="uint"/>
1481    </request>
1482  </interface>
1483
1484  <interface name="zaura_output_manager" version="3">
1485    <description summary="aura shell interface to the output manager">
1486      [Deprecated] Deprecated since M122. See the zaura_output_manager_v2
1487      interface.
1488
1489      A global responsible for ensuring clients have a complete view of a given
1490      output's state immediately following the bind of wl_output, and
1491      subsequently as needed.
1492
1493      Clients can expect that all the manager's events for a given wl_output
1494      arrive before the associated wl_output.done event. Clients must bind to
1495      the manager global before any output globals.
1496    </description>
1497
1498    <event name="done" since="1">
1499      <description summary="sent all information about output">
1500        This event is sent after all relevant properties of a
1501        zaura_output_manager for a given wl_output have been sent.
1502      </description>
1503      <arg name="output" type="object" interface="wl_output" />
1504    </event>
1505
1506    <event name="display_id" since="1">
1507      <description summary="advertise the output's display id">
1508        This event describes the 64bit display id assigned to each display by
1509        ChromeOS. The value is opaque and should not be interpreted.
1510
1511        The event is sent when binding to the output object and subsequently as
1512        output state changes.
1513      </description>
1514      <arg name="output" type="object" interface="wl_output" />
1515      <arg name="display_id_hi" type="uint" />
1516      <arg name="display_id_lo" type="uint" />
1517    </event>
1518
1519    <event name="logical_position" since="1">
1520      <description
1521          summary="position of the output within the global compositor space">
1522        The position event describes the location of the wl_output within the
1523        global compositor space.
1524
1525        The event is sent when binding to the output object and subsequently as
1526        output state changes.
1527      </description>
1528      <arg name="output" type="object" interface="wl_output" />
1529      <arg name="x" type="int"
1530          summary="x position within the global compositor space" />
1531      <arg name="y" type="int"
1532          summary="y position within the global compositor space" />
1533    </event>
1534
1535    <event name="logical_size" since="1">
1536      <description summary="size of the output in the global compositor space">
1537        The logical_size event describes the logical size of the output in the
1538        global compositor space.
1539
1540        The event is sent when binding to the output object and subsequently as
1541        output state changes.
1542      </description>
1543      <arg name="output" type="object" interface="wl_output" />
1544      <arg name="width" type="int" summary="width in global compositor space" />
1545      <arg name="height" type="int"
1546          summary="height in global compositor space" />
1547    </event>
1548
1549    <event name="physical_size" since="1">
1550      <description summary="size of the output in pixels">
1551        The physical resolution of the display in pixels. The value should not
1552        include any overscan insets or display rotation, except for any panel
1553        orientation adjustment.
1554
1555        The event is sent when binding to the output object and subsequently as
1556        output state changes.
1557      </description>
1558      <arg name="output" type="object" interface="wl_output" />
1559      <arg name="width" type="int"
1560          summary="width in global compositor space" />
1561      <arg name="height" type="int"
1562          summary="height in global compositor space" />
1563    </event>
1564
1565    <event name="insets" since="1">
1566      <description summary="advertise the work area insets for the output">
1567        This event describes the insets for the output in logical screen
1568        coordinates, from which the work area can be calculated.
1569
1570        The event is sent when binding to the output object and subsequently as
1571        output state changes.
1572      </description>
1573      <arg name="output" type="object" interface="wl_output" />
1574      <arg name="top" type="int" />
1575      <arg name="left" type="int" />
1576      <arg name="bottom" type="int" />
1577      <arg name="right" type="int" />
1578    </event>
1579
1580    <event name="device_scale_factor" since="1">
1581      <description summary="advertise device scale factor for the output">
1582        The scale factor of the output device. We reinterpret_cast the float
1583        scale factor into a 32-bit uint and later cast back into a float. This
1584        is because wayland does not support native transport of floats. As
1585        different CPU architectures may use different endian representations for
1586        IEEE 754 floats, this protocol implicitly assumes that the caller and
1587        receiver are the same machine.
1588
1589        The event is sent when binding to the output object and subsequently as
1590        output state changes.
1591      </description>
1592      <arg name="output" type="object" interface="wl_output" />
1593      <arg name="device_scale_factor" type="uint"
1594          summary="display scale factor, in float format" />
1595    </event>
1596
1597    <event name="logical_transform" since="1">
1598      <description summary="logical transform of the output">
1599        This event describes the logical transform for the output. Whereas
1600        panel transform corresponds to the display's panel rotation, the logical
1601        transform corresponds to the display's logical rotation.
1602
1603        The event is sent when binding to the output object and subsequently as
1604        output state changes.
1605      </description>
1606      <arg name="output" type="object" interface="wl_output" />
1607      <arg name="transform" type="int" enum="wl_output.transform"
1608        summary="transform that maps framebuffer to output" />
1609    </event>
1610
1611    <event name="panel_transform" since="1">
1612      <description summary="panel transform of the output">
1613        This event describes the panel transform for the output, which is the
1614        associated display's panel rotation.
1615
1616        The event is sent when binding to the output object and subsequently as
1617        output state changes.
1618      </description>
1619      <arg name="output" type="object" interface="wl_output" />
1620      <arg name="transform" type="int" enum="wl_output.transform"
1621        summary="transform that maps framebuffer to output" />
1622    </event>
1623
1624    <event name="name" since="1">
1625      <description summary="human-readable name of this output">
1626        The name is a UTF-8 string with no convention defined for its contents.
1627
1628        The event is sent when binding to the output object and subsequently as
1629        output state changes.
1630      </description>
1631      <arg name="output" type="object" interface="wl_output" />
1632      <arg name="name" type="string" summary="output name" />
1633    </event>
1634
1635    <event name="description" since="1">
1636      <description summary="human-readable description of this output">
1637        The description is a UTF-8 string with no convention defined for its
1638        contents.
1639
1640        The event is sent when binding to the output object and subsequently as
1641        output state changes.
1642      </description>
1643      <arg name="output" type="object" interface="wl_output" />
1644      <arg name="description" type="string" summary="output description" />
1645    </event>
1646
1647    <!-- Version 2 additions -->
1648    <event name="activated" since="2">
1649      <description summary="target display for new windows">
1650        Notifies that this output is now active output. It is typically used as
1651        a target when a new window is created without specific bounds.
1652      </description>
1653      <arg name="output" type="object" interface="wl_output" />
1654    </event>
1655
1656    <!-- Version 3 additions -->
1657    <event name="overscan_insets" since="3">
1658      <description summary="advertise the overscan insets for the output">
1659        This event describes the overscan insets for the output in physical
1660        pixels.
1661
1662        The event is sent when binding to the output object and subsequently as
1663        output state changes.
1664      </description>
1665      <arg name="output" type="object" interface="wl_output" />
1666      <arg name="top" type="int" />
1667      <arg name="left" type="int" />
1668      <arg name="bottom" type="int" />
1669      <arg name="right" type="int" />
1670    </event>
1671  </interface>
1672</protocol>
1673