Product SiteDocumentation Site

A.11. wl_shell_surface - desktop style meta data interface

An interface implemented by a wl_surface. On server side the object is automatically destroyed when the related wl_surface is destroyed. On client side, wl_shell_surface_destroy() must be called before destroying the wl_surface object.

A.11.1. Requests provided by wl_shell_surface

A.11.1.1. wl_shell_surface::move

wl_shell_surface::move arguments
input_device
Type: object
time
Type: uint

A.11.1.2. wl_shell_surface::resize

wl_shell_surface::resize arguments
input_device
Type: object
time
Type: uint
edges
Type: uint

A.11.1.3. wl_shell_surface::set_toplevel - make the surface a top level surface

Make the surface a toplevel window.

A.11.1.4. wl_shell_surface::set_transient - make the surface a transient surface

Map the surface relative to an existing surface. The x and y arguments specify the locations of the upper left corner of the surface relative to the upper left corner of the parent surface. The flags argument controls overflow/clipping behaviour when the surface would intersect a screen edge, panel or such. And possibly whether the offset only determines the initial position or if the surface is locked to that relative position during moves.
wl_shell_surface::set_transient arguments
parent
Type: object
x
Type: int
y
Type: int
flags
Type: uint

A.11.1.5. wl_shell_surface::set_fullscreen - make the surface a fullscreen surface

Map the surface as a fullscreen surface. On the output the surface is assigned to. The client can use different fulllscreen method to fix the size mismatch issue: default, scale, driver and fill. And the framerate parameter is used for "driver" method, to indicate the preferred framerate. framerate=0 means that the app does not care about framerate
wl_shell_surface::set_fullscreen arguments
method
Type: uint
framerate
Type: uint
output
Type: object

A.11.1.6. wl_shell_surface::set_popup - make the surface a popup surface

Popup surfaces. Will switch an implicit grab into owner-events mode, and grab will continue after the implicit grab ends (button released). Once the implicit grab is over, the popup grab continues until the window is destroyed or a mouse button is pressed in any other clients window. A click in any of the clients surfaces is reported as normal, however, clicks in other clients surfaces will be discarded and trigger the callback. TODO: Grab keyboard too, maybe just terminate on any click inside or outside the surface?
wl_shell_surface::set_popup arguments
input_device
Type: object
time
Type: uint
parent
Type: object
x
Type: int
y
Type: int
flags
Type: uint

A.11.1.7. wl_shell_surface::set_maximized - make the surface a maximized surface

A request from the client to notify the compositor the maximized operation. The compositor will reply with a configure event telling the expected new surface size. The operation is completed on the next buffer attach to this surface. A maximized client will fill the fullscreen of the output it is bound to, except the panel area. This is the main difference between a maximized shell surface and a fullscreen shell surface.
wl_shell_surface::set_maximized arguments
output
Type: object