Class (GI Class)

Meta-18MetaWindowAbstract

A display-agnostic abstraction for a window.

Meta.Window is the core abstraction in Mutter of a window. It has the properties you'd expect, such as a title, whether it's fullscreen, has decorations, etc.

Since a lot of different kinds of windows exist, each window also a Meta.WindowType which denotes which kind of window we're exactly dealing with. For example, one expects slightly different behaviour from a dialog than a "normal" window. The type of a window can be queried with Meta.Window.get_window_type.

Common API for windows include:

Each Meta.Window is part of either one or all Meta.Workspaces of the desktop. You can activate a window on a certain workspace using Meta.Window.activate_with_workspace, and query on which workspace it is located using Meta.Window.located_on_workspace. The workspace it is part of can be obtained using Meta.Window.get_workspace.

Each display protocol should make a subclass to be compatible with that protocols' specifics, for example MetaWindowX11 and MetaWindowWayland. This is independent of the protocol that the client uses, which is modeled using the Meta.WindowClientType enum.

To integrate within the Clutter scene graph, which deals with the actual rendering, each Meta.Window will be part of a Meta.WindowActor.

Hierarchy (View Summary)

Implements

Index

Constructors

Properties

Accessors

Methods

_init activate activate_with_workspace add_external_constraint allows_move allows_resize begin_grab_op can_close can_maximize can_minimize change_workspace change_workspace_by_index check_alive client_rect_to_frame_rect connect connect_after delete emit find_root_ancestor focus foreach_ancestor foreach_transient frame_rect_to_client_rect get_buffer_rect get_client_content_rect get_client_type get_compositor_private get_description get_display get_frame_rect get_frame_type get_gtk_app_menu_object_path get_gtk_application_id get_gtk_application_object_path get_gtk_menubar_object_path get_gtk_theme_variant get_gtk_unique_bus_name get_gtk_window_object_path get_icon_geometry get_id get_layer get_max_size get_maximize_flags get_min_size get_monitor get_mutter_hints get_pid get_role get_sandboxed_app_id get_stable_sequence get_startup_id get_tag get_tile_match get_title get_transient_for get_user_time get_window_type get_wm_class get_wm_class_instance get_work_area_all_monitors get_work_area_current_monitor get_work_area_for_monitor get_workspace has_attached_dialogs has_focus has_pointer hide_from_window_list inhibit_mapped init is_above is_always_on_all_workspaces is_ancestor_of_transient is_attached_dialog is_fullscreen is_hidden is_mapped_inhibited is_maximized is_monitor_sized is_on_all_workspaces is_on_primary_monitor is_override_redirect is_remote is_screen_sized is_skip_taskbar kill located_on_workspace lower lower_with_transients make_above make_fullscreen maximize minimize move_frame move_resize_frame move_to_monitor protocol_to_stage_rect raise raise_and_make_recent_on_workspace remove_external_constraint set_compositor_private set_demands_attention set_icon_geometry set_maximize_flags set_type set_unmaximize_flags show_in_window_list showing_on_its_workspace stage_to_protocol_rect stick uninhibit_mapped unmake_above unmake_fullscreen unmaximize unminimize unset_demands_attention unstick vfunc_init

Methods - Inherited from GObject

Constructors

Properties

Compile-time signal type information.

This instance property is generated only for TypeScript type checking. It is not defined at runtime and should not be accessed in JS code.

$gtype: GType<Meta.Window>

Accessors

Methods

  • Parameters

    • space_index: number
    • append: boolean

    Returns void

  • Follow the chain of parents of window, skipping transient windows, and return the "root" window which has no non-transient parent.

    Returns Meta.Window

    The root ancestor window

  • If window is transient, call func with the window for which it's transient, repeatedly until either we find a non-transient window, or func returns false.

    Parameters

    Returns void

  • Call func for every window which is either transient for window, or is a transient of a window which is in turn transient for window. The order of window enumeration is not defined.

    Iteration will stop if func at any point returns false.

    Parameters

    • func: WindowForeachFunc

      Called for each window which is a transient of window (transitively)

    Returns void

  • Gets the rectangle that the pixmap or buffer of window occupies.

    For X11 windows, this is the server-side geometry of the toplevel window.

    For Wayland windows, this is the bounding rectangle of the attached buffer.

    Returns Mtk.Rectangle

  • Gets the rectangle that bounds window that is what the user thinks of as the edge of the window.

    This doesn't include any extra reactive area that we or the client adds to the window, or any area that the client adds to draw a client-side shadow.

    Returns Mtk.Rectangle

  • Gets the location of the icon corresponding to the window.

    The location will be provided set by the task bar or other user interface element displaying the icon, and is relative to the root window.

    Returns [boolean, Mtk.Rectangle]

    true if the icon geometry was successfully retrieved.

  • Returns the window id associated with window.

    Returns number

    The window id

  • Gets the maximum size allowed for this window, if set by the client application, or to 0 if not.

    Returns true if the maximum size is known.

    Returns [boolean, number, number]

  • Gets the minimum size allowed for this window, if set by the client application, or to 0 if not.

    Returns true if the minimum size is known.

    Returns [boolean, number, number]

  • Gets index of the monitor that this window is on.

    Returns number

    The index of the monitor in the screens monitor list, or -1 if the window has been recently unmanaged and does not have a monitor.

  • Gets the current value of the _MUTTER_HINTS property.

    The purpose of the hints is to allow fine-tuning of the Window Manager and Compositor behaviour on per-window basis, and is intended primarily for hints that are plugin-specific.

    The property is a list of colon-separated key=value pairs. The key names for any plugin-specific hints must be suitably namespaced to allow for shared use; 'mutter-' key prefix is reserved for internal use, and must not be used by plugins.

    Returns string | null

    the _MUTTER_HINTS string, or null if no hints are set.

  • Returns the pid of the process that created this window, if available to the windowing system.

    Note that the value returned by this is vulnerable to spoofing attacks by the client.

    Returns never

    the pid, or 0 if not known.

  • Gets an unique id for a sandboxed app (currently flatpaks and snaps are supported).

    Returns string | null

    the sandboxed application ID or null

  • The stable sequence number is a monotonicially increasing unique integer assigned to each Meta.Window upon creation.

    This number can be useful for sorting windows in a stable fashion.

    Returns number

    Internal sequence number for this window

  • Get a tag associated to the window. Under wayland the tag can be set using the toplevel tag protocol, and under x11 it falls back to using NET_WM_WINDOW_TAG atom.

    Returns string | null

    An associated toplevel tag

  • Returns the matching tiled window on the same monitor as window. This is the topmost tiled window in a complementary tile mode that is:

    • on the same monitor;
    • on the same workspace;
    • spanning the remaining monitor width;
    • there is no 3rd window stacked between both tiled windows that's partially visible in the common edge.

    Returns Meta.Window | null

    the matching tiled window or null if it doesn't exist.

  • Returns the Meta.Window for the window that is pointed to by the WM_TRANSIENT_FOR hint on this window (see XGetTransientForHint() or XSetTransientForHint()). Mutter keeps transient windows above their parents. A typical usage of this hint is for a dialog that wants to stay above its associated window.

    Returns Meta.Window | null

    the window this window is transient for, or null if the WM_TRANSIENT_FOR hint is unset or does not point to a toplevel window that Mutter knows about.

  • The user time represents a timestamp for the last time the user interacted with this window.

    Note this property is only available for non-override-redirect windows.

    The property is set by Mutter initially upon window creation, and updated thereafter on input events (key and button presses) seen by Mutter, client updates to the _NET_WM_USER_TIME property (if later than the current time) and when focusing the window.

    Returns number

    The last time the user interacted with this window.

  • Return the current value of the name part of WM_CLASS X property.

    Returns string | null

    the current value of the name part of WM_CLASS X property

  • Return the current value of the instance part of WM_CLASS X property.

    Returns string | null

    the current value of the instance part of WM_CLASS X property.

  • Get the work area for window, given the monitor index which_monitor.

    Parameters

    • which_monitor: number

      a moniotr to get the work area for

    Returns Mtk.Rectangle

  • Tests if window has any transients attached to it.

    If the attach_modal_dialogs option is not enabled, this will always return false.

    Returns boolean

    whether window has attached transients

  • Hides this window from any window list, like taskbars, pagers...

    Returns void

  • Initializes the object implementing the interface.

    This method is intended for language bindings. If writing in C, g_initable_new() should typically be used instead.

    The object must be initialized before any real use after initial construction, either with this function or g_async_initable_init_async().

    Implementations may also support cancellation. If cancellable is not null, then initialization can be cancelled by triggering the cancellable object from another thread. If the operation was cancelled, the error Gio.IOErrorEnum.CANCELLED will be returned. If cancellable is not null and the object doesn't support cancellable initialization the error Gio.IOErrorEnum.NOT_SUPPORTED will be returned.

    If the object is not initialized, or initialization returns with an error, then all operations on the object except g_object_ref() and g_object_unref() are considered to be invalid, and have undefined behaviour. See the [description][iface@Gio.Initable#description] for more details.

    Callers should not assume that a class which implements Gio.Initable can be initialized multiple times, unless the class explicitly documents itself as supporting this. Generally, a class’ implementation of init() can assume (and assert) that it will only be called once. Previously, this documentation recommended all Gio.Initable implementations should be idempotent; that recommendation was relaxed in GLib 2.54.

    If a class explicitly supports being initialized multiple times, it is recommended that the method is idempotent: multiple calls with the same arguments should return the same results. Only the first call initializes the object; further calls return the result of the first call.

    One reason why a class might need to support idempotent initialization is if it is designed to be used via the singleton pattern, with a GObject.ObjectClass.constructor that sometimes returns an existing instance. In this pattern, a caller would expect to be able to call g_initable_init() on the result of g_object_new(), regardless of whether it is in fact a new instance.

    Parameters

    Returns boolean

    true if successful. If an error has occurred, this function will return false and set error appropriately if present.

  • The function determines whether window is an ancestor of transient; it does so by traversing the transient's ancestors until it either locates window or reaches an ancestor that is not transient.

    Parameters

    Returns boolean

    true if window is an ancestor of transient.

  • Tests if window should be attached to its parent window.

    If the attach_modal_dialogs option is not enabled, this will always return false.

    Returns boolean

    whether window should be attached to its parent

  • Returns whether the mapped state of the window is inhibited.

    Returns boolean

  • Returns boolean

    true if the window is maximized vertically and horizontally.

  • Returns boolean

    true if the window is occupies an entire monitor or the whole screen.

  • Returns boolean

    true if the window is on the primary monitor

  • Returns boolean

    true if this window isn't managed by mutter; it will control its own positioning and mutter won't draw decorations among other things. In X terminology this is "override redirect".

  • Returns boolean

    true if this window originates from a host different from the one running mutter.

  • Returns boolean

    true if the window is occupies the the whole screen (all monitors).

  • Gets whether this window should be ignored by task lists.

    Returns boolean

    true if the skip bar hint is set.

  • Moves the window to the desired location on window's assigned workspace, using the northwest edge of the frame as the reference, instead of the actual window's origin, but only if a frame is present.

    Otherwise, acts identically to meta_window_move().

    Parameters

    • user_op: boolean

      bool to indicate whether or not this is a user operation

    • root_x_nw: number

      desired x pos

    • root_y_nw: number

      desired y pos

    Returns void

  • Resizes the window so that its outer bounds (including frame) fit within the given rect

    Parameters

    • user_op: boolean

      bool to indicate whether or not this is a user operation

    • root_x_nw: number

      new x

    • root_y_nw: number

      new y

    • w: number

      desired width

    • h: number

      desired height

    Returns void

  • Moves the window to the monitor with index monitor, keeping the relative position of the window's top left corner.

    Parameters

    • monitor: number

      desired monitor index

    Returns void

  • Raises a window and marks it as the most recently used window on the workspace target_workspace. If the window exists on all workspaces, it will become the most recently used sticky window on all other workspaces. This ensures proper tracking among windows on all workspaces while not overriding MRU for other windows.

    Parameters

    Returns void

  • Sets or unsets the location of the icon corresponding to the window.

    If set, the location should correspond to a dock, task bar or other user interface element displaying the icon, and is relative to the root window.

    Parameters

    • rect: Mtk.Rectangle | null

      rectangle with the desired geometry or null.

    Returns void

  • Shows again this window in window lists, like taskbars, pagers...

    Returns void

  • Returns boolean

    true if window would be visible, if its workspace was current

  • Initializes the object implementing the interface.

    This method is intended for language bindings. If writing in C, g_initable_new() should typically be used instead.

    The object must be initialized before any real use after initial construction, either with this function or g_async_initable_init_async().

    Implementations may also support cancellation. If cancellable is not null, then initialization can be cancelled by triggering the cancellable object from another thread. If the operation was cancelled, the error Gio.IOErrorEnum.CANCELLED will be returned. If cancellable is not null and the object doesn't support cancellable initialization the error Gio.IOErrorEnum.NOT_SUPPORTED will be returned.

    If the object is not initialized, or initialization returns with an error, then all operations on the object except g_object_ref() and g_object_unref() are considered to be invalid, and have undefined behaviour. See the [description][iface@Gio.Initable#description] for more details.

    Callers should not assume that a class which implements Gio.Initable can be initialized multiple times, unless the class explicitly documents itself as supporting this. Generally, a class’ implementation of init() can assume (and assert) that it will only be called once. Previously, this documentation recommended all Gio.Initable implementations should be idempotent; that recommendation was relaxed in GLib 2.54.

    If a class explicitly supports being initialized multiple times, it is recommended that the method is idempotent: multiple calls with the same arguments should return the same results. Only the first call initializes the object; further calls return the result of the first call.

    One reason why a class might need to support idempotent initialization is if it is designed to be used via the singleton pattern, with a GObject.ObjectClass.constructor that sometimes returns an existing instance. In this pattern, a caller would expect to be able to call g_initable_init() on the result of g_object_new(), regardless of whether it is in fact a new instance.

    Parameters

    Returns boolean

Methods - Inherited from GObject

  • Creates a binding between source_property on source and target_property on target.

    Whenever the source_property is changed the target_property is updated using the same value. For instance:

      g_object_bind_property (action, "active", widget, "sensitive", 0);
    

    Will result in the "sensitive" property of the widget GObject.Object instance to be updated with the same value of the "active" property of the action GObject.Object instance.

    If flags contains GObject.BindingFlags.BIDIRECTIONAL then the binding will be mutual: if target_property on target changes then the source_property on source will be updated as well.

    The binding will automatically be removed when either the source or the target instances are finalized. To remove the binding without affecting the source and the target you can just call g_object_unref() on the returned GObject.Binding instance.

    Removing the binding by calling g_object_unref() on it must only be done if the binding, source and target are only used from a single thread and it is clear that both source and target outlive the binding. Especially it is not safe to rely on this if the binding, source or target can be finalized from different threads. Keep another reference to the binding and use g_binding_unbind() instead to be on the safe side.

    A GObject.Object can have multiple bindings.

    Parameters

    Returns GObject.Binding

    the GObject.Binding instance representing the binding between the two GObject.Object instances. The binding is released whenever the GObject.Binding reference count reaches zero.

  • Disconnects a handler from an instance so it will not be called during any future or currently ongoing emissions of the signal it has been connected to.

    Parameters

    • id: number

      Handler ID of the handler to be disconnected

    Returns void

  • Increases the freeze count on object. If the freeze count is non-zero, the emission of "notify" signals on object is stopped. The signals are queued until the freeze count is decreased to zero. Duplicate notifications are squashed so that at most one GObject.Object::notify signal is emitted for each property modified while the object is frozen.

    This is necessary for accessors that modify multiple properties to prevent premature notification while the object is still being modified.

    Returns void

  • Gets a named field from the objects table of associations (see g_object_set_data()).

    Parameters

    • key: string

      name of the key for that association

    Returns any

    the data if found, or null if no such data exists.

  • Gets a property of an object.

    The value can be:

    • an empty GObject.Value initialized by G_VALUE_INIT, which will be automatically initialized with the expected type of the property (since GLib 2.60)
    • a GObject.Value initialized with the expected type of the property
    • a GObject.Value initialized with a type to which the expected type of the property can be transformed

    In general, a copy is made of the property contents and the caller is responsible for freeing the memory by calling GObject.Value.unset.

    Note that GObject.Object.get_property is really intended for language bindings, GObject.Object.get is much more convenient for C programming.

    Parameters

    • property_name: string

      The name of the property to get

    • value: any

      Return location for the property value. Can be an empty GObject.Value initialized by G_VALUE_INIT (auto-initialized with expected type since GLib 2.60), a GObject.Value initialized with the expected property type, or a GObject.Value initialized with a transformable type

    Returns any

  • Gets n_properties properties for an object. Obtained properties will be set to values. All properties must be valid. Warnings will be emitted and undefined behaviour may result if invalid properties are passed in.

    Parameters

    • names: string[]

      the names of each property to get

    • values: any[]

      the values of each property to get

    Returns void

  • Emits a "notify" signal for the property property_name on object.

    When possible, eg. when signaling a property change from within the class that registered the property, you should use g_object_notify_by_pspec() instead.

    Note that emission of the notify signal may be blocked with g_object_freeze_notify(). In this case, the signal emissions are queued and will be emitted (in reverse order) when g_object_thaw_notify() is called.

    Parameters

    • property_name: string

      the name of a property installed on the class of object.

    Returns void

  • Emits a "notify" signal for the property specified by pspec on object.

    This function omits the property name lookup, hence it is faster than g_object_notify().

    One way to avoid using g_object_notify() from within the class that registered the properties, and using g_object_notify_by_pspec() instead, is to store the GParamSpec used with g_object_class_install_property() inside a static array, e.g.:

      typedef enum
    {
    PROP_FOO = 1,
    PROP_LAST
    } MyObjectProperty;

    static GParamSpec *properties[PROP_LAST];

    static void
    my_object_class_init (MyObjectClass *klass)
    {
    properties[PROP_FOO] = g_param_spec_int ("foo", NULL, NULL,
    0, 100,
    50,
    G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
    g_object_class_install_property (gobject_class,
    PROP_FOO,
    properties[PROP_FOO]);
    }

    and then notify a change on the "foo" property with:

      g_object_notify_by_pspec (self, properties[PROP_FOO]);
    

    Parameters

    Returns void

  • Increases the reference count of object.

    Since GLib 2.56, if GLIB_VERSION_MAX_ALLOWED is 2.56 or greater, the type of object will be propagated to the return type (using the GCC typeof() extension), so any casting the caller needs to do on the return type must be explicit.

    Returns GObject.Object

    the same object

  • Increase the reference count of object, and possibly remove the [floating][floating-ref] reference, if object has a floating reference.

    In other words, if the object is floating, then this call "assumes ownership" of the floating reference, converting it to a normal reference by clearing the floating flag while leaving the reference count unchanged. If the object is not floating, then this call adds a new normal reference increasing the reference count by one.

    Since GLib 2.56, the type of object will be propagated to the return type under the same conditions as for g_object_ref().

    Returns GObject.Object

    object

  • Sets multiple properties of an object at once. The properties argument should be a dictionary mapping property names to values.

    Parameters

    • properties: { [key: string]: any }

      Object containing the properties to set

    Returns void

  • Each object carries around a table of associations from strings to pointers. This function lets you set an association.

    If the object already had an association with that name, the old association will be destroyed.

    Internally, the key is converted to a GLib.Quark using g_quark_from_string(). This means a copy of key is kept permanently (even after object has been finalized) — so it is recommended to only use a small, bounded set of values for key in your program, to avoid the GLib.Quark storage growing unbounded.

    Parameters

    • key: string

      name of the key

    • data: any

      data to associate with that key

    Returns void

  • Remove a specified datum from the object's data associations, without invoking the association's destroy handler.

    Parameters

    • key: string

      name of the key

    Returns any

    the data if found, or null if no such data exists.

  • This function gets back user data pointers stored via g_object_set_qdata() and removes the data from object without invoking its destroy() function (if any was set). Usually, calling this function is only required to update user data pointers with a destroy notifier, for example:

    void
    object_add_to_user_list (GObject *object,
    const gchar *new_string)
    {
    // the quark, naming the object data
    GQuark quark_string_list = g_quark_from_static_string ("my-string-list");
    // retrieve the old string list
    GList *list = g_object_steal_qdata (object, quark_string_list);

    // prepend new string
    list = g_list_prepend (list, g_strdup (new_string));
    // this changed 'list', so we need to set it again
    g_object_set_qdata_full (object, quark_string_list, list, free_string_list);
    }
    static void
    free_string_list (gpointer data)
    {
    GList *node, *list = data;

    for (node = list; node; node = node->next)
    g_free (node->data);
    g_list_free (list);
    }

    Using g_object_get_qdata() in the above example, instead of g_object_steal_qdata() would have left the destroy function set, and thus the partial string list would have been freed upon g_object_set_qdata_full().

    Parameters

    • quark: number

      A GLib.Quark, naming the user data pointer

    Returns any

    The user data pointer set, or null

  • Reverts the effect of a previous call to g_object_freeze_notify(). The freeze count is decreased on object and when it reaches zero, queued "notify" signals are emitted.

    Duplicate notifications for each property are squashed so that at most one GObject.Object::notify signal is emitted for each property, in the reverse order in which they have been queued.

    It is an error to call this function when the freeze count is zero.

    Returns void

  • Decreases the reference count of object. When its reference count drops to 0, the object is finalized (i.e. its memory is freed).

    If the pointer to the GObject.Object may be reused in future (for example, if it is an instance variable of another object), it is recommended to clear the pointer to null rather than retain a dangling pointer to a potentially invalid GObject.Object instance. Use g_clear_object() for this.

    Returns void

  • the constructed function is called by g_object_new() as the final step of the object creation process. At the point of the call, all construction properties have been set on the object. The purpose of this call is to allow for object initialisation steps that can only be performed after construction properties have been set. constructed implementors should chain up to the constructed call of their parent class to allow it to complete its initialisation.

    Returns void

  • the dispose function is supposed to drop all references to other objects, but keep the instance otherwise intact, so that client method invocations still work. It may be run multiple times (due to reference loops). Before returning, dispose should chain up to the dispose method of the parent class.

    Returns void

  • Emits a "notify" signal for the property property_name on object.

    When possible, eg. when signaling a property change from within the class that registered the property, you should use g_object_notify_by_pspec() instead.

    Note that emission of the notify signal may be blocked with g_object_freeze_notify(). In this case, the signal emissions are queued and will be emitted (in reverse order) when g_object_thaw_notify() is called.

    Parameters

    Returns void

  • the generic setter for all properties of this type. Should be overridden for every type with properties. If implementations of set_property don't emit property change notification explicitly, this will be done implicitly by the type system. However, if the notify signal is emitted explicitly, the type system will not emit it a second time.

    Parameters

    Returns void

  • This function essentially limits the life time of the closure to the life time of the object. That is, when the object is finalized, the closure is invalidated by calling g_closure_invalidate() on it, in order to prevent invocations of the closure with a finalized (nonexisting) object. Also, g_object_ref() and g_object_unref() are added as marshal guards to the closure, to ensure that an extra reference count is held on object during invocation of the closure. Usually, this function will be called on closures that use this object as closure data.

    Parameters

    Returns void

  • Add a property to an interface; this is only useful for interfaces that are added to GObject-derived types. Adding a property to an interface forces all objects classes with that interface to have a compatible property. The compatible property could be a newly created GObject.ParamSpec, but normally g_object_class_override_property() will be used so that the object class only needs to provide an implementation and inherits the property description, default value, bounds, and so forth from the interface property.

    This function is meant to be called from the interface's default vtable initialization function (the class_init member of GObject.TypeInfo.) It must not be called after after class_init has been called for any object types implementing this interface.

    If pspec is a floating reference, it will be consumed.

    Parameters

    Returns void

  • Parameters

    • property_id: number

      the new property ID

    • name: string

      the name of a property registered in a parent class or in an interface of this class.

    Returns void

Interfaces

ConstructorProps
SignalSignatures