Struct smithay_client_toolkit::window::Window [−][src]
pub struct Window<F: Frame> { /* fields omitted */ }
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
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.