Struct WindowInfo

Struct Documentation

struct WindowInfo

Unnamed Group

auto min_width() const -> mir::geometry::Width

These constrain the sizes a window may be resized to (both interactively and pragmatically). Clients can request a min/max size, but it can be overridden by the window management policy. By default, minimum values are 0 and maximum values are std::numeric_limits<int>::max().

auto min_height() const -> mir::geometry::Height
auto max_width() const -> mir::geometry::Width
auto max_height() const -> mir::geometry::Height

Unnamed Group

auto width_inc() const -> mir::geometry::DeltaX

These control the size increments of the window. This is used in cases like a terminal that can only be resized character-by-character. Current Wayland protocols do not support this property, so it generally wont be requested by clients. By default, both are 1.

auto height_inc() const -> mir::geometry::DeltaY

Unnamed Group

auto min_aspect() const -> AspectRatio

These constrain the possible aspect ratio of the window. Current Wayland protocols to not support this property, so it generally wont be requested by clients. By default, min_aspect is {0U, std::numeric_limits<unsigned>::max()} and max_aspect is {std::numeric_limits<unsigned>::max(), 0U}.

auto max_aspect() const -> AspectRatio

Unnamed Group

auto application_id() const -> std::string

The D-bus service name and basename of the app’s .desktop file See


Since MirAL 2.8

Unnamed Group

static bool needs_titlebar(MirWindowType type)


Obsolete: Window::size() includes decorations

Public Types

using AspectRatio = WindowSpecification::AspectRatio

Public Functions

WindowInfo(Window const &window, WindowSpecification const &params)
explicit WindowInfo(WindowInfo const &that)
WindowInfo &operator=(WindowInfo const &that)
bool can_be_active() const
bool can_morph_to(MirWindowType new_type) const
bool must_have_parent() const
bool must_not_have_parent() const
bool is_visible() const
void constrain_resize(mir::geometry::Point &requested_pos, mir::geometry::Size &requested_size) const
auto window() const -> Window&
auto name() const -> std::string
auto type() const -> MirWindowType
auto state() const -> MirWindowState
auto restore_rect() const -> mir::geometry::Rectangle
auto parent() const -> Window
auto children() const -> std::vector<Window> const&
bool has_output_id() const
auto output_id() const -> int
auto preferred_orientation() const -> MirOrientationMode
auto confine_pointer() const -> MirPointerConfinementState
auto shell_chrome() const -> MirShellChrome
auto userdata() const -> std::shared_ptr<void>

This can be used by client code to store window manager specific information.

void userdata(std::shared_ptr<void> userdata)
inline void swap(WindowInfo &rhs)
auto depth_layer() const -> MirDepthLayer
auto attached_edges() const -> MirPlacementGravity

Get the edges of the output that the window is attached to (only meaningful for windows in state mir_window_state_attached)

auto exclusive_rect() const -> mir::optional_value<mir::geometry::Rectangle>

Mir will try to avoid occluding the area covered by this rectangle (relative to the window) (only meaningful when the window is attached to an edge)

auto ignore_exclusion_zones() const -> bool

Mir will ignore the exclusive_rects of other windows when this is set to true. (only meaningful when the window is attached to an edge)

auto clip_area() const -> mir::optional_value<mir::geometry::Rectangle>

Mir will not render anything outside this rectangle.

void clip_area(mir::optional_value<mir::geometry::Rectangle> const &area)
auto focus_mode() const -> MirFocusMode

How the window should gain and lose focus.


Since MirAL 3.3

auto visible_on_lock_screen() const -> bool

If this surface should be shown while the compositor is locked.


Since MirAL 3.9