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