## MetaWindow MetaWindow — Muffin X managed windows |

## Functions

MetaFrame * | meta_window_get_frame ()
gboolean | meta_window_has_focus ()
gboolean | meta_window_appears_focused ()
gboolean | meta_window_is_shaded ()
gboolean | meta_window_is_override_redirect ()
gboolean | meta_window_is_skip_taskbar ()
MetaRectangle * | meta_window_get_rect ()
void | meta_window_get_input_rect ()
void | meta_window_get_outer_rect ()
MetaScreen * | meta_window_get_screen ()
MetaDisplay * | meta_window_get_display ()
unsigned long | meta_window_get_xwindow ()
MetaWindowType | meta_window_get_window_type ()
Atom | meta_window_get_window_type_atom ()
MetaWorkspace * | meta_window_get_workspace ()
int | meta_window_get_monitor ()
gboolean | meta_window_is_on_all_workspaces ()
gboolean | meta_window_is_hidden ()
void | meta_window_activate ()
void | meta_window_activate_with_workspace ()
const char * | meta_window_get_description ()
const char * | meta_window_get_wm_class ()
const char * | meta_window_get_wm_class_instance ()
gboolean | meta_window_showing_on_its_workspace ()
const char * | meta_window_get_gtk_application_id ()
const char * | meta_window_get_gtk_unique_bus_name ()
const char * | meta_window_get_gtk_application_object_path ()
const char * | meta_window_get_gtk_window_object_path ()
const char * | meta_window_get_gtk_app_menu_object_path ()
const char * | meta_window_get_gtk_menubar_object_path ()
void | meta_window_move ()
void | meta_window_move_frame ()
void | meta_window_move_resize_frame ()
void | meta_window_move_to_monitor ()
void | meta_window_resize ()
void | meta_window_set_demands_attention ()
void | meta_window_unset_demands_attention ()
const char * | meta_window_get_startup_id ()
void | meta_window_change_workspace_by_index ()
void | meta_window_change_workspace ()
void | meta_window_stick ()
void | meta_window_unstick ()
GObject * | meta_window_get_compositor_private ()
void | meta_window_set_compositor_private ()
void | meta_window_configure_notify ()
const char * | meta_window_get_role ()
MetaStackLayer | meta_window_get_layer ()
MetaWindow * | meta_window_find_root_ancestor ()
gboolean | meta_window_is_ancestor_of_transient ()
gboolean | (*MetaWindowForeachFunc) ()
void | meta_window_foreach_transient ()
void | meta_window_foreach_ancestor ()
MetaMaximizeFlags | meta_window_get_maximized ()
gboolean | meta_window_is_fullscreen ()
gboolean | meta_window_is_monitor_sized ()
gboolean | meta_window_is_on_primary_monitor ()
gint * | meta_window_get_all_monitors ()
gboolean | meta_window_is_demanding_attention ()
gboolean | meta_window_is_urgent ()
gboolean | meta_window_requested_bypass_compositor ()
gboolean | meta_window_requested_dont_bypass_compositor ()
gboolean | meta_window_get_icon_geometry ()
void | meta_window_set_icon_geometry ()
void | meta_window_maximize ()
void | meta_window_unmaximize ()
void | meta_window_minimize ()
void | meta_window_unminimize ()
void | meta_window_raise ()
void | meta_window_lower ()
void | meta_window_reset_opacity ()
const char * | meta_window_get_title ()
MetaWindow * | meta_window_get_transient_for ()
Window | meta_window_get_transient_for_as_xid ()
void | meta_window_delete ()
guint | meta_window_get_stable_sequence ()
guint32 | meta_window_get_user_time ()
int | meta_window_get_pid ()
const char * | meta_window_get_client_machine ()
gboolean | meta_window_is_remote ()
gboolean | meta_window_is_modal ()
gboolean | meta_window_is_attached_dialog ()
const char * | meta_window_get_muffin_hints ()
MetaFrameType | meta_window_get_frame_type ()
cairo_region_t * | meta_window_get_frame_bounds ()
MetaWindow * | meta_window_get_tile_match ()
gboolean | meta_window_can_tile ()
gboolean | meta_window_tile ()

## Types and Values

enum | MetaWindowType
enum | MetaMaximizeFlags

## Description

## Functions

### meta_window_get_frame ()

    MetaFrame *
    meta_window_get_frame (MetaWindow *window);

[skip]

### meta_window_has_focus ()

    gboolean
    meta_window_has_focus (MetaWindow *window);

### meta_window_appears_focused ()

    gboolean
    meta_window_appears_focused (MetaWindow *window);

Determines if the window should be drawn with a focused appearance. This is true for focused windows but also true for windows with a focused modal dialog attached.

#### Parameters

window | a MetaWindow |

#### Returns

`TRUE` if the window should be drawn with a focused frame

### meta_window_is_shaded ()

    gboolean
    meta_window_is_shaded (MetaWindow *window);

### meta_window_is_override_redirect ()

    gboolean
    meta_window_is_override_redirect (MetaWindow *window);

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

#### Parameters

window | A MetaWindow |

### meta_window_is_skip_taskbar ()

    gboolean
    meta_window_is_skip_taskbar (MetaWindow *window);

Gets whether this window should be ignored by task lists.

#### Parameters

window | A MetaWindow |

#### Returns

`TRUE` if the skip bar hint is set.

### meta_window_get_rect ()

    MetaRectangle *
    meta_window_get_rect (MetaWindow *window);

Gets the rectangle that bounds `window` , ignoring any window decorations.

#### Parameters

window | a MetaWindow |

#### Returns

the MetaRectangle for the window.

[transfer none]

### meta_window_get_input_rect ()

    void
    meta_window_get_input_rect (const MetaWindow *window,
                                MetaRectangle *rect);

Gets the rectangle that bounds `window` that is responsive to mouse events. This includes decorations - the visible portion of its border - and (if present) any invisible area that we make make responsive to mouse clicks in order to allow convenient border dragging.

#### Parameters

window | a MetaWindow |
rect | pointer to an allocated MetaRectangle. | [out]

### meta_window_get_outer_rect ()

    void
    meta_window_get_outer_rect (const MetaWindow *window,
                                MetaRectangle *rect);

Gets the rectangle that bounds `window` that is responsive to mouse events. This includes only what is visible; it doesn't include any extra reactive area we add to the edges of windows.

#### Parameters

window | a MetaWindow |
rect | pointer to an allocated MetaRectangle. | [out]

### meta_window_get_screen ()

    MetaScreen *
    meta_window_get_screen (MetaWindow *window);

Gets the MetaScreen that the window is on.

#### Parameters

window | a MetaWindow |

#### Returns

the MetaScreen for the window.

[transfer none]

### meta_window_get_display ()

    MetaDisplay *
    meta_window_get_display (MetaWindow *window);

#### Parameters

window | A MetaWindow |

#### Returns

The display for `window` .

[transfer none]

### meta_window_get_xwindow ()

    unsigned long
    meta_window_get_xwindow (MetaWindow *window);

#### Parameters

window | A MetaWindow |

#### Returns

The Window id of the `window` note - we return unsigned long because Window Can't be introspected (but Window *is* a ulong)

### meta_window_get_window_type ()

    MetaWindowType
    meta_window_get_window_type (MetaWindow *window);

### meta_window_get_window_type_atom ()

    Atom
    meta_window_get_window_type_atom (MetaWindow *window);

Gets the X atom from the _NET_WM_WINDOW_TYPE property used by the application to set the window type. (Note that this is constrained to be some value that Muffin recognizes - a completely unrecognized type atom will be returned as None.)

[skip]

#### Parameters

window | a MetaWindow |

#### Returns

the raw X atom for the window type, or None

### meta_window_get_workspace ()

    MetaWorkspace *
    meta_window_get_workspace (MetaWindow *window);

Gets the MetaWorkspace that the window is currently displayed on. If the window is on all workspaces, returns the currently active workspace.

#### Parameters

window | a MetaWindow |

#### Returns

the MetaWorkspace for the window.

[transfer none]

### meta_window_get_monitor ()

    int
    meta_window_get_monitor (MetaWindow *window);

Gets index of the monitor that this window is on.

#### Parameters

window | a MetaWindow |

#### Returns

The index of the monitor in the screens monitor list

### meta_window_is_on_all_workspaces ()

    gboolean
    meta_window_is_on_all_workspaces (MetaWindow *window);

### meta_window_is_hidden ()

    gboolean
    meta_window_is_hidden (MetaWindow *window);

### meta_window_activate ()

    void
    meta_window_activate (MetaWindow *window,
                          guint32 current_time);

### meta_window_activate_with_workspace ()

    void
    meta_window_activate_with_workspace (MetaWindow *window,
                                         guint32 current_time,
                                         MetaWorkspace *workspace);

### meta_window_get_description ()

    const char *
    meta_window_get_description (MetaWindow *window);

### meta_window_get_wm_class ()

    const char *
    meta_window_get_wm_class (MetaWindow *window);

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

#### Parameters

window | a MetaWindow |

### meta_window_get_wm_class_instance ()

    const char *
    meta_window_get_wm_class_instance (MetaWindow *window);

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

#### Parameters

window | a MetaWindow |

### meta_window_showing_on_its_workspace ()

    gboolean
    meta_window_showing_on_its_workspace (MetaWindow *window);

#### Parameters

window | A MetaWindow |

#### Returns

`TRUE` if window would be visible, if its workspace was current

### meta_window_get_gtk_application_id ()

    const char *
    meta_window_get_gtk_application_id (MetaWindow *window);

#### Parameters

window | a MetaWindow |

#### Returns

the application ID.

[transfer none]

### meta_window_get_gtk_unique_bus_name ()

    const char *
    meta_window_get_gtk_unique_bus_name (MetaWindow *window);

#### Parameters

window | a MetaWindow |

#### Returns

the unique name.

[transfer none]

### meta_window_get_gtk_application_object_path ()

    const char *
    meta_window_get_gtk_application_object_path
                                   (MetaWindow *window);

#### Parameters

window | a MetaWindow |

#### Returns

the object path.

[transfer none]

### meta_window_get_gtk_window_object_path ()

    const char *
    meta_window_get_gtk_window_object_path
                                   (MetaWindow *window);

#### Parameters

window | a MetaWindow |

#### Returns

the object path.

[transfer none]

### meta_window_get_gtk_app_menu_object_path ()

    const char *
    meta_window_get_gtk_app_menu_object_path
                                   (MetaWindow *window);

#### Parameters

window | a MetaWindow |

#### Returns

the object path.

[transfer none]

### meta_window_get_gtk_menubar_object_path ()

    const char *
    meta_window_get_gtk_menubar_object_path
                                   (MetaWindow *window);

#### Parameters

window | a MetaWindow |

#### Returns

the object path.

[transfer none]

### meta_window_move ()

    void
    meta_window_move (MetaWindow *window,
                      gboolean user_op,
                      int root_x_nw,
                      int root_y_nw);

Moves the window to the desired location on window's assigned workspace. NOTE: does NOT place according to the origin of the enclosing frame/window-decoration, but according to the origin of the window, itself.

#### Parameters

window | a MetaWindow |
user_op | bool to indicate whether or not this is a user operation |
root_x_nw | desired x pos |
root_y_nw | desired y pos |

### meta_window_move_frame ()

    void
    meta_window_move_frame (MetaWindow *window,
                            gboolean user_op,
                            int root_x_nw,
                            int root_y_nw);

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

window | a MetaWindow |
user_op | bool to indicate whether or not this is a user operation |
root_x_nw | desired x pos |
root_y_nw | desired y pos |

### meta_window_move_resize_frame ()

    void
    meta_window_move_resize_frame (MetaWindow *window,
                                   gboolean user_op,
                                   int root_x_nw,
                                   int root_y_nw,
                                   int w,
                                   int h);

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

#### Parameters

window | a MetaWindow |
user_op | bool to indicate whether or not this is a user operation |
root_x_nw | new x |
root_y_nw | new y |
w | desired width |
h | desired height |

### meta_window_move_to_monitor ()

    void
    meta_window_move_to_monitor (MetaWindow *window,
                                 int monitor);

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

#### Parameters

window | a MetaWindow |
monitor | desired monitor index |

### meta_window_resize ()

    void
    meta_window_resize (MetaWindow *window,
                        gboolean user_op,
                        int w,
                        int h);

Resize the window to the desired size.

#### Parameters

window | a MetaWindow |
user_op | bool to indicate whether or not this is a user operation |
w | desired width |
h | desired height |

### meta_window_set_demands_attention ()

    void
    meta_window_set_demands_attention (MetaWindow *window);

### meta_window_unset_demands_attention ()

    void
    meta_window_unset_demands_attention (MetaWindow *window);

### meta_window_get_startup_id ()

    const char *
    meta_window_get_startup_id (MetaWindow *window);

### meta_window_change_workspace_by_index ()

    void
    meta_window_change_workspace_by_index (MetaWindow *window,
                                           gint space_index,
                                           gboolean append,
                                           guint32 timestamp);

### meta_window_change_workspace ()

    void
    meta_window_change_workspace (MetaWindow *window,
                                  MetaWorkspace *workspace);

Moves the window to the specified workspace.

#### Parameters

window | a MetaWindow |
workspace | the MetaWorkspace where to put the window |

### meta_window_stick ()

    void
    meta_window_stick (MetaWindow *window);

### meta_window_unstick ()

    void
    meta_window_unstick (MetaWindow *window);

### meta_window_get_compositor_private ()

    GObject *
    meta_window_get_compositor_private (MetaWindow *window);

Gets the compositor's wrapper object for `window` .

#### Parameters

window | a MetaWindow |

#### Returns

the wrapper object.

[transfer none]

### meta_window_set_compositor_private ()

    void
    meta_window_set_compositor_private (MetaWindow *window,
                                        GObject *priv);

### meta_window_configure_notify ()

    void
    meta_window_configure_notify (MetaWindow *window,
                                  XConfigureEvent *event);

This is used to notify us of an unrequested configuration (only applicable to override redirect windows)

[skip]

#### Parameters

window | a MetaWindow |
event | a XConfigureEvent |

### meta_window_get_role ()

    const char *
    meta_window_get_role (MetaWindow *window);

### meta_window_get_layer ()

    MetaStackLayer
    meta_window_get_layer (MetaWindow *window);

### meta_window_find_root_ancestor ()

    MetaWindow *
    meta_window_find_root_ancestor (MetaWindow *window);

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

#### Parameters

window | a MetaWindow |

#### Returns

The root ancestor window.

[transfer none]

### meta_window_is_ancestor_of_transient ()

    gboolean
    meta_window_is_ancestor_of_transient (MetaWindow *window,
                                          MetaWindow *transient);

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

window | a MetaWindow |
transient | a MetaWindow |

#### Returns

`TRUE` if window is an ancestor of transient.

### MetaWindowForeachFunc ()

    gboolean
    (*MetaWindowForeachFunc) (MetaWindow *window,
                              void *data);

### meta_window_foreach_transient ()

    void
    meta_window_foreach_transient (MetaWindow *window,
                                   MetaWindowForeachFunc func,
                                   void *user_data);

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

window | a MetaWindow |
func | Called for each window which is a transient of `window` (transitively). | [scope call][closure user_data]
user_data | User data |

### meta_window_foreach_ancestor ()

    void
    meta_window_foreach_ancestor (MetaWindow *window,
                                  MetaWindowForeachFunc func,
                                  void *user_data);

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

window | a MetaWindow |
func | Called for each window which is a transient parent of `window` . | [scope call][closure user_data]
user_data | User data |

### meta_window_get_maximized ()

    MetaMaximizeFlags
    meta_window_get_maximized (MetaWindow *window);

Gets the current maximization state of the window, as combination of the `META_MAXIMIZE_HORIZONTAL` and `META_MAXIMIZE_VERTICAL` flags;

#### Returns

current maximization state

### meta_window_is_fullscreen ()

    gboolean
    meta_window_is_fullscreen (MetaWindow *window);

#### Returns

`TRUE` if the window is currently fullscreen

### meta_window_is_monitor_sized ()

    gboolean
    meta_window_is_monitor_sized (MetaWindow *window);

#### Returns

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

### meta_window_is_on_primary_monitor ()

    gboolean
    meta_window_is_on_primary_monitor (MetaWindow *window);

#### Returns

`TRUE` if the window is on the primary monitor

### meta_window_get_all_monitors ()

    gint *
    meta_window_get_all_monitors (MetaWindow *window,
                                  gsize *length);

#### Parameters

window | The MetaWindow |
length | gint holding the length, may be `NULL` to ignore. | [out caller-allocates]

#### Returns

List of the monitor indices the window is on.

[array length=length][element-type gint][transfer container]

### meta_window_is_demanding_attention ()

    gboolean
    meta_window_is_demanding_attention (MetaWindow *window);

Returns true if window has the demands-attention flag set.

#### Parameters

window | A MetaWindow |

#### Returns

`TRUE` if wm_state_demands_attention is set.

### meta_window_is_urgent ()

    gboolean
    meta_window_is_urgent (MetaWindow *window);

Returns true if window has the urgent hint set.

#### Parameters

window | A MetaWindow |

#### Returns

`TRUE` if wm_hints_urgent is set.

### meta_window_requested_bypass_compositor ()

    gboolean
    meta_window_requested_bypass_compositor
                                   (MetaWindow *window);

#### Returns

`TRUE` if the window requested to bypass the compositor

### meta_window_requested_dont_bypass_compositor ()

    gboolean
    meta_window_requested_dont_bypass_compositor
                                   (MetaWindow *window);

#### Returns

`TRUE` if the window requested to opt out of unredirecting

### meta_window_get_icon_geometry ()

    gboolean
    meta_window_get_icon_geometry (MetaWindow *window,
                                   MetaRectangle *rect);

### meta_window_set_icon_geometry ()

    void
    meta_window_set_icon_geometry (MetaWindow *window,
                                   MetaRectangle *rect);

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

window | a MetaWindow |
rect | rectangle with the desired geometry or `NULL`. | [allow-none]

### meta_window_maximize ()

    void
    meta_window_maximize (MetaWindow *window,
                          MetaMaximizeFlags directions);

### meta_window_unmaximize ()

    void
    meta_window_unmaximize (MetaWindow *window,
                            MetaMaximizeFlags directions);

### meta_window_minimize ()

    void
    meta_window_minimize (MetaWindow *window);

### meta_window_unminimize ()

    void
    meta_window_unminimize (MetaWindow *window);

### meta_window_raise ()

    void
    meta_window_raise (MetaWindow *window);

### meta_window_lower ()

    void
    meta_window_lower (MetaWindow *window);

### meta_window_reset_opacity ()

    void
    meta_window_reset_opacity (MetaWindow *window);

### meta_window_get_title ()

    const char *
    meta_window_get_title (MetaWindow *window);

Returns the current title of the window.

#### Parameters

window | a MetaWindow |

### meta_window_get_transient_for ()

    MetaWindow *
    meta_window_get_transient_for (MetaWindow *window);

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

#### Parameters

window | a MetaWindow |

#### Returns

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 Metacity knows about.

[transfer none]

### meta_window_get_transient_for_as_xid ()

    Window
    meta_window_get_transient_for_as_xid (MetaWindow *window);

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

#### Parameters

window | a MetaWindow |

#### Returns

the window this window is transient for, or None if the WM_TRANSIENT_FOR hint is unset.

### meta_window_delete ()

    void
    meta_window_delete (MetaWindow *window,
                        guint32 timestamp);

### meta_window_get_stable_sequence ()

    guint
    meta_window_get_stable_sequence (MetaWindow *window);

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

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

#### Parameters

window | A MetaWindow |

#### Returns

Internal sequence number for this window

### meta_window_get_user_time ()

    guint32
    meta_window_get_user_time (MetaWindow *window);

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 Muffin initially upon window creation, and updated thereafter on input events (key and button presses) seen by Muffin, client updates to the _NET_WM_USER_TIME property (if later than the current time) and when focusing the window.

#### Returns

The last time the user interacted with this window.

### meta_window_get_pid ()

    int
    meta_window_get_pid (MetaWindow *window);

Returns pid of the process that created this window, if known (obtained from the _NET_WM_PID property).

#### Parameters

window | a MetaWindow |

#### Returns

the pid, or -1 if not known.

### meta_window_get_client_machine ()

    const char *
    meta_window_get_client_machine (MetaWindow *window);

Returns name of the client machine from which this windows was created, if known (obtained from the WM_CLIENT_MACHINE property).

#### Parameters

window | a MetaWindow |

#### Returns

the machine name, or NULL; the string is owned by the window manager and should not be freed or modified by the caller.

[transfer none]

### meta_window_is_remote ()

    gboolean
    meta_window_is_remote (MetaWindow *window);

#### Parameters

window | a MetaWindow |

#### Returns

`TRUE` if this window originates from a host different from the one running muffin.

### meta_window_is_modal ()

    gboolean
    meta_window_is_modal (MetaWindow *window);

Queries whether the window is in a modal state as described by the _NET_WM_STATE protocol.

#### Parameters

window | a MetaWindow |

#### Returns

TRUE if the window is in modal state.

### meta_window_is_attached_dialog ()

    gboolean
    meta_window_is_attached_dialog (MetaWindow *window);

Tests if `window` is should be attached to its parent window. (If the "attach_modal_dialogs" option is not enabled, this will always return `FALSE`.)

#### Parameters

window | a MetaWindow |

#### Returns

whether `window` should be attached to its parent

### meta_window_get_muffin_hints ()

    const char *
    meta_window_get_muffin_hints (MetaWindow *window);

Gets the current value of the _MUFFIN_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; 'muffin-' key prefix is reserved for internal use, and must not be used by plugins.

#### Parameters

window | a MetaWindow |

#### Returns

the _MUFFIN_HINTS string, or `NULL` if no hints are set.

[transfer none]

### meta_window_get_frame_type ()

    MetaFrameType
    meta_window_get_frame_type (MetaWindow *window);

Gets the type of window decorations that should be used for this window.

#### Parameters

window | a MetaWindow |

#### Returns

the frame type

### meta_window_get_frame_bounds ()

    cairo_region_t *
    meta_window_get_frame_bounds (MetaWindow *window);

Gets a region representing the outer bounds of the window's frame.

#### Returns

a cairo_region_t holding the outer bounds of the window, or `NULL` if the window doesn't have a frame.

[transfer none][allow-none]

### meta_window_get_tile_match ()

    MetaWindow *
    meta_window_get_tile_match (MetaWindow *window);

Returns the matching tiled window on the same monitory 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

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

[transfer none][allow-none]

### meta_window_can_tile ()

    gboolean
    meta_window_can_tile (MetaWindow *window,
                          MetaTileMode mode);

Tests if `window` can be tiled or snapped in the supplied tiling zone

#### Parameters

window | a MetaWindow |
mode | the MetaTileMode to check for |

#### Returns

whether `window` can be tiled

### meta_window_tile ()

    gboolean
    meta_window_tile (MetaWindow *window,
                      MetaTileMode mode,
                      gboolean snap);

Tiles or snaps the window in the requested configuration

#### Parameters

window | a MetaWindow |
mode | the MetaTileMode to use |
snap | whether to snap the window (as opposed to simple tile) |

#### Returns

whether or not `window` was successfully tiled

## Types and Values

### enum MetaWindowType

#### Members

META_WINDOW_NORMAL |  |
META_WINDOW_DESKTOP |  |
META_WINDOW_DOCK |  |
META_WINDOW_DIALOG |  |
META_WINDOW_MODAL_DIALOG |  |
META_WINDOW_TOOLBAR |  |
META_WINDOW_MENU |  |
META_WINDOW_UTILITY |  |
META_WINDOW_SPLASHSCREEN |  |
META_WINDOW_DROPDOWN_MENU |  |
META_WINDOW_POPUP_MENU |  |
META_WINDOW_TOOLTIP |  |
META_WINDOW_NOTIFICATION |  |
META_WINDOW_COMBO |  |
META_WINDOW_DND |  |
META_WINDOW_OVERRIDE_OTHER |  |

### enum MetaMaximizeFlags

#### Members

META_MAXIMIZE_HORIZONTAL |  |
META_MAXIMIZE_VERTICAL |  |