pub struct Window<F: Frame> { /* private fields */ }
Expand description

A window

This wrapper handles for you the decoration of your window and the interaction with the server regarding the shell protocol.

You are still entirely responsible for drawing the contents of your window.

Note also that as the dimensions of wayland surfaces is defined by their attached buffer, you need to keep the decorations in sync with your contents via the resize(..) method.

Different kind of decorations can be used by customizing the type parameter. A few are provided in this crate if the frames cargo feature is enabled, but any type implementing the Frame trait can do.

Implementations

Access the surface wrapped in this Window

Refreshes the frame

Redraws the frame to match its requested state (dimensions, presence/ absence of decorations, …)

You need to call this method after every change to the dimensions or state of the decorations of your window, otherwise the drawn decorations may go out of sync with the state of your content.

Your implementation will also receive Refresh events when the frame requests to be redrawn (to provide some frame animations for example).

Set a short title for the window.

This string may be used to identify the surface in a task bar, window list, or other user interface elements provided by the compositor.

You need to call refresh() afterwards for this to properly take effect.

Set an app id for the surface.

The surface class identifies the general class of applications to which the surface belongs.

Several wayland compositors will try to find a .desktop file matching this name to find metadata about your apps.

Set whether the window should be decorated or not.

If zxdg_toplevel_decoration_v1 object is presented and alive, requesting None decorations will result in setting ClientSide decorations with hidden frame, and if ClientSide decorations were requested, it’ll result in destroying zxdg_toplevel_decoration_v1 object, meaning that you won’t be able to get ServerSide decorations back.

In case zxdg_toplevel_decoration_v1 is not available or the corresponding object is not alive anymore, decorate with ServerSide or FollowServer values will always result in ClientSide decorations being used.

You need to call refresh() afterwards for this to properly take effect.

Set whether the window should be resizeable by the user

This is not an hard blocking, as the compositor can always resize you forcibly if it wants. However it signals it that you don’t want this window to be resized.

Additionally, the decorations will stop suggesting the user to resize by dragging the borders if you set the window as non-resizable.

When re-activating resizability, any previously set min/max sizes are restored.

Resize the decorations

You should call this whenever you change the size of the contents of your window, with the new inner size of your window.

This size is expressed in logical pixels, like the one received in Event::Configure.

You need to call refresh() afterwards for this to properly take effect.

Request the window to be maximized

Request the window to be un-maximized

Request the window to be minimized

Request the window to be set fullscreen

Note: The decorations hiding behavior is Frame dependant. To check whether you need to hide them consult your frame documentation.

Request the window to quit fullscreen mode

Sets the minimum possible size for this window

Provide either a tuple Some((width, height)) or None to unset the minimum size.

Setting either value in the tuple to 0 means that this axis should not be limited.

The provided size is the interior size, not counting decorations.

This size is expressed in logical pixels, like the one received in Event::Configure.

Sets the maximum possible size for this window

Provide either a tuple Some((width, height)) or None to unset the maximum size.

Setting either value in the tuple to 0 means that this axis should not be limited.

The provided size is the interior size, not counting decorations.

This size is expressed in logical pixels, like the one received in Event::Configure.

Sets the frame configuration for the window

This allows to configure the frame at runtime if it supports it. See the documentation of your Frame implementation for details about what configuration it supports.

Start an interactive, user-driven move of the surface

This request must be used in response to some sort of user action like a button press, key press, or touch down event. The passed serial is used to determine the type of interactive move (touch, pointer, etc).

The server may ignore move requests depending on the state of the surface (e.g. fullscreen or maximized), or if the passed serial is no longer valid.

Trait Implementations

Formats the value using the given formatter. Read more

Executes the destructor for this type. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.