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