• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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="51">
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  </interface>
162
163  <interface name="zaura_surface" version="51">
164    <description summary="aura shell interface to a wl_surface">
165      An additional interface to a wl_surface object, which allows the
166      client to access aura shell specific functionality for surface.
167    </description>
168
169    <enum name="frame_type">
170      <description summary="different frame types">
171	Frame types that can be used to decorate a surface.
172      </description>
173      <entry name="none" value="0" summary="no frame"/>
174      <entry name="normal" value="1" summary="caption with shadow" />
175      <entry name="shadow" value="2" summary="shadow only"/>
176    </enum>
177
178    <request name="set_frame">
179      <description summary="request a frame for surface">
180        [Deprecated] Suggests a surface should use a specific frame. Deprecated
181        since M105. See the set_decoration method on zaura_toplevel and
182        zaura_popup.
183      </description>
184      <arg name="type" type="uint" summary="the new frame type"/>
185    </request>
186
187    <!-- Version 2 additions -->
188
189    <request name="set_parent" since="2">
190      <description summary="set the parent of this surface">
191	Set the "parent" of this surface. "x" and "y" arguments specify the
192	initial position for surface relative to parent.
193      </description>
194      <arg name="parent" type="object" interface="zaura_surface" allow-null="true"/>
195      <arg name="x" type="int"/>
196      <arg name="y" type="int"/>
197    </request>
198
199    <!-- Version 3 additions -->
200
201    <request name="set_frame_colors" since="3">
202      <description summary="set the frame colors of this surface">
203	Set the frame colors.
204      </description>
205      <arg name="active_color" type="uint" summary="32 bit ARGB color value, not premultiplied"/>
206      <arg name="inactive_color" type="uint" summary="32 bit ARGB color value, not premultiplied"/>
207    </request>
208
209    <!-- Version 4 additions -->
210
211    <request name="set_startup_id" since="4">
212      <description summary="set the startup ID of this surface">
213	Set the startup ID.
214      </description>
215      <arg name="startup_id" type="string" allow-null="true"/>
216    </request>
217
218    <!-- Version 5 additions -->
219
220    <request name="set_application_id" since="5">
221      <description summary="set the application ID of this surface">
222	Set the application ID.
223      </description>
224      <arg name="application_id" type="string" allow-null="true"/>
225    </request>
226
227    <!-- Version 7 additions -->
228
229    <request name="set_client_surface_id" since="7">
230      <description summary="set the client surface ID of this surface">
231	Deprecated. Please use set_client_surface_str_id instead.
232	Set the identifier of the surface assigned by the client.
233      </description>
234      <arg name="client_surface_id" type="int" />
235    </request>
236
237    <!-- Version 8 additions -->
238
239    <enum name="occlusion_change_reason">
240      <description summary="occlusion change reason">
241	Enum describing why an occlusion change happened. An occlusion change as a
242	result of a user action could include things like the user moving a window,
243	changing occlusion, or opening/closing a window, changing the occlusion.
244      </description>
245      <entry name="user_action" value="1" summary="occlusion changed as a result of a user action"/>
246    </enum>
247
248    <request name="set_occlusion_tracking" since="8">
249      <description summary="set tracked occlusion region">
250	Sets occlusion tracking on this surface. The client will be updated with a
251	new occlusion fraction when the amount of occlusion of this surface changes.
252      </description>
253    </request>
254
255    <request name="unset_occlusion_tracking" since="8">
256      <description summary="unset tracked occlusion region">
257	Unsets occlusion tracking for this surface.
258      </description>
259    </request>
260
261    <event name="occlusion_changed" since="8">
262      <description summary="Notifies on an occlusion change">
263	Notifies when there is a change in the amount this surface is occluded.
264	The occlusion update is sent as a fixed point number from 0 to 1, representing
265	the proportion of occlusion.
266      </description>
267      <arg name="occlusion_fraction" type="fixed"/>
268      <arg name="occlusion_reason" type="uint"/>
269    </event>
270
271    <!-- Version 9 additions -->
272
273    <request name="activate" since="9">
274      <description summary="Indicate that this window wants to be the active window">
275        [Deprecated] Make this the active window. This usually implies something
276        like restacking this surface to the foreground. The compositor is free
277        to ignore this request if it deems the client to be misbehaving.
278        Typically this request will only be honoured in response to some user
279        driven event, such as executing an application or opening a file in a
280        window that already exists.
281      </description>
282    </request>
283
284    <request name="draw_attention" since="9">
285      <description summary="Indicate that this window wants some of the user's attention">
286	Draw attention to this surface in a way that does not change the user's
287	focus. This usually means animating window decorations or taskbar icons.
288	The compositor can still ignore this request if it deems fit, but unlike
289	draw_focus, these requests are expected to come from background tasks,
290	and are more likely to be honoured.
291      </description>
292    </request>
293
294    <!-- Version 10 additions -->
295
296    <enum name="fullscreen_mode">
297      <description
298        summary="Specifies the behavior of the surface in fullscreen.">
299          [Deprecated] Possible windowing system behaviors if this surface were to go
300          fullscreen.
301      </description>
302      <entry
303        name="immersive"
304        value="0"
305        summary="user can access system UIs such as the shelf and window frame
306          by pointing to, or swiping over, the screen edge"/>
307      <entry
308        name="plain"
309        value="1"
310        summary="user cannot access system UIs using mouse/touches"/>
311    </enum>
312
313    <request name="set_fullscreen_mode" since="10">
314      <description summary="Sets the behavior of the surface in fullscreen.">
315        [Deprecated] Use the set_fullscreen_mode in the toplevel interface.
316        Suggests how the windowing system should behave if this surface were
317        to go fullscreen. Does not make the surface fullscreen.
318
319        Typically the default mode is "immersive".
320      </description>
321      <arg name="mode" type="uint" enum="fullscreen_mode"/>
322    </request>
323
324    <!-- Version 12 additions -->
325
326    <request name="set_client_surface_str_id" since="12">
327      <description summary="set the client surface ID of this surface">
328        Set the identifier of the surface assigned by the client.
329      </description>
330      <arg name="client_surface_id" type="string" />
331    </request>
332
333    <!-- Version 15 additions -->
334
335    <request name="set_server_start_resize" since="15">
336      <description summary="request a server-side shadow for surface">
337	Suggests a surface to have client-side decoration, but
338	server-side decides when and where to start the resize. The server may also
339	apply visual effects to indicate that the resize operation is ongoing.
340      </description>
341    </request>
342
343    <!-- Version 16 additions -->
344
345    <enum name="snap_direction">
346      <description summary="surface snap directions">
347        Surface snap directions.
348      </description>
349      <entry name="none" value="0" summary=""/>
350      <entry name="left" value="1" summary=""/>
351      <entry name="right" value="2" summary=""/>
352    </enum>
353
354    <request name="intent_to_snap" since="16">
355      <description summary="client intents to snap the surface.">
356        [Deprecated] Use intent_to_snap on zaura_toplevel.
357        Notify (or inform) the server the client's intent to snap the window.
358        To inform it's no longer willing to snap, send 'none'.
359      </description>
360      <arg name="direction" type="uint" enum="snap_direction"/>
361    </request>
362
363    <request name="set_snap_left" since="16">
364      <description summary="snap the surface to the left.">
365        [Deprecated] Use set_snap_primary on zaura_toplevel.
366        Request that surface is snapped to the left.
367      </description>
368    </request>
369
370    <request name="set_snap_right" since="16">
371      <description summary="snap the surface to the right.">
372        [Deprecated] Use set_snap_secondary on zaura_toplevel.
373        Request that surface is snapped to the right.
374      </description>
375    </request>
376
377    <request name="unset_snap" since="16">
378      <description summary="Unset the surface snap.">
379        [Deprecated] Use unset_snap on zaura_toplevel.
380        Request that surface resets snapping.
381      </description>
382    </request>
383
384    <!-- Version 17 additions -->
385
386    <event name="lock_frame_normal" since="17">
387      <description summary="Notify the client that server intent to lock window in normal or restore state">
388        Notifies the client to lock window in normal or restore state. When
389        window is locked, the window frame should look like it is in restored
390        state, but actually isn't. Locking happends while dragging a maximized
391        window.
392      </description>
393    </event>
394
395    <event name="unlock_frame_normal" since="17">
396      <description summary="Notify the client that server intent to unlock window's normal or restore state">
397        Notifies the client to unlock window if it is previously locked.
398        Unlocking happends while dragging a maximized window.
399      </description>
400    </event>
401
402    <!-- Version 18 additions -->
403    <request name="set_window_session_id" since="18">
404      <description summary="set surface window session id">
405          Set window session id to the surface.
406      </description>
407      <arg name="id" type="int" summary="window session id"/>
408    </request>
409
410    <!-- Version 19 additions -->
411    <request name="set_can_go_back" since="19">
412      <description summary="Set the minimize-on-back-gesture behavior.">
413        Sets that the surface can go back as per its navigation list.
414        This allows the server to react to by minimizing the window upon a
415        system wide back gesture.
416      </description>
417    </request>
418
419    <request name="unset_can_go_back" since="19">
420      <description summary="Unset the minimize-on-back-gesture behavior.">
421        Unsets that the surface can go back as per its navigation list.
422        See above.
423      </description>
424    </request>
425
426    <!-- Version 20 additions -->
427    <request name="set_pip" since="20">
428      <description summary="Set pip for the surface.">
429        Requests that the surface is set to Picture-in-Picture (PIP).
430      </description>
431    </request>
432
433    <request name="unset_pip" since="20">
434      <description summary="Unset pip for the surface.">
435        Requests that the surface is unset from Picture-in-Picture (PIP).
436      </description>
437    </request>
438
439    <request name="set_aspect_ratio" since="20">
440      <description summary="Set aspect ratio for the surface.">
441        Sets the aspect ratio of the surface.
442      </description>
443      <arg name="width" type="int"/>
444      <arg name="height" type="int"/>
445    </request>
446
447    <!-- Version 21 additions -->
448    <enum name="occlusion_state">
449      <description summary="surface occlusion state">
450	Describes the occlusion state of a surface.
451      </description>
452      <entry name="unknown" value="0" summary="The surface's occlusion state isn't tracked"/>
453      <entry name="visible" value="1" summary="The surface is visible"/>
454      <entry name="occluded" value="2" summary="The surface is occluded"/>
455      <entry name="hidden" value="3" summary="The surface is not visible"/>
456    </enum>
457
458    <event name="occlusion_state_changed" since="21">
459      <description summary="Notify the client that the occlusion state changed">
460	Notifies the client that the occlusion state of a window has changed. Clients
461	will only receive these messages if they previously request occlusion tracking
462  via set_occlusion_tracking for a particular surface.
463      </description>
464      <arg name="mode" type="uint" enum="occlusion_state"/>
465    </event>
466
467    <!-- Version 22 additions -->
468    <request name="move_to_desk" since="22">
469        <description summary="move to desk">
470        If |index| equals -1, requests that the server toggles whether client
471        is visible on all workspaces.
472        If |index| is not -1, requests that the server moves the client to the desk at
473        |index|.
474      </description>
475      <arg name="index" type="int"/>
476    </request>
477
478    <event name="desk_changed" since="22">
479      <description summary="window desk state changed">
480        Notifies when there is a change in the desk state of a window.
481        This is emitted when a window is moved to another desk or
482        when its assigned-to-all-desks state changes.
483      </description>
484      <arg name="state" type="int" summary="index of desk or -1 for a window assigned to all desks"/>
485    </event>
486
487    <!-- Version 23 additions -->
488    <request name="set_initial_workspace" since="23">
489      <description summary="initial workspace for restore">
490        If |initial_workspace| equals '-1', a window is restored and visible on all workspaces,
491        Otherwise, set the initial workspace to restore the window to the corresponding workspace.
492        This is not double buffered and must be set before attaching a buffer.
493      </description>
494      <arg name="initial_workspace" type="string" summary="intial workspace for restoring or '-1' for visible on all workspaces"/>
495    </request>
496
497    <!-- Version 25 additions -->
498    <request name="set_pin" since="25">
499      <description summary="pin a window (trusted or not)">
500	Requests that a window is pinned which means that the system does not allow
501  the user to leave the window until an exit criteria is met.
502
503	This is a request to get the window pinned so that the user cannot get to any
504	other window / application. There are two modes:
505  A. trusted is 0 - which is slightly less restrictive and allows the user to
506  get out of the window by a predefined way of authentication.
507  B. trusted is not 0 in which case a trusted application was locking down the
508  system and needs to unlock. This is used for e.g. School tests.
509      </description>
510      <arg name="trusted" type="int" summary="0 for non trusted"/>
511    </request>
512
513    <request name="unset_pin" since="25">
514      <description summary="unpin a window">
515	Requests that the user can leave a previously pinned window.
516
517	This is a request to unpin a previously pinned window. It does not matter if
518  the window was locked with the trusted state or not.
519      </description>
520    </request>
521
522    <event name="start_throttle" since="29">
523      <description summary="start throttling on the surface">
524        Informs the client to start throttling on the surface.
525      </description>
526    </event>
527    <event name="end_throttle" since="29">
528      <description summary="end throttling on the surface">
529        Informs the client to end throttling on the surface.
530      </description>
531    </event>
532
533    <!-- Version 38 additions -->
534    <request name="release" type="destructor" since="38">
535      <description summary="destroy zaura_surface">
536	Destroy the zaura_surface object. A client should destroy this object when the
537  role is unmapped from a wl_surface.
538
539  See zaura_shell.release for destructor naming.
540      </description>
541    </request>
542
543    <!-- Version 47 additions -->
544    <request name="show_tooltip" since="47">
545      <description summary="show tooltip window">
546        Show tooltip on server side.
547        `x` and `y` specifies the location of tooltip in surface local coordinates.
548        `hide_delay` and `show_delay` specify the time to wait until showing/hiding tooltip.
549        The unit is millisecond.
550      </description>
551      <arg name="text" type="string"/>
552      <arg name="x" type="int"/>
553      <arg name="y" type="int"/>
554      <arg name="tooltip_trigger" type="uint" summary="tooltip_trigger enum"/>
555      <arg name="show_delay" type="uint" summary="delay to show tooltip in millisecond"/>
556      <arg name="hide_delay" type="uint" summary="delay to hide tooltip in millisecond"/>
557    </request>
558
559    <enum name="tooltip_trigger">
560      <description summary="type of tooltip trigger">
561        Describes what triggered tooltip
562      </description>
563      <entry name="cursor" value="0" summary="triggered by cursor"/>
564      <entry name="keyboard" value="1" summary="triggered by keyboard"/>
565    </enum>
566
567    <request name="hide_tooltip" since="47">
568      <description summary="hide tooltip window">
569        Hide tooltip created by the same client on server side.
570        This may be called even when there is no tooltip window to hide.
571      </description>
572    </request>
573
574    <event name="tooltip_shown" since="47">
575      <description summary="tooltip is shown by server side">
576        Informs the client that the tooltip is shown with states.
577        `x` and `y` specifies the location of tooltip in surface local coordinates.
578      </description>
579      <arg name="text" type="string"/>
580      <arg name="x" type="int"/>
581      <arg name="y" type="int"/>
582      <arg name="width" type="int"/>
583      <arg name="height" type="int"/>
584    </event>
585
586    <event name="tooltip_hidden" since="47">
587      <description summary="tooltip is hidden by server side">
588        Informs the client that the tooltip is hidden.
589      </description>
590    </event>
591
592    <!-- Version 51 additions -->
593    <request name="set_accessibility_id" since="51">
594      <description summary="set accessibility ID to the surface">
595        Set accessibility window ID to the surface. A negative number removes
596        the existing accessibility ID from the surface.
597      </description>
598      <arg name="id" type="int" summary="Accessibility ID. Negative number removes existing accessibility ID from the surface."/>
599    </request>
600  </interface>
601
602  <interface name="zaura_output" version="45">
603    <description summary="aura shell interface to a wl_output">
604      An additional interface to a wl_output object, which allows the
605      client to access aura shell specific functionality for output.
606    </description>
607
608    <!-- Version 2 additions -->
609
610    <enum name="scale_property" bitfield="true">
611      <description summary="scale information">
612	These flags describe properties of an output scale.
613	They are used in the flags bitfield of the scale event.
614      </description>
615      <entry name="current" value="0x1"
616	     summary="indicates this is the current scale"/>
617      <entry name="preferred" value="0x2"
618	     summary="indicates this is the preferred scale"/>
619    </enum>
620
621    <enum name="scale_factor">
622      <entry name="0400" value="400"/>
623      <entry name="0500" value="500"/>
624      <entry name="0550" value="550"/>
625      <entry name="0600" value="600"/>
626      <entry name="0625" value="625"/>
627      <entry name="0650" value="650"/>
628      <entry name="0700" value="700"/>
629      <entry name="0750" value="750"/>
630      <entry name="0800" value="800"/>
631      <entry name="0850" value="850"/>
632      <entry name="0900" value="900"/>
633      <entry name="0950" value="950"/>
634      <entry name="1000" value="1000"/>
635      <entry name="1050" value="1050"/>
636      <entry name="1100" value="1100"/>
637      <entry name="1150" value="1150"/>
638      <entry name="1125" value="1125"/>
639      <entry name="1200" value="1200"/>
640      <entry name="1250" value="1250"/>
641      <entry name="1300" value="1300"/>
642      <entry name="1400" value="1400"/>
643      <entry name="1450" value="1450"/>
644      <entry name="1500" value="1500"/>
645      <entry name="1600" value="1600"/>
646      <entry name="1750" value="1750"/>
647      <entry name="1800" value="1800"/>
648      <entry name="2000" value="2000"/>
649      <entry name="2200" value="2200"/>
650      <entry name="2250" value="2250"/>
651      <entry name="2500" value="2500"/>
652      <entry name="2750" value="2750"/>
653      <entry name="3000" value="3000"/>
654      <entry name="3500" value="3500"/>
655      <entry name="4000" value="4000"/>
656      <entry name="4500" value="4500"/>
657      <entry name="5000" value="5000"/>
658    </enum>
659
660    <event name="scale" since="2">
661      <description summary="advertise available scales for the output">
662	The scale event describes an available scale for the output.
663
664	The event is sent when binding to the output object and there
665	will always be one scale, the current scale. The event is sent
666	again if an output changes scale, for the scale that is now
667	current. In other words, the current scale is always the last
668	scale that was received with the current flag set.
669      </description>
670      <arg name="flags" type="uint" enum="scale_property" summary="bitfield of scale flags"/>
671      <arg name="scale" type="uint" enum="scale_factor" summary="output scale"/>
672    </event>
673
674    <!-- Version 5 additions -->
675
676    <enum name="connection_type">
677      <entry name="unknown" value="0"/>
678      <entry name="internal" value="1"/>
679    </enum>
680
681    <event name="connection" since="5">
682      <description summary="advertise connection for the output">
683	The connection event describes how the output is connected.
684
685	The event is sent when binding to the output object.
686      </description>
687      <arg name="connection" type="uint" enum="connection_type" summary="output connection"/>
688    </event>
689
690    <event name="device_scale_factor" since="5">
691      <description summary="advertise device scale factor for the output">
692	This event describes the device specific scale factor for the output.
693
694	The device specific scale factor is not expected the change during
695	the lifetime of the output. And it is not limited to an integer value
696	like the scale factor provided by wl_output interface. The exact
697	contents scale used by the compositor can be determined by combining
698	this device scale factor with the current output scale.
699
700	The event is sent when binding to the output object.
701      </description>
702      <arg name="scale" type="uint" enum="scale_factor" summary="output device scale factor"/>
703    </event>
704
705    <!-- Version 33 additions -->
706
707    <event name="insets" since="33">
708      <description summary="advertise the insets for the output">
709        This event describes the insets for the output in logical screen
710        coordinates, from which the work area can be calculated.
711
712        This event is sent before wl_output.done, after which the client would
713        apply the change.
714      </description>
715      <arg name="top" type="int"/>
716      <arg name="left" type="int"/>
717      <arg name="bottom" type="int"/>
718      <arg name="right" type="int"/>
719    </event>
720
721    <!-- Version 34 additions -->
722
723    <event name="logical_transform" since="34">
724      <description summary="advertise the output's logical transform">
725        This event describes the logical transform for the output. Whereas
726        wl_output.geometry's transform corresponds to the display's panel
727        rotation, the logical transform corresponds to the display's logical
728        rotation.
729
730        This event is sent before wl_output.done, after which the client would
731        apply the change.
732      </description>
733      <arg name="transform" type="int" enum="wl_output.transform"/>
734    </event>
735
736    <!-- Version 38 additions -->
737    <request name="release" type="destructor" since="38">
738      <description summary="destroy zaura_output">
739	Destroy this zaura_shell object.
740
741	Destroying a bound zaura_shell object while there are zaura_surfaces
742	still alive created by this zaura_shell object instance is illegal
743	and will result in a protocol error.
744
745  See zaura_shell.release for destructor naming.
746      </description>
747    </request>
748
749    <event name="display_id" since="43">
750      <description summary="advertise the output's display id">
751        This event describes the 64bit display id assigned to each display by ChromeOS.
752	The value is opaque and should not be interpreted.
753      </description>
754      <arg name="display_id_hi" type="uint"/>
755      <arg name="display_id_lo" type="uint"/>
756    </event>
757
758    <!-- Version 45 additions -->
759    <event name="activated" since="45">
760      <description summary="target display for new windows">
761        Notifies that this output is now active output. It is typically used as a
762        target when a new window is created without specific bounds.
763      </description>
764    </event>
765  </interface>
766
767  <interface name="zaura_toplevel" version="50">
768    <description summary="aura shell interface to the toplevel shell">
769      An interface to the toplevel shell, which allows the
770      client to access shell specific functionality.
771    </description>
772
773    <enum name="orientation_lock">
774      <description summary="orientation lock request">
775  Defines orientation request when a surface is in fullscreen.
776      </description>
777      <entry name="none" value="1" summary="no orientation lock"/>
778      <entry name="portrait" value="2" summary="primary or secondary portrait"/>
779      <entry name="landscape" value="3" summary="primary or secondary landscape"/>
780      <entry name="current" value="4" summary="keep current orientation"/>
781      <entry name="portrait_primary" value="5" summary="primary portrait"/>
782      <entry name="landscape_primary" value="6" summary="primary landscape"/>
783      <entry name="portrait_secondary" value="7" summary="secondary portrait"/>
784      <entry name="landscape_secondary" value="8" summary="secondary landscape"/>
785    </enum>
786
787    <request name="set_orientation_lock" since="26">
788      <description summary="set orientation lock for a remote surface">
789  Request a specific orientation behavior when this surface is in fullscreen.
790      </description>
791      <arg name="orientation_lock" type="uint" enum="orientation_lock"/>
792    </request>
793    <request name="surface_submission_in_pixel_coordinates" since="28">
794      <description summary="surface will be submitted in pixel coordinates">
795        Informs the server that when submitting this surface, this client will not
796        use wl_surface_set_buffer_scale to report the scales, nor will it apply
797        scale via vp_viewporter. Instead the server should apply an appropriate
798        scale transform for the submitted buffers to be composited correctly.
799      </description>
800    </request>
801
802    <request name="set_supports_screen_coordinates" since="29">
803      <description summary="enables screen coordinates in window bounds">
804	Requesting this will enable screen coordinates in surfaces
805	associated with aura_toplevel including sub surfaces and popup
806	windows who added this toplevel as a parent. This should be
807	set before first commit.
808      </description>
809    </request>
810
811    <request name="set_window_bounds" since="29">
812      <description summary="set window size and position">
813	Request a new location and bounds of the surface in DP screen
814	coordinates.  The size will be applied to visible bounds used
815	in set_geometry.  The output is a hint for the compositor to
816	determine which output the window should move to. If the
817	output is null, the compositor should make decision solely by
818	the given bounds. These parameters are just a request and the
819	compositor may ignore, adjust the size and position based on
820	the rule imposed by the window manager, or may preserve it for
821	future operations. For example, the compositor will not allow
822	a position outside of the output, or the compositor may just
823	store it if the toplevel surface is in maximiezd state, and
824	may use it upon unmaximized.
825      </description>
826      <arg name="x" type="int"/>
827      <arg name="y" type="int"/>
828      <arg name="width" type="int"/>
829      <arg name="height" type="int"/>
830      <arg name="output" type="object" interface="wl_output" summary="the output" allow-null="true"/>
831    </request>
832
833    <event name="configure" since="29">
834      <description summary="suggest a surface change">
835        A configuration change that also includes the window origin in screen coordinates.
836      </description>
837      <arg name="x" type="int"/>
838      <arg name="y" type="int"/>
839      <arg name="width" type="int"/>
840      <arg name="height" type="int"/>
841      <arg name="states" type="array"/>
842    </event>
843
844    <enum name="state">
845      <description summary="supplemental aura states to xdg states">
846        The states that are contained here are supplemental to the states
847        defined in the XDG shell and specific aura windows.
848      </description>
849
850      <!-- Offset by 100 to prevent collision with new XDG states. -->
851      <entry name="immersive" value="100" since="36">
852        <description summary="immersive mode with hidden title bar and shelf">
853          User can access system UIs such as the shelf and window frame
854          by pointing to, or swiping over, the screen edge.
855        </description>
856      </entry>
857      <entry name="minimized" value="101" since="36">
858        <description summary="surface is minimized">
859          The window has been minimized.
860        </description>
861      </entry>
862      <entry name="snapped_primary" value="102" since="38">
863        <description summary="window is snapped in primary position">
864          The window is snapped to the left if the display is in landscape mode
865          and at the top in portrait mode.
866        </description>
867      </entry>
868      <entry name="snapped_secondary" value="103" since="38">
869        <description summary="window is snapped in secondary position">
870          The window is snapped to the right if the display is in landscape mode
871          and at the bottom in portrait mode.
872        </description>
873      </entry>
874      <entry name="floated" value="104" since="38">
875        <description summary="window is floated on top">
876          The window is floated on top of other windows. One floated window is
877          allowed per desk. Floating a window when there is already a floated
878          window on the same desk will unfloat the floated window.
879        </description>
880      </entry>
881    </enum>
882
883    <event name="origin_change" since="29">
884      <description summary="window origin change">
885        A notification sent when the window origin has changed. Unlike a configure,
886        this does not imply the client needs to resize. The values are in screen
887        coordinates.
888      </description>
889      <arg name="x" type="int" />
890      <arg name="y" type="int" />
891    </event>
892
893    <request name="set_restore_info" since="30">
894      <description summary="set session id and restore id">
895      Request session id and restore id of a newly created browser window.
896      Set the information used by compositor to restore the toplevel
897      surface state, such as window position, window state, upon creation.
898      This is not double buffered and must be set before sending first commit.
899      </description>
900      <arg name="restore_session_id" type="int" summary="unique browser session id"/>
901      <arg name="restore_window_id" type="int" summary="restore browser window id"/>
902    </request>
903
904    <!-- Version 31 additions -->
905    <request name="set_system_modal" since="31">
906      <description summary="make window a system modal">
907        Requests that the toplevel surface should become a system modal. The
908        compositor will prevent other windows from receiving events. If there
909        are multiple system modal surfaces, the compositor will decide which
910        one to receive events.
911      </description>
912    </request>
913
914    <request name="unset_system_modal" since="31">
915      <description summary="unset window system modal state">
916        Requests that the system modal state of the toplevel surface will be
917        unset. The compositor will then allow other windows to recieve events.
918      </description>
919    </request>
920
921    <request name="set_restore_info_with_window_id_source" since="32">
922      <description summary="set session id and restore window id source">
923      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.
924      </description>
925      <arg name="restore_session_id" type="int" summary="unique browser session id"/>
926      <arg name="restore_window_id_source" type="string" summary="restore window id source"/>
927    </request>
928
929    <request name="set_decoration" since="35">
930      <description summary="request a decoration for surface">
931        Clients are allowed to request a particular decoration for a
932        zaura_toplevel. The server is not required to honor this request. See
933        decoration_type for available options. Available since M105.
934      </description>
935      <arg name="type" type="uint" summary="the new frame type"/>
936    </request>
937
938    <enum name="decoration_type">
939      <description summary="different decoration types">
940	Decoration types are used to modify the surface (e.g. drop shadow).
941      </description>
942      <entry name="none" value="0" summary="no frame"/>
943      <entry name="normal" value="1" summary="caption with shadow"/>
944      <entry name="shadow" value="2" summary="shadow only"/>
945    </enum>
946
947    <!-- Version 38 additions -->
948    <request name="release" type="destructor" since="38">
949      <description summary="destroy zaura_toplevel">
950	Destroy this zaura_toplevel object. A client should call destroy when the role
951  is unmapped from a wl_surface.
952
953  See zaura_shell.release for destructor naming.
954      </description>
955    </request>
956
957    <!-- Version 39 additions -->
958    <request name="set_float" since="39">
959      <description summary="float the surface on top">
960        This is a request to place the surface above others.
961      </description>
962    </request>
963    <request name="unset_float" since="39">
964      <description summary="unset the surface float">
965        Request that the surface resets floating.
966      </description>
967    </request>
968
969    <!-- version 40 additions -->
970    <request name="set_z_order" since="40">
971      <description summary="set z order for window">
972        Sets the z order for a toplevel surface. See z_order_level for available options.
973      </description>
974      <arg name="z_order" type="uint" summary="z order value for the window"/>
975    </request>
976
977    <enum name="z_order_level">
978      <description summary="z order levels for windows">
979        Different z order levels that are used to set the z order for a toplevel surface.
980      </description>
981      <entry name="normal" value="0" summary="the default level for windows"/>
982      <entry name="floating_window" value="1" summary="a floating window z-ordered above other normal windows"/>
983      <entry name="floating_ui_element" value="2" summary="used to show non-window style UIs that are shown above floating windows"/>
984      <entry name="security_surface" value="3" summary="cannot be interfered with or covered up"/>
985    </enum>
986
987    <!-- version 41 additions -->
988    <request name="set_origin" since="41">
989      <description summary="set window position in DPs">
990         Request a new location for the surface in device-independent pixels
991         (DPs), relative to the top-left corner of the given output.
992
993         A null output means whichever output currently contains the surface.
994
995         These parameters are just a request and the compositor may ignore
996         them, adjust them due to rules imposed by the window manager, or
997         preserve them for future operations. For example, the compositor will
998         not allow a position outside of the output; or the compositor may just
999         store it if the toplevel surface is in maximized state, and may use it
1000         upon unmaximize.
1001      </description>
1002      <arg name="x" type="int"/>
1003      <arg name="y" type="int"/>
1004      <arg name="output" type="object" interface="wl_output" allow-null="true"
1005        summary="output to contain the surface"/>
1006    </request>
1007
1008    <request name="activate" since="42">
1009      <description summary="activates the window">
1010        Activates this window. This is equivalent to bringing the window to the
1011        foreground. The compositor is free to ignore this request if it deems
1012        the client to be misbehaving.
1013      </description>
1014    </request>
1015
1016    <request name="deactivate" since="42">
1017      <description summary="deactivates the window">
1018        Deactivates this window. This is equivalent to requesting that the
1019        window not be the foreground window. The exact behavior is
1020        compositor-defined. The compositor is free to ignore this request
1021        if it deems the client to be misbehaving.
1022      </description>
1023    </request>
1024
1025    <!-- Version 44 additions -->
1026    <enum name="fullscreen_mode">
1027      <description
1028        summary="Specifies the behavior of the surface in fullscreen.">
1029          Possible windowing system behaviors if this surface were to go
1030          fullscreen.
1031      </description>
1032       <entry
1033        name="plain"
1034        value="0"
1035        summary="user cannot access system UIs using mouse/touches"/>
1036      <entry
1037        name="immersive"
1038        value="1"
1039        summary="user can access system UIs such as the shelf and window frame
1040          by pointing to, or swiping over, the screen edge"/>
1041    </enum>
1042
1043    <request name="set_fullscreen_mode" since="44">
1044      <description summary="Sets the behavior of the surface in fullscreen.">
1045        Suggests how the windowing manager should behave if this surface were
1046        to go fullscreen. Does not make the surface fullscreen.
1047      </description>
1048      <arg name="mode" type="uint" enum="fullscreen_mode"/>
1049    </request>
1050
1051    <!-- Version 46 additions -->
1052    <request name="set_scale_factor" since="46">
1053      <description summary="Allows the client to set the scale factor for the future buffer commits.">
1054        The client has a 32-bit float scale factor that is associated with each
1055        zaura toplevel. This scale factor must be propagated exactly to exo. To
1056        do so we reinterpret_cast into a 32-bit uint and later cast back into a
1057        float. This is because wayland does not support native transport of
1058        floats. As different CPU architectures may use different endian
1059        representations for IEEE 754 floats, this protocol implicitly assumes
1060        that the caller and receiver are the same machine. To avoid redundant
1061        messages, this request needs to only be called once when the zaura
1062        toplevel scale factor changes. This is double buffered state and will be
1063        applied in the next commit.
1064      </description>
1065      <arg name="scale_factor_as_uint" type="uint"/>
1066    </request>
1067
1068    <!-- Version 48 additions-->
1069    <request name="set_snap_primary" since="48">
1070      <description summary="snap the surface to the primary snap position.">
1071        Request that surface is snapped to the left or top if primary layout,
1072        right or bottom otherwise.
1073      </description>/>
1074      <arg name="snap_ratio_as_uint" type="uint"/>
1075    </request>
1076
1077    <request name="set_snap_secondary" since="48">
1078      <description summary="snap the surface to the secondary snap position.">
1079        Request that surface is snapped to the right or bottom if primary
1080        layout, left or top otherwise.
1081      </description>
1082      <arg name="snap_ratio_as_uint" type="uint"/>
1083    </request>
1084
1085    <!-- Version 49 additions-->
1086    <enum name="snap_direction">
1087      <description summary="window snap directions">
1088        Window snap directions.
1089      </description>
1090      <entry name="none" value="0" summary="unsnap the window"/>
1091      <entry name="primary" value="1" summary="snap the window to the left or
1092        top in primary layout, right or bottom in secondary layout"/>
1093      <entry name="secondary" value="2" summary="snap the window to the right
1094        or bottom in primary layout, top or left in secondary layout"/>
1095    </enum>
1096
1097    <request name="intent_to_snap" since="49">
1098      <description summary="client intents to snap the surface.">
1099        Notify (or inform) the server the client's intent to snap the window.
1100        To inform it's no longer willing to snap, send 'none'.
1101      </description>
1102      <arg name="direction" type="uint" enum="snap_direction"/>
1103    </request>
1104
1105    <request name="unset_snap" since="49">
1106      <description summary="Unset the window snap.">
1107        Request that window unsets snapping.
1108      </description>
1109    </request>
1110
1111    <!-- Version 50 additions -->
1112    <event name="configure_raster_scale" since="50">
1113      <description summary="set the raster scale during a configure">
1114        Sets the raster scale of this window. This should be called during a
1115        configure event sequence. To do so we reinterpret_cast into a 32-bit
1116        uint and later cast back into a float. This is because wayland does not
1117        support native transport of floats. As different CPU architectures may
1118        use different endian representations for IEEE 754 floats, this protocol
1119        implicitly assumes that the caller and receiver are the same machine.
1120      </description>
1121      <arg name="scale" type="uint" summary="Raster scale, in float format"/>
1122    </event>
1123  </interface>
1124
1125  <interface name="zaura_popup" version="46">
1126    <description summary="aura shell interface to the popup shell">
1127      An interface to the popup shell, which allows the
1128      client to access shell specific functionality.
1129    </description>
1130
1131   <request name="surface_submission_in_pixel_coordinates" since="28">
1132      <description summary="surface will be submitted in pixel coordinates">
1133        Informs the server that when submitting this surface, this client will not
1134        use wl_surface_set_buffer_scale to report the scales, nor will it apply
1135        scale via vp_viewporter. Instead the server should apply an appropriate
1136        scale transform for the submitted buffers to be composited correctly.
1137      </description>
1138    </request>
1139
1140    <request name="set_decoration" since="35">
1141      <description summary="request a decoration for surface">
1142        Clients are allowed to request a particular decoration for a
1143        zaura_toplevel. The server is not required to honor this request. See
1144        decoration_type for available options. Available since M105.
1145      </description>
1146      <arg name="type" type="uint" summary="the new frame type"/>
1147    </request>
1148
1149    <enum name="decoration_type">
1150      <description summary="different decoration types">
1151	Decoration types are used to modify the surface (e.g. drop shadow).
1152      </description>
1153      <entry name="none" value="0" summary="no frame"/>
1154      <entry name="normal" value="1" summary="caption with shadow"/>
1155      <entry name="shadow" value="2" summary="shadow only"/>
1156    </enum>
1157
1158    <request name="set_menu" since="37">
1159      <description summary="set popup type to menu">
1160        Set popup type to menu
1161      </description>
1162    </request>
1163
1164    <!-- Version 38 additions -->
1165    <request name="release" type="destructor" since="38">
1166      <description summary="destroy zaura_popup">
1167	This request destroys the zaura_popup. A client should call destroy when the
1168  role is unmapped from a wl_surface.
1169
1170  See zaura_shell.release for destructor naming.
1171      </description>
1172    </request>
1173
1174    <!-- Version 46 additions -->
1175    <request name="set_scale_factor" since="46">
1176      <description summary="Allows the client to set the scale factor for the future buffer commits.">
1177        The client has a 32-bit float scale factor that is associated with each
1178        zaura popup. This scale factor must be propagated exactly to exo. To
1179        do so we reinterpret_cast into a 32-bit uint and later cast back into a
1180        float. This is because wayland does not support native transport of
1181        floats. As different CPU architectures may use different endian
1182        representations for IEEE 754 floats, this protocol implicitly assumes
1183        that the caller and receiver are the same machine. To avoid redundant
1184        messages, this request needs to only be called once when the zaura
1185        popup's scale factor changes.
1186      </description>
1187      <arg name="scale_factor_as_uint" type="uint"/>
1188    </request>
1189  </interface>
1190</protocol>
1191