<?xml version="1.0"?>
<!-- This file was automatically generated from C sources - DO NOT EDIT!
To affect the contents of this file, edit the original C definitions,
and/or use gtk-doc annotations.  -->
<repository version="1.2"
            xmlns="http://www.gtk.org/introspection/core/1.0"
            xmlns:c="http://www.gtk.org/introspection/c/1.0"
            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
  <include name="CDesktopEnums" version="3.0"/>
  <include name="Clutter" version="1.0"/>
  <include name="GObject" version="2.0"/>
  <include name="Gdk" version="3.0"/>
  <include name="Gtk" version="3.0"/>
  <include name="xfixes" version="4.0"/>
  <include name="xlib" version="2.0"/>
  <package name="clutter-1.0"/>
  <package name="gtk+-3.0"/>
  <namespace name="Meta"
             version="Muffin.0"
             shared-library="libmuffin.so.0"
             c:identifier-prefixes="Meta"
             c:symbol-prefixes="meta">
    <enumeration name="Atom"
                 glib:type-name="MetaAtom"
                 glib:get-type="meta_atom_get_type"
                 c:type="MetaAtom">
      <member name="first"
              value="0"
              c:identifier="META_ATOM_FIRST"
              glib:nick="first">
      </member>
    </enumeration>
    <class name="BackgroundActor"
           c:symbol-prefix="background_actor"
           c:type="MetaBackgroundActor"
           parent="Clutter.Actor"
           glib:type-name="MetaBackgroundActor"
           glib:get-type="meta_background_actor_get_type"
           glib:type-struct="BackgroundActorClass">
      <doc xml:space="preserve">This class handles tracking and painting the root window background.
By integrating with #MetaWindowGroup we can avoid painting parts of
the background that are obscured by other windows.</doc>
      <implements name="Atk.ImplementorIface"/>
      <implements name="Clutter.Animatable"/>
      <implements name="Clutter.Container"/>
      <implements name="Clutter.Scriptable"/>
      <constructor name="new_for_screen"
                   c:identifier="meta_background_actor_new_for_screen">
        <return-value transfer-ownership="none">
          <type name="Clutter.Actor" c:type="ClutterActor*"/>
        </return-value>
        <parameters>
          <parameter name="screen" transfer-ownership="none">
            <type name="Screen" c:type="MetaScreen*"/>
          </parameter>
        </parameters>
      </constructor>
      <property name="dim-factor" writable="1" transfer-ownership="none">
        <doc xml:space="preserve">Factor to dim the background by, between 0.0 (black) and 1.0 (original
colors)</doc>
        <type name="gfloat" c:type="gfloat"/>
      </property>
      <field name="parent">
        <type name="Clutter.Actor" c:type="ClutterActor"/>
      </field>
      <field name="priv">
        <type name="BackgroundActorPrivate"
              c:type="MetaBackgroundActorPrivate*"/>
      </field>
    </class>
    <record name="BackgroundActorClass"
            c:type="MetaBackgroundActorClass"
            glib:is-gtype-struct-for="BackgroundActor">
      <field name="parent_class">
        <type name="Clutter.ActorClass" c:type="ClutterActorClass"/>
      </field>
    </record>
    <record name="BackgroundActorPrivate"
            c:type="MetaBackgroundActorPrivate"
            disguised="1">
    </record>
    <enumeration name="ButtonFunction"
                 glib:type-name="MetaButtonFunction"
                 glib:get-type="meta_button_function_get_type"
                 c:type="MetaButtonFunction">
      <member name="menu"
              value="0"
              c:identifier="META_BUTTON_FUNCTION_MENU"
              glib:nick="menu">
      </member>
      <member name="minimize"
              value="1"
              c:identifier="META_BUTTON_FUNCTION_MINIMIZE"
              glib:nick="minimize">
      </member>
      <member name="maximize"
              value="2"
              c:identifier="META_BUTTON_FUNCTION_MAXIMIZE"
              glib:nick="maximize">
      </member>
      <member name="close"
              value="3"
              c:identifier="META_BUTTON_FUNCTION_CLOSE"
              glib:nick="close">
      </member>
      <member name="shade"
              value="4"
              c:identifier="META_BUTTON_FUNCTION_SHADE"
              glib:nick="shade">
      </member>
      <member name="above"
              value="5"
              c:identifier="META_BUTTON_FUNCTION_ABOVE"
              glib:nick="above">
      </member>
      <member name="stick"
              value="6"
              c:identifier="META_BUTTON_FUNCTION_STICK"
              glib:nick="stick">
      </member>
      <member name="unshade"
              value="7"
              c:identifier="META_BUTTON_FUNCTION_UNSHADE"
              glib:nick="unshade">
      </member>
      <member name="unabove"
              value="8"
              c:identifier="META_BUTTON_FUNCTION_UNABOVE"
              glib:nick="unabove">
      </member>
      <member name="unstick"
              value="9"
              c:identifier="META_BUTTON_FUNCTION_UNSTICK"
              glib:nick="unstick">
      </member>
      <member name="last"
              value="10"
              c:identifier="META_BUTTON_FUNCTION_LAST"
              glib:nick="last">
      </member>
    </enumeration>
    <record name="ButtonLayout" c:type="MetaButtonLayout">
      <field name="left_buttons" writable="1">
        <array zero-terminated="0" c:type="MetaButtonFunction">
          <type name="ButtonFunction" c:type="MetaButtonFunction"/>
        </array>
      </field>
      <field name="left_buttons_has_spacer" writable="1">
        <array zero-terminated="0" c:type="gboolean">
          <type name="gboolean" c:type="gboolean"/>
        </array>
      </field>
      <field name="right_buttons" writable="1">
        <array zero-terminated="0" c:type="MetaButtonFunction">
          <type name="ButtonFunction" c:type="MetaButtonFunction"/>
        </array>
      </field>
      <field name="right_buttons_has_spacer" writable="1">
        <array zero-terminated="0" c:type="gboolean">
          <type name="gboolean" c:type="gboolean"/>
        </array>
      </field>
    </record>
    <enumeration name="CompEffect"
                 glib:type-name="MetaCompEffect"
                 glib:get-type="meta_comp_effect_get_type"
                 c:type="MetaCompEffect">
      <doc xml:space="preserve">Indicates the appropriate effect to show the user for
meta_compositor_show_window() and meta_compositor_hide_window()</doc>
      <member name="create"
              value="0"
              c:identifier="META_COMP_EFFECT_CREATE"
              glib:nick="create">
        <doc xml:space="preserve">The window is newly created
  (also used for a window that was previously on a different
  workspace and is changed to become visible on the active
  workspace.)</doc>
      </member>
      <member name="unminimize"
              value="1"
              c:identifier="META_COMP_EFFECT_UNMINIMIZE"
              glib:nick="unminimize">
        <doc xml:space="preserve">The window should be shown
  as unminimizing from its icon geometry.</doc>
      </member>
      <member name="destroy"
              value="2"
              c:identifier="META_COMP_EFFECT_DESTROY"
              glib:nick="destroy">
        <doc xml:space="preserve">The window is being destroyed</doc>
      </member>
      <member name="minimize"
              value="3"
              c:identifier="META_COMP_EFFECT_MINIMIZE"
              glib:nick="minimize">
        <doc xml:space="preserve">The window should be shown
  as minimizing to its icon geometry.</doc>
      </member>
      <member name="none"
              value="4"
              c:identifier="META_COMP_EFFECT_NONE"
              glib:nick="none">
        <doc xml:space="preserve">No effect, the window should be
  shown or hidden immediately.</doc>
      </member>
    </enumeration>
    <record name="Compositor"
            c:type="MetaCompositor"
            disguised="1"
            introspectable="0">
      <method name="add_window" c:identifier="meta_compositor_add_window">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="compositor" transfer-ownership="none">
            <type name="Compositor" c:type="MetaCompositor*"/>
          </instance-parameter>
          <parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </parameter>
        </parameters>
      </method>
      <method name="destroy" c:identifier="meta_compositor_destroy">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="compositor" transfer-ownership="none">
            <type name="Compositor" c:type="MetaCompositor*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="flash_screen" c:identifier="meta_compositor_flash_screen">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="compositor" transfer-ownership="none">
            <type name="Compositor" c:type="MetaCompositor*"/>
          </instance-parameter>
          <parameter name="screen" transfer-ownership="none">
            <type name="Screen" c:type="MetaScreen*"/>
          </parameter>
        </parameters>
      </method>
      <method name="hide_hud_preview"
              c:identifier="meta_compositor_hide_hud_preview">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="compositor" transfer-ownership="none">
            <type name="Compositor" c:type="MetaCompositor*"/>
          </instance-parameter>
          <parameter name="screen" transfer-ownership="none">
            <type name="Screen" c:type="MetaScreen*"/>
          </parameter>
        </parameters>
      </method>
      <method name="hide_tile_preview"
              c:identifier="meta_compositor_hide_tile_preview">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="compositor" transfer-ownership="none">
            <type name="Compositor" c:type="MetaCompositor*"/>
          </instance-parameter>
          <parameter name="screen" transfer-ownership="none">
            <type name="Screen" c:type="MetaScreen*"/>
          </parameter>
        </parameters>
      </method>
      <method name="hide_window" c:identifier="meta_compositor_hide_window">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="compositor" transfer-ownership="none">
            <type name="Compositor" c:type="MetaCompositor*"/>
          </instance-parameter>
          <parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </parameter>
          <parameter name="effect" transfer-ownership="none">
            <type name="CompEffect" c:type="MetaCompEffect"/>
          </parameter>
        </parameters>
      </method>
      <method name="manage_screen"
              c:identifier="meta_compositor_manage_screen">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="compositor" transfer-ownership="none">
            <type name="Compositor" c:type="MetaCompositor*"/>
          </instance-parameter>
          <parameter name="screen" transfer-ownership="none">
            <type name="Screen" c:type="MetaScreen*"/>
          </parameter>
        </parameters>
      </method>
      <method name="maximize_window"
              c:identifier="meta_compositor_maximize_window">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="compositor" transfer-ownership="none">
            <type name="Compositor" c:type="MetaCompositor*"/>
          </instance-parameter>
          <parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </parameter>
          <parameter name="old_rect" transfer-ownership="none">
            <type name="Rectangle" c:type="MetaRectangle*"/>
          </parameter>
          <parameter name="new_rect" transfer-ownership="none">
            <type name="Rectangle" c:type="MetaRectangle*"/>
          </parameter>
        </parameters>
      </method>
      <method name="process_event"
              c:identifier="meta_compositor_process_event"
              introspectable="0">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="compositor" transfer-ownership="none">
            <type name="Compositor" c:type="MetaCompositor*"/>
          </instance-parameter>
          <parameter name="event" transfer-ownership="none">
            <type c:type="XEvent*"/>
          </parameter>
          <parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_window"
              c:identifier="meta_compositor_remove_window">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="compositor" transfer-ownership="none">
            <type name="Compositor" c:type="MetaCompositor*"/>
          </instance-parameter>
          <parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_updates" c:identifier="meta_compositor_set_updates">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="compositor" transfer-ownership="none">
            <type name="Compositor" c:type="MetaCompositor*"/>
          </instance-parameter>
          <parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </parameter>
          <parameter name="updates" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="show_hud_preview"
              c:identifier="meta_compositor_show_hud_preview">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="compositor" transfer-ownership="none">
            <type name="Compositor" c:type="MetaCompositor*"/>
          </instance-parameter>
          <parameter name="screen" transfer-ownership="none">
            <type name="Screen" c:type="MetaScreen*"/>
          </parameter>
          <parameter name="current_proximity_zone" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="work_area" transfer-ownership="none">
            <type name="Rectangle" c:type="MetaRectangle*"/>
          </parameter>
          <parameter name="snap_queued" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="show_tile_preview"
              c:identifier="meta_compositor_show_tile_preview">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="compositor" transfer-ownership="none">
            <type name="Compositor" c:type="MetaCompositor*"/>
          </instance-parameter>
          <parameter name="screen" transfer-ownership="none">
            <type name="Screen" c:type="MetaScreen*"/>
          </parameter>
          <parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </parameter>
          <parameter name="tile_rect" transfer-ownership="none">
            <type name="Rectangle" c:type="MetaRectangle*"/>
          </parameter>
          <parameter name="tile_monitor_number" transfer-ownership="none">
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="snap_queued" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="show_window" c:identifier="meta_compositor_show_window">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="compositor" transfer-ownership="none">
            <type name="Compositor" c:type="MetaCompositor*"/>
          </instance-parameter>
          <parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </parameter>
          <parameter name="effect" transfer-ownership="none">
            <type name="CompEffect" c:type="MetaCompEffect"/>
          </parameter>
        </parameters>
      </method>
      <method name="switch_workspace"
              c:identifier="meta_compositor_switch_workspace">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="compositor" transfer-ownership="none">
            <type name="Compositor" c:type="MetaCompositor*"/>
          </instance-parameter>
          <parameter name="screen" transfer-ownership="none">
            <type name="Screen" c:type="MetaScreen*"/>
          </parameter>
          <parameter name="from" transfer-ownership="none">
            <type name="Workspace" c:type="MetaWorkspace*"/>
          </parameter>
          <parameter name="to" transfer-ownership="none">
            <type name="Workspace" c:type="MetaWorkspace*"/>
          </parameter>
          <parameter name="direction" transfer-ownership="none">
            <type name="MotionDirection" c:type="MetaMotionDirection"/>
          </parameter>
        </parameters>
      </method>
      <method name="sync_screen_size"
              c:identifier="meta_compositor_sync_screen_size">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="compositor" transfer-ownership="none">
            <type name="Compositor" c:type="MetaCompositor*"/>
          </instance-parameter>
          <parameter name="screen" transfer-ownership="none">
            <type name="Screen" c:type="MetaScreen*"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="sync_stack" c:identifier="meta_compositor_sync_stack">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="compositor" transfer-ownership="none">
            <type name="Compositor" c:type="MetaCompositor*"/>
          </instance-parameter>
          <parameter name="screen" transfer-ownership="none">
            <type name="Screen" c:type="MetaScreen*"/>
          </parameter>
          <parameter name="stack" transfer-ownership="none">
            <type name="GLib.List" c:type="GList*">
              <type name="gpointer" c:type="gpointer"/>
            </type>
          </parameter>
        </parameters>
      </method>
      <method name="sync_window_geometry"
              c:identifier="meta_compositor_sync_window_geometry">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="compositor" transfer-ownership="none">
            <type name="Compositor" c:type="MetaCompositor*"/>
          </instance-parameter>
          <parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </parameter>
        </parameters>
      </method>
      <method name="tile_window" c:identifier="meta_compositor_tile_window">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="compositor" transfer-ownership="none">
            <type name="Compositor" c:type="MetaCompositor*"/>
          </instance-parameter>
          <parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </parameter>
          <parameter name="old_rect" transfer-ownership="none">
            <type name="Rectangle" c:type="MetaRectangle*"/>
          </parameter>
          <parameter name="new_rect" transfer-ownership="none">
            <type name="Rectangle" c:type="MetaRectangle*"/>
          </parameter>
        </parameters>
      </method>
      <method name="unmanage_screen"
              c:identifier="meta_compositor_unmanage_screen">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="compositor" transfer-ownership="none">
            <type name="Compositor" c:type="MetaCompositor*"/>
          </instance-parameter>
          <parameter name="screen" transfer-ownership="none">
            <type name="Screen" c:type="MetaScreen*"/>
          </parameter>
        </parameters>
      </method>
      <method name="unmaximize_window"
              c:identifier="meta_compositor_unmaximize_window">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="compositor" transfer-ownership="none">
            <type name="Compositor" c:type="MetaCompositor*"/>
          </instance-parameter>
          <parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </parameter>
          <parameter name="old_rect" transfer-ownership="none">
            <type name="Rectangle" c:type="MetaRectangle*"/>
          </parameter>
          <parameter name="new_rect" transfer-ownership="none">
            <type name="Rectangle" c:type="MetaRectangle*"/>
          </parameter>
        </parameters>
      </method>
      <method name="window_mapped"
              c:identifier="meta_compositor_window_mapped">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="compositor" transfer-ownership="none">
            <type name="Compositor" c:type="MetaCompositor*"/>
          </instance-parameter>
          <parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </parameter>
        </parameters>
      </method>
      <method name="window_shape_changed"
              c:identifier="meta_compositor_window_shape_changed">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="compositor" transfer-ownership="none">
            <type name="Compositor" c:type="MetaCompositor*"/>
          </instance-parameter>
          <parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </parameter>
        </parameters>
      </method>
      <method name="window_unmapped"
              c:identifier="meta_compositor_window_unmapped">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="compositor" transfer-ownership="none">
            <type name="Compositor" c:type="MetaCompositor*"/>
          </instance-parameter>
          <parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </parameter>
        </parameters>
      </method>
      <function name="new"
                c:identifier="meta_compositor_new"
                introspectable="0">
        <return-value>
          <type name="Compositor" c:type="MetaCompositor*"/>
        </return-value>
        <parameters>
          <parameter name="display" transfer-ownership="none">
            <type name="Display" c:type="MetaDisplay*"/>
          </parameter>
        </parameters>
      </function>
    </record>
    <enumeration name="Cursor"
                 glib:type-name="MetaCursor"
                 glib:get-type="meta_cursor_get_type"
                 c:type="MetaCursor">
      <member name="default"
              value="0"
              c:identifier="META_CURSOR_DEFAULT"
              glib:nick="default">
      </member>
      <member name="north_resize"
              value="1"
              c:identifier="META_CURSOR_NORTH_RESIZE"
              glib:nick="north-resize">
      </member>
      <member name="south_resize"
              value="2"
              c:identifier="META_CURSOR_SOUTH_RESIZE"
              glib:nick="south-resize">
      </member>
      <member name="west_resize"
              value="3"
              c:identifier="META_CURSOR_WEST_RESIZE"
              glib:nick="west-resize">
      </member>
      <member name="east_resize"
              value="4"
              c:identifier="META_CURSOR_EAST_RESIZE"
              glib:nick="east-resize">
      </member>
      <member name="se_resize"
              value="5"
              c:identifier="META_CURSOR_SE_RESIZE"
              glib:nick="se-resize">
      </member>
      <member name="sw_resize"
              value="6"
              c:identifier="META_CURSOR_SW_RESIZE"
              glib:nick="sw-resize">
      </member>
      <member name="ne_resize"
              value="7"
              c:identifier="META_CURSOR_NE_RESIZE"
              glib:nick="ne-resize">
      </member>
      <member name="nw_resize"
              value="8"
              c:identifier="META_CURSOR_NW_RESIZE"
              glib:nick="nw-resize">
      </member>
      <member name="move_or_resize_window"
              value="9"
              c:identifier="META_CURSOR_MOVE_OR_RESIZE_WINDOW"
              glib:nick="move-or-resize-window">
      </member>
      <member name="busy"
              value="10"
              c:identifier="META_CURSOR_BUSY"
              glib:nick="busy">
      </member>
    </enumeration>
    <constant name="DEFAULT_ICON_NAME"
              value="window"
              c:type="META_DEFAULT_ICON_NAME">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <bitfield name="DebugTopic"
              glib:type-name="MetaDebugTopic"
              glib:get-type="meta_debug_topic_get_type"
              c:type="MetaDebugTopic">
      <member name="verbose"
              value="-1"
              c:identifier="META_DEBUG_VERBOSE"
              glib:nick="verbose">
      </member>
      <member name="focus"
              value="1"
              c:identifier="META_DEBUG_FOCUS"
              glib:nick="focus">
      </member>
      <member name="workarea"
              value="2"
              c:identifier="META_DEBUG_WORKAREA"
              glib:nick="workarea">
      </member>
      <member name="stack"
              value="4"
              c:identifier="META_DEBUG_STACK"
              glib:nick="stack">
      </member>
      <member name="themes"
              value="8"
              c:identifier="META_DEBUG_THEMES"
              glib:nick="themes">
      </member>
      <member name="sm" value="16" c:identifier="META_DEBUG_SM" glib:nick="sm">
      </member>
      <member name="events"
              value="32"
              c:identifier="META_DEBUG_EVENTS"
              glib:nick="events">
      </member>
      <member name="window_state"
              value="64"
              c:identifier="META_DEBUG_WINDOW_STATE"
              glib:nick="window-state">
      </member>
      <member name="window_ops"
              value="128"
              c:identifier="META_DEBUG_WINDOW_OPS"
              glib:nick="window-ops">
      </member>
      <member name="geometry"
              value="256"
              c:identifier="META_DEBUG_GEOMETRY"
              glib:nick="geometry">
      </member>
      <member name="placement"
              value="512"
              c:identifier="META_DEBUG_PLACEMENT"
              glib:nick="placement">
      </member>
      <member name="ping"
              value="1024"
              c:identifier="META_DEBUG_PING"
              glib:nick="ping">
      </member>
      <member name="xinerama"
              value="2048"
              c:identifier="META_DEBUG_XINERAMA"
              glib:nick="xinerama">
      </member>
      <member name="keybindings"
              value="4096"
              c:identifier="META_DEBUG_KEYBINDINGS"
              glib:nick="keybindings">
      </member>
      <member name="sync"
              value="8192"
              c:identifier="META_DEBUG_SYNC"
              glib:nick="sync">
      </member>
      <member name="errors"
              value="16384"
              c:identifier="META_DEBUG_ERRORS"
              glib:nick="errors">
      </member>
      <member name="startup"
              value="32768"
              c:identifier="META_DEBUG_STARTUP"
              glib:nick="startup">
      </member>
      <member name="prefs"
              value="65536"
              c:identifier="META_DEBUG_PREFS"
              glib:nick="prefs">
      </member>
      <member name="groups"
              value="131072"
              c:identifier="META_DEBUG_GROUPS"
              glib:nick="groups">
      </member>
      <member name="resizing"
              value="262144"
              c:identifier="META_DEBUG_RESIZING"
              glib:nick="resizing">
      </member>
      <member name="shapes"
              value="524288"
              c:identifier="META_DEBUG_SHAPES"
              glib:nick="shapes">
      </member>
      <member name="compositor"
              value="1048576"
              c:identifier="META_DEBUG_COMPOSITOR"
              glib:nick="compositor">
      </member>
      <member name="edge_resistance"
              value="2097152"
              c:identifier="META_DEBUG_EDGE_RESISTANCE"
              glib:nick="edge-resistance">
      </member>
    </bitfield>
    <bitfield name="Direction"
              glib:type-name="MetaDirection"
              glib:get-type="meta_direction_get_type"
              c:type="MetaDirection">
      <member name="left"
              value="1"
              c:identifier="META_DIRECTION_LEFT"
              glib:nick="left">
      </member>
      <member name="right"
              value="2"
              c:identifier="META_DIRECTION_RIGHT"
              glib:nick="right">
      </member>
      <member name="top"
              value="4"
              c:identifier="META_DIRECTION_TOP"
              glib:nick="top">
      </member>
      <member name="bottom"
              value="8"
              c:identifier="META_DIRECTION_BOTTOM"
              glib:nick="bottom">
      </member>
      <member name="up"
              value="4"
              c:identifier="META_DIRECTION_UP"
              glib:nick="up">
      </member>
      <member name="down"
              value="8"
              c:identifier="META_DIRECTION_DOWN"
              glib:nick="down">
      </member>
      <member name="horizontal"
              value="3"
              c:identifier="META_DIRECTION_HORIZONTAL"
              glib:nick="horizontal">
      </member>
      <member name="vertical"
              value="12"
              c:identifier="META_DIRECTION_VERTICAL"
              glib:nick="vertical">
      </member>
    </bitfield>
    <class name="Display"
           c:symbol-prefix="display"
           c:type="MetaDisplay"
           parent="GObject.Object"
           glib:type-name="MetaDisplay"
           glib:get-type="meta_display_get_type"
           glib:type-struct="DisplayClass">
      <method name="add_custom_keybinding"
              c:identifier="meta_display_add_custom_keybinding">
        <doc xml:space="preserve">Use meta_display_remove_custom_keybinding() to remove the binding.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the keybinding was added successfully,
         otherwise %FALSE</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaDisplay</doc>
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">the binding's unique name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="bindings"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">array of parseable keystrokes</doc>
            <array c:type="char**">
              <type name="utf8" c:type="char*"/>
            </array>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="notified"
                     closure="3"
                     destroy="4">
            <doc xml:space="preserve">function to run when the keybinding is invoked</doc>
            <type name="KeyHandlerFunc" c:type="MetaKeyHandlerFunc"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">the data to pass to @handler</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="free_data" transfer-ownership="none" scope="async">
            <doc xml:space="preserve">function to free @user_data</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_ignored_crossing_serial"
              c:identifier="meta_display_add_ignored_crossing_serial">
        <doc xml:space="preserve">Save the specified serial and ignore crossing events with that
serial for the purpose of focus-follows-mouse. This can be used
for certain changes to the window hierarchy that we don't want
to change the focus window, even if they cause the pointer to
end up in a new window.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaDisplay</doc>
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
          <parameter name="serial" transfer-ownership="none">
            <doc xml:space="preserve">the serial to ignore</doc>
            <type name="gulong" c:type="unsigned long"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_keybinding" c:identifier="meta_display_add_keybinding">
        <doc xml:space="preserve">Add a keybinding at runtime. The key @name in @schema needs to be of type
%G_VARIANT_TYPE_STRING_ARRAY, with each string describing a keybinding in
the form of "&amp;lt;Control&amp;gt;a" or "&amp;lt;Shift&amp;gt;&amp;lt;Alt&amp;gt;F1". The parser
is fairly liberal and allows lower or upper case, and also abbreviations
such as "&amp;lt;Ctl&amp;gt;" and "&amp;lt;Ctrl&amp;gt;". If the key is set to the empty
list or a list with a single element of either "" or "disabled", the
keybinding is disabled.  If %META_KEY_BINDING_REVERSES is specified in
@flags, the binding may be reversed by holding down the "shift" key;
therefore, "&amp;lt;Shift&amp;gt;"
cannot be one of the keys used. @handler is expected to check for the
"shift" modifier in this case and reverse its action.

Use meta_display_remove_keybinding() to remove the binding.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the keybinding was added successfully,
         otherwise %FALSE</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaDisplay</doc>
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">the binding's name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="schema" transfer-ownership="none">
            <doc xml:space="preserve">the #GSettings schema where @name is stored</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">flags to specify binding details</doc>
            <type name="KeyBindingFlags" c:type="MetaKeyBindingFlags"/>
          </parameter>
          <parameter name="handler"
                     transfer-ownership="none"
                     scope="notified"
                     closure="4"
                     destroy="5">
            <doc xml:space="preserve">function to run when the keybinding is invoked</doc>
            <type name="KeyHandlerFunc" c:type="MetaKeyHandlerFunc"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">the data to pass to @handler</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="free_data" transfer-ownership="none" scope="async">
            <doc xml:space="preserve">function to free @user_data</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </method>
      <method name="begin_grab_op" c:identifier="meta_display_begin_grab_op">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
          <parameter name="screen" transfer-ownership="none">
            <type name="Screen" c:type="MetaScreen*"/>
          </parameter>
          <parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </parameter>
          <parameter name="op" transfer-ownership="none">
            <type name="GrabOp" c:type="MetaGrabOp"/>
          </parameter>
          <parameter name="pointer_already_grabbed" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="frame_action" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="button" transfer-ownership="none">
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="modmask" transfer-ownership="none">
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="timestamp" transfer-ownership="none">
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="root_x" transfer-ownership="none">
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="root_y" transfer-ownership="none">
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="end_grab_op" c:identifier="meta_display_end_grab_op">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
          <parameter name="timestamp" transfer-ownership="none">
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="focus_the_no_focus_window"
              c:identifier="meta_display_focus_the_no_focus_window">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
          <parameter name="screen" transfer-ownership="none">
            <type name="Screen" c:type="MetaScreen*"/>
          </parameter>
          <parameter name="timestamp" transfer-ownership="none">
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_atom"
              c:identifier="meta_display_get_atom"
              introspectable="0">
        <doc xml:space="preserve">Gets up an X atom that Muffin prefetched at startup.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the X atom corresponding to the given atom enumeration</doc>
          <type name="xlib.Atom" c:type="Atom"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
          <parameter name="meta_atom" transfer-ownership="none">
            <type name="Atom" c:type="MetaAtom"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_compositor"
              c:identifier="meta_display_get_compositor"
              introspectable="0">
        <return-value>
          <type name="Compositor" c:type="MetaCompositor*"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_compositor_version"
              c:identifier="meta_display_get_compositor_version">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
          <parameter name="major" transfer-ownership="none">
            <type name="gint" c:type="int*"/>
          </parameter>
          <parameter name="minor" transfer-ownership="none">
            <type name="gint" c:type="int*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_current_time"
              c:identifier="meta_display_get_current_time">
        <return-value transfer-ownership="none">
          <type name="guint32" c:type="guint32"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_current_time_roundtrip"
              c:identifier="meta_display_get_current_time_roundtrip">
        <return-value transfer-ownership="none">
          <type name="guint32" c:type="guint32"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_damage_event_base"
              c:identifier="meta_display_get_damage_event_base">
        <return-value transfer-ownership="none">
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_focus_window"
              c:identifier="meta_display_get_focus_window">
        <doc xml:space="preserve">Get the window that, according to events received from X server,
currently has the input focus. We may have already sent a request
to the X server to move the focus window elsewhere. (The
expected_focus_window records where we've last set the input
focus.)</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The current focus window</doc>
          <type name="Window" c:type="MetaWindow*"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaDisplay</doc>
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_grab_op" c:identifier="meta_display_get_grab_op">
        <doc xml:space="preserve">Gets the current grab operation, if any.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the current grab operation, or %META_GRAB_OP_NONE if
Muffin doesn't currently have a grab. %META_GRAB_OP_COMPOSITOR will
be returned if a compositor-plugin modal operation is in effect
(See muffin_begin_modal_for_plugin())</doc>
          <type name="GrabOp" c:type="MetaGrabOp"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_ignored_modifier_mask"
              c:identifier="meta_display_get_ignored_modifier_mask">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a mask of modifiers that should be ignored
         when matching keybindings to events</doc>
          <type name="guint" c:type="unsigned int"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaDisplay</doc>
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_keybinding_action"
              c:identifier="meta_display_get_keybinding_action">
        <doc xml:space="preserve">Get the #MetaKeyBindingAction bound to %keycode. Only builtin
keybindings have an associated #MetaKeyBindingAction, for
bindings added dynamically with meta_display_add_keybinding()
the function will always return %META_KEYBINDING_ACTION_NONE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The action that should be taken for the given key, or
%META_KEYBINDING_ACTION_NONE.</doc>
          <type name="KeyBindingAction" c:type="MetaKeyBindingAction"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <doc xml:space="preserve">A #MetaDisplay</doc>
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
          <parameter name="keycode" transfer-ownership="none">
            <doc xml:space="preserve">Raw keycode</doc>
            <type name="guint" c:type="unsigned int"/>
          </parameter>
          <parameter name="mask" transfer-ownership="none">
            <doc xml:space="preserve">Event mask</doc>
            <type name="gulong" c:type="unsigned long"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_last_user_time"
              c:identifier="meta_display_get_last_user_time">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Timestamp of the last user interaction event with a window</doc>
          <type name="guint32" c:type="guint32"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaDisplay</doc>
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_leader_window"
              c:identifier="meta_display_get_leader_window">
        <doc xml:space="preserve">Returns the window manager's leader window (as defined by the
_NET_SUPPORTING_WM_CHECK mechanism of EWMH). For use by plugins that wish
to attach additional custom properties to this window.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">xid of the leader window.</doc>
          <type name="xlib.Window" c:type="Window"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaDisplay</doc>
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_screens" c:identifier="meta_display_get_screens">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Screens for this display</doc>
          <type name="GLib.SList" c:type="GSList*">
            <type name="Screen"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaDisplay</doc>
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_shape_event_base"
              c:identifier="meta_display_get_shape_event_base">
        <return-value transfer-ownership="none">
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_tab_current"
              c:identifier="meta_display_get_tab_current">
        <doc xml:space="preserve">Determine the active window that should be displayed for Alt-TAB.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Current window</doc>
          <type name="Window" c:type="MetaWindow*"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaDisplay</doc>
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve">type of tab list</doc>
            <type name="TabList" c:type="MetaTabList"/>
          </parameter>
          <parameter name="screen" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaScreen</doc>
            <type name="Screen" c:type="MetaScreen*"/>
          </parameter>
          <parameter name="workspace" transfer-ownership="none">
            <doc xml:space="preserve">origin workspace</doc>
            <type name="Workspace" c:type="MetaWorkspace*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_tab_list" c:identifier="meta_display_get_tab_list">
        <doc xml:space="preserve">Determine the list of windows that should be displayed for Alt-TAB
functionality.  The windows are returned in most recently used order.</doc>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve">List of windows</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="Window"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaDisplay</doc>
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve">type of tab list</doc>
            <type name="TabList" c:type="MetaTabList"/>
          </parameter>
          <parameter name="screen" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaScreen</doc>
            <type name="Screen" c:type="MetaScreen*"/>
          </parameter>
          <parameter name="workspace" transfer-ownership="none">
            <doc xml:space="preserve">origin workspace</doc>
            <type name="Workspace" c:type="MetaWorkspace*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_tab_next" c:identifier="meta_display_get_tab_next">
        <doc xml:space="preserve">Determine the next window that should be displayed for Alt-TAB
functionality.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Next window</doc>
          <type name="Window" c:type="MetaWindow*"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaDisplay</doc>
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve">type of tab list</doc>
            <type name="TabList" c:type="MetaTabList"/>
          </parameter>
          <parameter name="screen" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaScreen</doc>
            <type name="Screen" c:type="MetaScreen*"/>
          </parameter>
          <parameter name="workspace" transfer-ownership="none">
            <doc xml:space="preserve">origin workspace</doc>
            <type name="Workspace" c:type="MetaWorkspace*"/>
          </parameter>
          <parameter name="window"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">starting window</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </parameter>
          <parameter name="backward" transfer-ownership="none">
            <doc xml:space="preserve">If %TRUE, look for the previous window.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_xdisplay"
              c:identifier="meta_display_get_xdisplay"
              introspectable="0">
        <return-value>
          <type name="xlib.Display" c:type="Display*"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="has_shape" c:identifier="meta_display_has_shape">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="keybinding_action_invoke_by_code"
              c:identifier="meta_display_keybinding_action_invoke_by_code">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
          <parameter name="keycode" transfer-ownership="none">
            <type name="guint" c:type="unsigned int"/>
          </parameter>
          <parameter name="mask" transfer-ownership="none">
            <type name="gulong" c:type="unsigned long"/>
          </parameter>
        </parameters>
      </method>
      <method name="list_windows" c:identifier="meta_display_list_windows">
        <doc xml:space="preserve">Lists windows for the display, the @flags parameter for
now determines whether override-redirect windows will be
included.</doc>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve">the list of windows.</doc>
          <type name="GLib.SList" c:type="GSList*">
            <type name="Window"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaDisplay</doc>
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">options for listing</doc>
            <type name="ListWindowsFlags" c:type="MetaListWindowsFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="lookup_group"
              c:identifier="meta_display_lookup_group"
              introspectable="0">
        <return-value>
          <type name="Group" c:type="MetaGroup*"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
          <parameter name="group_leader" transfer-ownership="none">
            <type name="xlib.Window" c:type="Window"/>
          </parameter>
        </parameters>
      </method>
      <method name="rebuild_keybindings"
              c:identifier="meta_display_rebuild_keybindings">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="remove_custom_keybinding"
              c:identifier="meta_display_remove_custom_keybinding">
        <doc xml:space="preserve">Remove keybinding @name; the function will fail if @name is not a known
keybinding or has not been added with meta_display_add_custom_keybinding().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the binding has been removed sucessfully,
         otherwise %FALSE</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <doc xml:space="preserve">the #MetaDisplay</doc>
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">name of the keybinding to remove</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_keybinding"
              c:identifier="meta_display_remove_keybinding">
        <doc xml:space="preserve">Remove keybinding @name; the function will fail if @name is not a known
keybinding or has not been added with meta_display_add_keybinding().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the binding has been removed sucessfully,
         otherwise %FALSE</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <doc xml:space="preserve">the #MetaDisplay</doc>
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">name of the keybinding to remove</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="screen_for_root"
              c:identifier="meta_display_screen_for_root">
        <doc xml:space="preserve">Return the #MetaScreen corresponding to a specified X root window ID.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the screen for the specified root window ID, or %NULL</doc>
          <type name="Screen" c:type="MetaScreen*"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaDisplay</doc>
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
          <parameter name="xroot" transfer-ownership="none">
            <type name="xlib.Window" c:type="Window"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_input_focus_window"
              c:identifier="meta_display_set_input_focus_window">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
          <parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </parameter>
          <parameter name="focus_frame" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="timestamp" transfer-ownership="none">
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="sort_windows_by_stacking"
              c:identifier="meta_display_sort_windows_by_stacking">
        <doc xml:space="preserve">Sorts a set of windows according to their current stacking order. If windows
from multiple screens are present in the set of input windows, then all the
windows on screen 0 are sorted below all the windows on screen 1, and so forth.
Since the stacking order of override-redirect windows isn't controlled by
Metacity, if override-redirect windows are in the input, the result may not
correspond to the actual stacking order in the X server.

An example of using this would be to sort the list of transient dialogs for a
window into their current stacking order.</doc>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve">Input windows sorted by stacking order, from lowest to highest</doc>
          <type name="GLib.SList" c:type="GSList*">
            <type name="Window"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaDisplay</doc>
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
          <parameter name="windows" transfer-ownership="none">
            <doc xml:space="preserve">Set of windows</doc>
            <type name="GLib.SList" c:type="GSList*">
              <type name="Window"/>
            </type>
          </parameter>
        </parameters>
      </method>
      <method name="unmanage_screen"
              c:identifier="meta_display_unmanage_screen">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
          <parameter name="screen" transfer-ownership="none">
            <type name="Screen" c:type="MetaScreen*"/>
          </parameter>
          <parameter name="timestamp" transfer-ownership="none">
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="xserver_time_is_before"
              c:identifier="meta_display_xserver_time_is_before">
        <doc xml:space="preserve">Xserver time can wraparound, thus comparing two timestamps needs to take
this into account. If no wraparound has occurred, this is equivalent to
  time1 &lt; time2
Otherwise, we need to account for the fact that wraparound can occur
and the fact that a timestamp of 0 must be special-cased since it
means "older than anything else".

Note that this is NOT an equivalent for time1 &lt;= time2; if that's what
you need then you'll need to swap the order of the arguments and negate
the result.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaDisplay</doc>
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
          <parameter name="time1" transfer-ownership="none">
            <doc xml:space="preserve">An event timestamp</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="time2" transfer-ownership="none">
            <doc xml:space="preserve">An event timestamp</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="xwindow_is_a_no_focus_window"
              c:identifier="meta_display_xwindow_is_a_no_focus_window">
        <doc xml:space="preserve">Returns %TRUE iff window is one of muffin's internal "no focus" windows
(there is one per screen) which will have the focus when there is no
actual client window focused.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <doc xml:space="preserve">A #MetaDisplay</doc>
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
          <parameter name="xwindow" transfer-ownership="none">
            <doc xml:space="preserve">An X11 window</doc>
            <type name="xlib.Window" c:type="Window"/>
          </parameter>
        </parameters>
      </method>
      <property name="focus-window" transfer-ownership="none">
        <type name="Window"/>
      </property>
      <glib:signal name="grab-op-begin" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="Screen"/>
          </parameter>
          <parameter name="p0" transfer-ownership="none">
            <type name="Window"/>
          </parameter>
          <parameter name="p1" transfer-ownership="none">
            <type name="GrabOp"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="grab-op-end" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="Screen"/>
          </parameter>
          <parameter name="p0" transfer-ownership="none">
            <type name="Window"/>
          </parameter>
          <parameter name="p1" transfer-ownership="none">
            <type name="GrabOp"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="window-created" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="Window"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="window-demands-attention" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="Window"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="window-marked-urgent" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="Window"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="zoom-scroll-in" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="zoom-scroll-out" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="DisplayClass"
            c:type="MetaDisplayClass"
            disguised="1"
            glib:is-gtype-struct-for="Display">
    </record>
    <record name="Edge" c:type="MetaEdge">
      <field name="rect" writable="1">
        <type name="Rectangle" c:type="MetaRectangle"/>
      </field>
      <field name="side_type" writable="1">
        <type name="Side" c:type="MetaSide"/>
      </field>
      <field name="edge_type" writable="1">
        <type name="EdgeType" c:type="MetaEdgeType"/>
      </field>
    </record>
    <enumeration name="EdgeType"
                 glib:type-name="MetaEdgeType"
                 glib:get-type="meta_edge_type_get_type"
                 c:type="MetaEdgeType">
      <member name="window"
              value="0"
              c:identifier="META_EDGE_WINDOW"
              glib:nick="window">
      </member>
      <member name="monitor"
              value="1"
              c:identifier="META_EDGE_MONITOR"
              glib:nick="monitor">
      </member>
      <member name="screen"
              value="2"
              c:identifier="META_EDGE_SCREEN"
              glib:nick="screen">
      </member>
    </enumeration>
    <enumeration name="ExitCode"
                 glib:type-name="MetaExitCode"
                 glib:get-type="meta_exit_code_get_type"
                 c:type="MetaExitCode">
      <member name="success"
              value="0"
              c:identifier="META_EXIT_SUCCESS"
              glib:nick="success">
      </member>
      <member name="error"
              value="1"
              c:identifier="META_EXIT_ERROR"
              glib:nick="error">
      </member>
    </enumeration>
    <record name="Frame" c:type="MetaFrame" disguised="1">
    </record>
    <record name="FrameBorders" c:type="MetaFrameBorders">
      <field name="visible" writable="1">
        <type name="Gtk.Border" c:type="GtkBorder"/>
      </field>
      <field name="invisible" writable="1">
        <type name="Gtk.Border" c:type="GtkBorder"/>
      </field>
      <field name="total" writable="1">
        <type name="Gtk.Border" c:type="GtkBorder"/>
      </field>
      <method name="clear" c:identifier="meta_frame_borders_clear">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="FrameBorders" c:type="MetaFrameBorders*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <bitfield name="FrameFlags"
              glib:type-name="MetaFrameFlags"
              glib:get-type="meta_frame_flags_get_type"
              c:type="MetaFrameFlags">
      <member name="allows_delete"
              value="1"
              c:identifier="META_FRAME_ALLOWS_DELETE"
              glib:nick="allows-delete">
      </member>
      <member name="allows_menu"
              value="2"
              c:identifier="META_FRAME_ALLOWS_MENU"
              glib:nick="allows-menu">
      </member>
      <member name="allows_minimize"
              value="4"
              c:identifier="META_FRAME_ALLOWS_MINIMIZE"
              glib:nick="allows-minimize">
      </member>
      <member name="allows_maximize"
              value="8"
              c:identifier="META_FRAME_ALLOWS_MAXIMIZE"
              glib:nick="allows-maximize">
      </member>
      <member name="allows_left_resize"
              value="16"
              c:identifier="META_FRAME_ALLOWS_LEFT_RESIZE"
              glib:nick="allows-left-resize">
      </member>
      <member name="allows_right_resize"
              value="32"
              c:identifier="META_FRAME_ALLOWS_RIGHT_RESIZE"
              glib:nick="allows-right-resize">
      </member>
      <member name="allows_top_resize"
              value="64"
              c:identifier="META_FRAME_ALLOWS_TOP_RESIZE"
              glib:nick="allows-top-resize">
      </member>
      <member name="allows_bottom_resize"
              value="128"
              c:identifier="META_FRAME_ALLOWS_BOTTOM_RESIZE"
              glib:nick="allows-bottom-resize">
      </member>
      <member name="has_focus"
              value="256"
              c:identifier="META_FRAME_HAS_FOCUS"
              glib:nick="has-focus">
      </member>
      <member name="shaded"
              value="512"
              c:identifier="META_FRAME_SHADED"
              glib:nick="shaded">
      </member>
      <member name="stuck"
              value="1024"
              c:identifier="META_FRAME_STUCK"
              glib:nick="stuck">
      </member>
      <member name="maximized"
              value="2048"
              c:identifier="META_FRAME_MAXIMIZED"
              glib:nick="maximized">
      </member>
      <member name="allows_shade"
              value="4096"
              c:identifier="META_FRAME_ALLOWS_SHADE"
              glib:nick="allows-shade">
      </member>
      <member name="allows_move"
              value="8192"
              c:identifier="META_FRAME_ALLOWS_MOVE"
              glib:nick="allows-move">
      </member>
      <member name="fullscreen"
              value="16384"
              c:identifier="META_FRAME_FULLSCREEN"
              glib:nick="fullscreen">
      </member>
      <member name="is_flashing"
              value="32768"
              c:identifier="META_FRAME_IS_FLASHING"
              glib:nick="is-flashing">
      </member>
      <member name="above"
              value="65536"
              c:identifier="META_FRAME_ABOVE"
              glib:nick="above">
      </member>
      <member name="tiled_left"
              value="131072"
              c:identifier="META_FRAME_TILED_LEFT"
              glib:nick="tiled-left">
      </member>
      <member name="tiled_right"
              value="262144"
              c:identifier="META_FRAME_TILED_RIGHT"
              glib:nick="tiled-right">
      </member>
      <member name="allows_vertical_resize"
              value="192"
              c:identifier="META_FRAME_ALLOWS_VERTICAL_RESIZE"
              glib:nick="allows-vertical-resize">
      </member>
      <member name="allows_horizontal_resize"
              value="48"
              c:identifier="META_FRAME_ALLOWS_HORIZONTAL_RESIZE"
              glib:nick="allows-horizontal-resize">
      </member>
    </bitfield>
    <enumeration name="FrameType"
                 glib:type-name="MetaFrameType"
                 glib:get-type="meta_frame_type_get_type"
                 c:type="MetaFrameType">
      <member name="normal"
              value="0"
              c:identifier="META_FRAME_TYPE_NORMAL"
              glib:nick="normal">
      </member>
      <member name="dialog"
              value="1"
              c:identifier="META_FRAME_TYPE_DIALOG"
              glib:nick="dialog">
      </member>
      <member name="modal_dialog"
              value="2"
              c:identifier="META_FRAME_TYPE_MODAL_DIALOG"
              glib:nick="modal-dialog">
      </member>
      <member name="utility"
              value="3"
              c:identifier="META_FRAME_TYPE_UTILITY"
              glib:nick="utility">
      </member>
      <member name="menu"
              value="4"
              c:identifier="META_FRAME_TYPE_MENU"
              glib:nick="menu">
      </member>
      <member name="border"
              value="5"
              c:identifier="META_FRAME_TYPE_BORDER"
              glib:nick="border">
      </member>
      <member name="attached"
              value="6"
              c:identifier="META_FRAME_TYPE_ATTACHED"
              glib:nick="attached">
      </member>
      <member name="last"
              value="7"
              c:identifier="META_FRAME_TYPE_LAST"
              glib:nick="last">
      </member>
      <function name="to_string" c:identifier="meta_frame_type_to_string">
        <doc xml:space="preserve">Converts a frame type enum value to the name string that would
appear in the theme definition file.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the string value</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <parameter name="type" transfer-ownership="none">
            <type name="FrameType" c:type="MetaFrameType"/>
          </parameter>
        </parameters>
      </function>
    </enumeration>
    <enumeration name="GrabOp"
                 glib:type-name="MetaGrabOp"
                 glib:get-type="meta_grab_op_get_type"
                 c:type="MetaGrabOp">
      <member name="none"
              value="0"
              c:identifier="META_GRAB_OP_NONE"
              glib:nick="none">
      </member>
      <member name="moving"
              value="1"
              c:identifier="META_GRAB_OP_MOVING"
              glib:nick="moving">
      </member>
      <member name="resizing_se"
              value="2"
              c:identifier="META_GRAB_OP_RESIZING_SE"
              glib:nick="resizing-se">
      </member>
      <member name="resizing_s"
              value="3"
              c:identifier="META_GRAB_OP_RESIZING_S"
              glib:nick="resizing-s">
      </member>
      <member name="resizing_sw"
              value="4"
              c:identifier="META_GRAB_OP_RESIZING_SW"
              glib:nick="resizing-sw">
      </member>
      <member name="resizing_n"
              value="5"
              c:identifier="META_GRAB_OP_RESIZING_N"
              glib:nick="resizing-n">
      </member>
      <member name="resizing_ne"
              value="6"
              c:identifier="META_GRAB_OP_RESIZING_NE"
              glib:nick="resizing-ne">
      </member>
      <member name="resizing_nw"
              value="7"
              c:identifier="META_GRAB_OP_RESIZING_NW"
              glib:nick="resizing-nw">
      </member>
      <member name="resizing_w"
              value="8"
              c:identifier="META_GRAB_OP_RESIZING_W"
              glib:nick="resizing-w">
      </member>
      <member name="resizing_e"
              value="9"
              c:identifier="META_GRAB_OP_RESIZING_E"
              glib:nick="resizing-e">
      </member>
      <member name="keyboard_moving"
              value="10"
              c:identifier="META_GRAB_OP_KEYBOARD_MOVING"
              glib:nick="keyboard-moving">
      </member>
      <member name="keyboard_resizing_unknown"
              value="11"
              c:identifier="META_GRAB_OP_KEYBOARD_RESIZING_UNKNOWN"
              glib:nick="keyboard-resizing-unknown">
      </member>
      <member name="keyboard_resizing_s"
              value="12"
              c:identifier="META_GRAB_OP_KEYBOARD_RESIZING_S"
              glib:nick="keyboard-resizing-s">
      </member>
      <member name="keyboard_resizing_n"
              value="13"
              c:identifier="META_GRAB_OP_KEYBOARD_RESIZING_N"
              glib:nick="keyboard-resizing-n">
      </member>
      <member name="keyboard_resizing_w"
              value="14"
              c:identifier="META_GRAB_OP_KEYBOARD_RESIZING_W"
              glib:nick="keyboard-resizing-w">
      </member>
      <member name="keyboard_resizing_e"
              value="15"
              c:identifier="META_GRAB_OP_KEYBOARD_RESIZING_E"
              glib:nick="keyboard-resizing-e">
      </member>
      <member name="keyboard_resizing_se"
              value="16"
              c:identifier="META_GRAB_OP_KEYBOARD_RESIZING_SE"
              glib:nick="keyboard-resizing-se">
      </member>
      <member name="keyboard_resizing_ne"
              value="17"
              c:identifier="META_GRAB_OP_KEYBOARD_RESIZING_NE"
              glib:nick="keyboard-resizing-ne">
      </member>
      <member name="keyboard_resizing_sw"
              value="18"
              c:identifier="META_GRAB_OP_KEYBOARD_RESIZING_SW"
              glib:nick="keyboard-resizing-sw">
      </member>
      <member name="keyboard_resizing_nw"
              value="19"
              c:identifier="META_GRAB_OP_KEYBOARD_RESIZING_NW"
              glib:nick="keyboard-resizing-nw">
      </member>
      <member name="keyboard_tabbing_normal"
              value="20"
              c:identifier="META_GRAB_OP_KEYBOARD_TABBING_NORMAL"
              glib:nick="keyboard-tabbing-normal">
      </member>
      <member name="keyboard_tabbing_dock"
              value="21"
              c:identifier="META_GRAB_OP_KEYBOARD_TABBING_DOCK"
              glib:nick="keyboard-tabbing-dock">
      </member>
      <member name="keyboard_escaping_normal"
              value="22"
              c:identifier="META_GRAB_OP_KEYBOARD_ESCAPING_NORMAL"
              glib:nick="keyboard-escaping-normal">
      </member>
      <member name="keyboard_escaping_dock"
              value="23"
              c:identifier="META_GRAB_OP_KEYBOARD_ESCAPING_DOCK"
              glib:nick="keyboard-escaping-dock">
      </member>
      <member name="keyboard_escaping_group"
              value="24"
              c:identifier="META_GRAB_OP_KEYBOARD_ESCAPING_GROUP"
              glib:nick="keyboard-escaping-group">
      </member>
      <member name="keyboard_tabbing_group"
              value="25"
              c:identifier="META_GRAB_OP_KEYBOARD_TABBING_GROUP"
              glib:nick="keyboard-tabbing-group">
      </member>
      <member name="keyboard_workspace_switching"
              value="26"
              c:identifier="META_GRAB_OP_KEYBOARD_WORKSPACE_SWITCHING"
              glib:nick="keyboard-workspace-switching">
      </member>
      <member name="clicking_minimize"
              value="27"
              c:identifier="META_GRAB_OP_CLICKING_MINIMIZE"
              glib:nick="clicking-minimize">
      </member>
      <member name="clicking_maximize"
              value="28"
              c:identifier="META_GRAB_OP_CLICKING_MAXIMIZE"
              glib:nick="clicking-maximize">
      </member>
      <member name="clicking_unmaximize"
              value="29"
              c:identifier="META_GRAB_OP_CLICKING_UNMAXIMIZE"
              glib:nick="clicking-unmaximize">
      </member>
      <member name="clicking_delete"
              value="30"
              c:identifier="META_GRAB_OP_CLICKING_DELETE"
              glib:nick="clicking-delete">
      </member>
      <member name="clicking_menu"
              value="31"
              c:identifier="META_GRAB_OP_CLICKING_MENU"
              glib:nick="clicking-menu">
      </member>
      <member name="clicking_shade"
              value="32"
              c:identifier="META_GRAB_OP_CLICKING_SHADE"
              glib:nick="clicking-shade">
      </member>
      <member name="clicking_unshade"
              value="33"
              c:identifier="META_GRAB_OP_CLICKING_UNSHADE"
              glib:nick="clicking-unshade">
      </member>
      <member name="clicking_above"
              value="34"
              c:identifier="META_GRAB_OP_CLICKING_ABOVE"
              glib:nick="clicking-above">
      </member>
      <member name="clicking_unabove"
              value="35"
              c:identifier="META_GRAB_OP_CLICKING_UNABOVE"
              glib:nick="clicking-unabove">
      </member>
      <member name="clicking_stick"
              value="36"
              c:identifier="META_GRAB_OP_CLICKING_STICK"
              glib:nick="clicking-stick">
      </member>
      <member name="clicking_unstick"
              value="37"
              c:identifier="META_GRAB_OP_CLICKING_UNSTICK"
              glib:nick="clicking-unstick">
      </member>
      <member name="compositor"
              value="38"
              c:identifier="META_GRAB_OP_COMPOSITOR"
              glib:nick="compositor">
      </member>
    </enumeration>
    <enumeration name="GradientType"
                 glib:type-name="MetaGradientType"
                 glib:get-type="meta_gradient_type_get_type"
                 c:type="MetaGradientType">
      <member name="vertical"
              value="0"
              c:identifier="META_GRADIENT_VERTICAL"
              glib:nick="vertical">
      </member>
      <member name="horizontal"
              value="1"
              c:identifier="META_GRADIENT_HORIZONTAL"
              glib:nick="horizontal">
      </member>
      <member name="diagonal"
              value="2"
              c:identifier="META_GRADIENT_DIAGONAL"
              glib:nick="diagonal">
      </member>
      <member name="last"
              value="3"
              c:identifier="META_GRADIENT_LAST"
              glib:nick="last">
      </member>
    </enumeration>
    <record name="Group" c:type="MetaGroup" disguised="1" introspectable="0">
      <method name="get_size" c:identifier="meta_group_get_size">
        <return-value transfer-ownership="none">
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="group" transfer-ownership="none">
            <type name="Group" c:type="MetaGroup*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_startup_id" c:identifier="meta_group_get_startup_id">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="group" transfer-ownership="none">
            <type name="Group" c:type="MetaGroup*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="list_windows" c:identifier="meta_group_list_windows">
        <return-value transfer-ownership="container">
          <doc xml:space="preserve">List of windows</doc>
          <type name="GLib.SList" c:type="GSList*">
            <type name="Window"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="group" transfer-ownership="none">
            <doc xml:space="preserve">A #MetaGroup</doc>
            <type name="Group" c:type="MetaGroup*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="property_notify"
              c:identifier="meta_group_property_notify"
              introspectable="0">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="group" transfer-ownership="none">
            <type name="Group" c:type="MetaGroup*"/>
          </instance-parameter>
          <parameter name="event" transfer-ownership="none">
            <type c:type="XEvent*"/>
          </parameter>
        </parameters>
      </method>
      <method name="update_layers" c:identifier="meta_group_update_layers">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="group" transfer-ownership="none">
            <type name="Group" c:type="MetaGroup*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <constant name="ICON_HEIGHT" value="32" c:type="META_ICON_HEIGHT">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="ICON_WIDTH" value="32" c:type="META_ICON_WIDTH">
      <type name="gint" c:type="gint"/>
    </constant>
    <record name="KeyBinding"
            c:type="MetaKeyBinding"
            glib:type-name="MetaKeyBinding"
            glib:get-type="meta_key_binding_get_type"
            c:symbol-prefix="key_binding">
      <method name="get_mask" c:identifier="meta_key_binding_get_mask">
        <return-value transfer-ownership="none">
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="binding" transfer-ownership="none">
            <type name="KeyBinding" c:type="MetaKeyBinding*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_modifiers"
              c:identifier="meta_key_binding_get_modifiers">
        <return-value transfer-ownership="none">
          <type name="VirtualModifier" c:type="MetaVirtualModifier"/>
        </return-value>
        <parameters>
          <instance-parameter name="binding" transfer-ownership="none">
            <type name="KeyBinding" c:type="MetaKeyBinding*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_name" c:identifier="meta_key_binding_get_name">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="binding" transfer-ownership="none">
            <type name="KeyBinding" c:type="MetaKeyBinding*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <enumeration name="KeyBindingAction"
                 glib:type-name="MetaKeyBindingAction"
                 glib:get-type="meta_key_binding_action_get_type"
                 c:type="MetaKeyBindingAction">
      <member name="none"
              value="-1"
              c:identifier="META_KEYBINDING_ACTION_NONE"
              glib:nick="none">
      </member>
      <member name="workspace_1"
              value="0"
              c:identifier="META_KEYBINDING_ACTION_WORKSPACE_1"
              glib:nick="workspace-1">
      </member>
      <member name="workspace_2"
              value="1"
              c:identifier="META_KEYBINDING_ACTION_WORKSPACE_2"
              glib:nick="workspace-2">
      </member>
      <member name="workspace_3"
              value="2"
              c:identifier="META_KEYBINDING_ACTION_WORKSPACE_3"
              glib:nick="workspace-3">
      </member>
      <member name="workspace_4"
              value="3"
              c:identifier="META_KEYBINDING_ACTION_WORKSPACE_4"
              glib:nick="workspace-4">
      </member>
      <member name="workspace_5"
              value="4"
              c:identifier="META_KEYBINDING_ACTION_WORKSPACE_5"
              glib:nick="workspace-5">
      </member>
      <member name="workspace_6"
              value="5"
              c:identifier="META_KEYBINDING_ACTION_WORKSPACE_6"
              glib:nick="workspace-6">
      </member>
      <member name="workspace_7"
              value="6"
              c:identifier="META_KEYBINDING_ACTION_WORKSPACE_7"
              glib:nick="workspace-7">
      </member>
      <member name="workspace_8"
              value="7"
              c:identifier="META_KEYBINDING_ACTION_WORKSPACE_8"
              glib:nick="workspace-8">
      </member>
      <member name="workspace_9"
              value="8"
              c:identifier="META_KEYBINDING_ACTION_WORKSPACE_9"
              glib:nick="workspace-9">
      </member>
      <member name="workspace_10"
              value="9"
              c:identifier="META_KEYBINDING_ACTION_WORKSPACE_10"
              glib:nick="workspace-10">
      </member>
      <member name="workspace_11"
              value="10"
              c:identifier="META_KEYBINDING_ACTION_WORKSPACE_11"
              glib:nick="workspace-11">
      </member>
      <member name="workspace_12"
              value="11"
              c:identifier="META_KEYBINDING_ACTION_WORKSPACE_12"
              glib:nick="workspace-12">
      </member>
      <member name="workspace_left"
              value="12"
              c:identifier="META_KEYBINDING_ACTION_WORKSPACE_LEFT"
              glib:nick="workspace-left">
      </member>
      <member name="workspace_right"
              value="13"
              c:identifier="META_KEYBINDING_ACTION_WORKSPACE_RIGHT"
              glib:nick="workspace-right">
      </member>
      <member name="workspace_up"
              value="14"
              c:identifier="META_KEYBINDING_ACTION_WORKSPACE_UP"
              glib:nick="workspace-up">
      </member>
      <member name="workspace_down"
              value="15"
              c:identifier="META_KEYBINDING_ACTION_WORKSPACE_DOWN"
              glib:nick="workspace-down">
      </member>
      <member name="switch_group"
              value="16"
              c:identifier="META_KEYBINDING_ACTION_SWITCH_GROUP"
              glib:nick="switch-group">
      </member>
      <member name="switch_group_backward"
              value="17"
              c:identifier="META_KEYBINDING_ACTION_SWITCH_GROUP_BACKWARD"
              glib:nick="switch-group-backward">
      </member>
      <member name="switch_windows"
              value="18"
              c:identifier="META_KEYBINDING_ACTION_SWITCH_WINDOWS"
              glib:nick="switch-windows">
      </member>
      <member name="switch_windows_backward"
              value="19"
              c:identifier="META_KEYBINDING_ACTION_SWITCH_WINDOWS_BACKWARD"
              glib:nick="switch-windows-backward">
      </member>
      <member name="switch_panels"
              value="20"
              c:identifier="META_KEYBINDING_ACTION_SWITCH_PANELS"
              glib:nick="switch-panels">
      </member>
      <member name="switch_panels_backward"
              value="21"
              c:identifier="META_KEYBINDING_ACTION_SWITCH_PANELS_BACKWARD"
              glib:nick="switch-panels-backward">
      </member>
      <member name="cycle_group"
              value="22"
              c:identifier="META_KEYBINDING_ACTION_CYCLE_GROUP"
              glib:nick="cycle-group">
      </member>
      <member name="cycle_group_backward"
              value="23"
              c:identifier="META_KEYBINDING_ACTION_CYCLE_GROUP_BACKWARD"
              glib:nick="cycle-group-backward">
      </member>
      <member name="cycle_windows"
              value="24"
              c:identifier="META_KEYBINDING_ACTION_CYCLE_WINDOWS"
              glib:nick="cycle-windows">
      </member>
      <member name="cycle_windows_backward"
              value="25"
              c:identifier="META_KEYBINDING_ACTION_CYCLE_WINDOWS_BACKWARD"
              glib:nick="cycle-windows-backward">
      </member>
      <member name="cycle_panels"
              value="26"
              c:identifier="META_KEYBINDING_ACTION_CYCLE_PANELS"
              glib:nick="cycle-panels">
      </member>
      <member name="cycle_panels_backward"
              value="27"
              c:identifier="META_KEYBINDING_ACTION_CYCLE_PANELS_BACKWARD"
              glib:nick="cycle-panels-backward">
      </member>
      <member name="tab_popup_select"
              value="28"
              c:identifier="META_KEYBINDING_ACTION_TAB_POPUP_SELECT"
              glib:nick="tab-popup-select">
      </member>
      <member name="tab_popup_cancel"
              value="29"
              c:identifier="META_KEYBINDING_ACTION_TAB_POPUP_CANCEL"
              glib:nick="tab-popup-cancel">
      </member>
      <member name="show_desktop"
              value="30"
              c:identifier="META_KEYBINDING_ACTION_SHOW_DESKTOP"
              glib:nick="show-desktop">
      </member>
      <member name="panel_run_dialog"
              value="31"
              c:identifier="META_KEYBINDING_ACTION_PANEL_RUN_DIALOG"
              glib:nick="panel-run-dialog">
      </member>
      <member name="toggle_recording"
              value="32"
              c:identifier="META_KEYBINDING_ACTION_TOGGLE_RECORDING"
              glib:nick="toggle-recording">
      </member>
      <member name="set_spew_mark"
              value="33"
              c:identifier="META_KEYBINDING_ACTION_SET_SPEW_MARK"
              glib:nick="set-spew-mark">
      </member>
      <member name="activate_window_menu"
              value="34"
              c:identifier="META_KEYBINDING_ACTION_ACTIVATE_WINDOW_MENU"
              glib:nick="activate-window-menu">
      </member>
      <member name="toggle_fullscreen"
              value="35"
              c:identifier="META_KEYBINDING_ACTION_TOGGLE_FULLSCREEN"
              glib:nick="toggle-fullscreen">
      </member>
      <member name="toggle_maximized"
              value="36"
              c:identifier="META_KEYBINDING_ACTION_TOGGLE_MAXIMIZED"
              glib:nick="toggle-maximized">
      </member>
      <member name="push_tile_left"
              value="37"
              c:identifier="META_KEYBINDING_ACTION_PUSH_TILE_LEFT"
              glib:nick="push-tile-left">
      </member>
      <member name="push_tile_right"
              value="38"
              c:identifier="META_KEYBINDING_ACTION_PUSH_TILE_RIGHT"
              glib:nick="push-tile-right">
      </member>
      <member name="push_tile_up"
              value="39"
              c:identifier="META_KEYBINDING_ACTION_PUSH_TILE_UP"
              glib:nick="push-tile-up">
      </member>
      <member name="push_tile_down"
              value="40"
              c:identifier="META_KEYBINDING_ACTION_PUSH_TILE_DOWN"
              glib:nick="push-tile-down">
      </member>
      <member name="push_snap_left"
              value="41"
              c:identifier="META_KEYBINDING_ACTION_PUSH_SNAP_LEFT"
              glib:nick="push-snap-left">
      </member>
      <member name="push_snap_right"
              value="42"
              c:identifier="META_KEYBINDING_ACTION_PUSH_SNAP_RIGHT"
              glib:nick="push-snap-right">
      </member>
      <member name="push_snap_up"
              value="43"
              c:identifier="META_KEYBINDING_ACTION_PUSH_SNAP_UP"
              glib:nick="push-snap-up">
      </member>
      <member name="push_snap_down"
              value="44"
              c:identifier="META_KEYBINDING_ACTION_PUSH_SNAP_DOWN"
              glib:nick="push-snap-down">
      </member>
      <member name="toggle_above"
              value="45"
              c:identifier="META_KEYBINDING_ACTION_TOGGLE_ABOVE"
              glib:nick="toggle-above">
      </member>
      <member name="maximize"
              value="46"
              c:identifier="META_KEYBINDING_ACTION_MAXIMIZE"
              glib:nick="maximize">
      </member>
      <member name="unmaximize"
              value="47"
              c:identifier="META_KEYBINDING_ACTION_UNMAXIMIZE"
              glib:nick="unmaximize">
      </member>
      <member name="toggle_shaded"
              value="48"
              c:identifier="META_KEYBINDING_ACTION_TOGGLE_SHADED"
              glib:nick="toggle-shaded">
      </member>
      <member name="minimize"
              value="49"
              c:identifier="META_KEYBINDING_ACTION_MINIMIZE"
              glib:nick="minimize">
      </member>
      <member name="close"
              value="50"
              c:identifier="META_KEYBINDING_ACTION_CLOSE"
              glib:nick="close">
      </member>
      <member name="begin_move"
              value="51"
              c:identifier="META_KEYBINDING_ACTION_BEGIN_MOVE"
              glib:nick="begin-move">
      </member>
      <member name="begin_resize"
              value="52"
              c:identifier="META_KEYBINDING_ACTION_BEGIN_RESIZE"
              glib:nick="begin-resize">
      </member>
      <member name="toggle_on_all_workspaces"
              value="53"
              c:identifier="META_KEYBINDING_ACTION_TOGGLE_ON_ALL_WORKSPACES"
              glib:nick="toggle-on-all-workspaces">
      </member>
      <member name="move_to_workspace_1"
              value="54"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_1"
              glib:nick="move-to-workspace-1">
      </member>
      <member name="move_to_workspace_2"
              value="55"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_2"
              glib:nick="move-to-workspace-2">
      </member>
      <member name="move_to_workspace_3"
              value="56"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_3"
              glib:nick="move-to-workspace-3">
      </member>
      <member name="move_to_workspace_4"
              value="57"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_4"
              glib:nick="move-to-workspace-4">
      </member>
      <member name="move_to_workspace_5"
              value="58"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_5"
              glib:nick="move-to-workspace-5">
      </member>
      <member name="move_to_workspace_6"
              value="59"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_6"
              glib:nick="move-to-workspace-6">
      </member>
      <member name="move_to_workspace_7"
              value="60"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_7"
              glib:nick="move-to-workspace-7">
      </member>
      <member name="move_to_workspace_8"
              value="61"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_8"
              glib:nick="move-to-workspace-8">
      </member>
      <member name="move_to_workspace_9"
              value="62"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_9"
              glib:nick="move-to-workspace-9">
      </member>
      <member name="move_to_workspace_10"
              value="63"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_10"
              glib:nick="move-to-workspace-10">
      </member>
      <member name="move_to_workspace_11"
              value="64"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_11"
              glib:nick="move-to-workspace-11">
      </member>
      <member name="move_to_workspace_12"
              value="65"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_12"
              glib:nick="move-to-workspace-12">
      </member>
      <member name="move_to_workspace_left"
              value="66"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_LEFT"
              glib:nick="move-to-workspace-left">
      </member>
      <member name="move_to_workspace_right"
              value="67"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_RIGHT"
              glib:nick="move-to-workspace-right">
      </member>
      <member name="move_to_workspace_up"
              value="68"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_UP"
              glib:nick="move-to-workspace-up">
      </member>
      <member name="move_to_workspace_down"
              value="69"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_DOWN"
              glib:nick="move-to-workspace-down">
      </member>
      <member name="move_to_workspace_new"
              value="70"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_NEW"
              glib:nick="move-to-workspace-new">
      </member>
      <member name="move_to_monitor_left"
              value="71"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_MONITOR_LEFT"
              glib:nick="move-to-monitor-left">
      </member>
      <member name="move_to_monitor_right"
              value="72"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_MONITOR_RIGHT"
              glib:nick="move-to-monitor-right">
      </member>
      <member name="move_to_monitor_down"
              value="73"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_MONITOR_DOWN"
              glib:nick="move-to-monitor-down">
      </member>
      <member name="move_to_monitor_up"
              value="74"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_MONITOR_UP"
              glib:nick="move-to-monitor-up">
      </member>
      <member name="raise_or_lower"
              value="75"
              c:identifier="META_KEYBINDING_ACTION_RAISE_OR_LOWER"
              glib:nick="raise-or-lower">
      </member>
      <member name="raise"
              value="76"
              c:identifier="META_KEYBINDING_ACTION_RAISE"
              glib:nick="raise">
      </member>
      <member name="lower"
              value="77"
              c:identifier="META_KEYBINDING_ACTION_LOWER"
              glib:nick="lower">
      </member>
      <member name="maximize_vertically"
              value="78"
              c:identifier="META_KEYBINDING_ACTION_MAXIMIZE_VERTICALLY"
              glib:nick="maximize-vertically">
      </member>
      <member name="maximize_horizontally"
              value="79"
              c:identifier="META_KEYBINDING_ACTION_MAXIMIZE_HORIZONTALLY"
              glib:nick="maximize-horizontally">
      </member>
      <member name="move_to_corner_nw"
              value="80"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_CORNER_NW"
              glib:nick="move-to-corner-nw">
      </member>
      <member name="move_to_corner_ne"
              value="81"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_CORNER_NE"
              glib:nick="move-to-corner-ne">
      </member>
      <member name="move_to_corner_sw"
              value="82"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_CORNER_SW"
              glib:nick="move-to-corner-sw">
      </member>
      <member name="move_to_corner_se"
              value="83"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_CORNER_SE"
              glib:nick="move-to-corner-se">
      </member>
      <member name="move_to_side_n"
              value="84"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_SIDE_N"
              glib:nick="move-to-side-n">
      </member>
      <member name="move_to_side_s"
              value="85"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_SIDE_S"
              glib:nick="move-to-side-s">
      </member>
      <member name="move_to_side_e"
              value="86"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_SIDE_E"
              glib:nick="move-to-side-e">
      </member>
      <member name="move_to_side_w"
              value="87"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_SIDE_W"
              glib:nick="move-to-side-w">
      </member>
      <member name="move_to_center"
              value="88"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_CENTER"
              glib:nick="move-to-center">
      </member>
      <member name="increase_opacity"
              value="89"
              c:identifier="META_KEYBINDING_ACTION_INCREASE_OPACITY"
              glib:nick="increase-opacity">
      </member>
      <member name="decrease_opacity"
              value="90"
              c:identifier="META_KEYBINDING_ACTION_DECREASE_OPACITY"
              glib:nick="decrease-opacity">
      </member>
      <member name="custom"
              value="91"
              c:identifier="META_KEYBINDING_ACTION_CUSTOM"
              glib:nick="custom">
      </member>
      <member name="last"
              value="92"
              c:identifier="META_KEYBINDING_ACTION_LAST"
              glib:nick="last">
      </member>
    </enumeration>
    <bitfield name="KeyBindingFlags"
              glib:type-name="MetaKeyBindingFlags"
              glib:get-type="meta_key_binding_flags_get_type"
              c:type="MetaKeyBindingFlags">
      <member name="none"
              value="0"
              c:identifier="META_KEY_BINDING_NONE"
              glib:nick="none">
      </member>
      <member name="per_window"
              value="1"
              c:identifier="META_KEY_BINDING_PER_WINDOW"
              glib:nick="per-window">
      </member>
      <member name="builtin"
              value="2"
              c:identifier="META_KEY_BINDING_BUILTIN"
              glib:nick="builtin">
      </member>
      <member name="reverses"
              value="4"
              c:identifier="META_KEY_BINDING_REVERSES"
              glib:nick="reverses">
      </member>
      <member name="is_reversed"
              value="8"
              c:identifier="META_KEY_BINDING_IS_REVERSED"
              glib:nick="is-reversed">
      </member>
    </bitfield>
    <record name="KeyCombo" c:type="MetaKeyCombo">
      <field name="keysym" writable="1">
        <type name="guint" c:type="unsigned"/>
      </field>
      <field name="keycode" writable="1">
        <type name="guint" c:type="unsigned"/>
      </field>
      <field name="modifiers" writable="1">
        <type name="VirtualModifier" c:type="MetaVirtualModifier"/>
      </field>
    </record>
    <record name="KeyHandler" c:type="MetaKeyHandler" disguised="1">
    </record>
    <callback name="KeyHandlerFunc" c:type="MetaKeyHandlerFunc">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="display" transfer-ownership="none">
          <type name="Display" c:type="MetaDisplay*"/>
        </parameter>
        <parameter name="screen" transfer-ownership="none">
          <type name="Screen" c:type="MetaScreen*"/>
        </parameter>
        <parameter name="window" transfer-ownership="none">
          <type name="Window" c:type="MetaWindow*"/>
        </parameter>
        <parameter name="event" transfer-ownership="none">
          <type name="gpointer" c:type="XEvent*"/>
        </parameter>
        <parameter name="binding" transfer-ownership="none">
          <type name="KeyBinding" c:type="MetaKeyBinding*"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none" closure="5">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <record name="KeyPref" c:type="MetaKeyPref">
      <field name="name" writable="1">
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="schema" writable="1">
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="action" writable="1">
        <type name="KeyBindingAction" c:type="MetaKeyBindingAction"/>
      </field>
      <field name="bindings" writable="1">
        <type name="GLib.SList" c:type="GSList*">
          <type name="gpointer" c:type="gpointer"/>
        </type>
      </field>
      <field name="add_shift" writable="1" bits="1">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="per_window" writable="1" bits="1">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="builtin" writable="1" bits="1">
        <type name="gboolean" c:type="gboolean"/>
      </field>
    </record>
    <enumeration name="LaterType"
                 glib:type-name="MetaLaterType"
                 glib:get-type="meta_later_type_get_type"
                 c:type="MetaLaterType">
      <member name="resize"
              value="0"
              c:identifier="META_LATER_RESIZE"
              glib:nick="resize">
        <doc xml:space="preserve">call in a resize processing phase that is done
  before GTK+ repainting (including window borders) is done.</doc>
      </member>
      <member name="before_redraw"
              value="1"
              c:identifier="META_LATER_BEFORE_REDRAW"
              glib:nick="before-redraw">
        <doc xml:space="preserve">call before the stage is redrawn</doc>
      </member>
      <member name="idle"
              value="2"
              c:identifier="META_LATER_IDLE"
              glib:nick="idle">
        <doc xml:space="preserve">call at a very low priority (can be blocked
   by running animations or redrawing applications)</doc>
      </member>
    </enumeration>
    <bitfield name="ListWindowsFlags"
              glib:type-name="MetaListWindowsFlags"
              glib:get-type="meta_list_windows_flags_get_type"
              c:type="MetaListWindowsFlags">
      <member name="default"
              value="0"
              c:identifier="META_LIST_DEFAULT"
              glib:nick="default">
      </member>
      <member name="include_override_redirect"
              value="1"
              c:identifier="META_LIST_INCLUDE_OVERRIDE_REDIRECT"
              glib:nick="include-override-redirect">
      </member>
    </bitfield>
    <constant name="MINI_ICON_HEIGHT"
              value="16"
              c:type="META_MINI_ICON_HEIGHT">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="MINI_ICON_WIDTH" value="16" c:type="META_MINI_ICON_WIDTH">
      <type name="gint" c:type="gint"/>
    </constant>
    <bitfield name="MaximizeFlags"
              glib:type-name="MetaMaximizeFlags"
              glib:get-type="meta_maximize_flags_get_type"
              c:type="MetaMaximizeFlags">
      <member name="horizontal"
              value="1"
              c:identifier="META_MAXIMIZE_HORIZONTAL"
              glib:nick="horizontal">
      </member>
      <member name="vertical"
              value="2"
              c:identifier="META_MAXIMIZE_VERTICAL"
              glib:nick="vertical">
      </member>
    </bitfield>
    <bitfield name="MenuOp"
              glib:type-name="MetaMenuOp"
              glib:get-type="meta_menu_op_get_type"
              c:type="MetaMenuOp">
      <member name="none"
              value="0"
              c:identifier="META_MENU_OP_NONE"
              glib:nick="none">
      </member>
      <member name="delete"
              value="1"
              c:identifier="META_MENU_OP_DELETE"
              glib:nick="delete">
      </member>
      <member name="minimize"
              value="2"
              c:identifier="META_MENU_OP_MINIMIZE"
              glib:nick="minimize">
      </member>
      <member name="unmaximize"
              value="4"
              c:identifier="META_MENU_OP_UNMAXIMIZE"
              glib:nick="unmaximize">
      </member>
      <member name="maximize"
              value="8"
              c:identifier="META_MENU_OP_MAXIMIZE"
              glib:nick="maximize">
      </member>
      <member name="unshade"
              value="16"
              c:identifier="META_MENU_OP_UNSHADE"
              glib:nick="unshade">
      </member>
      <member name="shade"
              value="32"
              c:identifier="META_MENU_OP_SHADE"
              glib:nick="shade">
      </member>
      <member name="unstick"
              value="64"
              c:identifier="META_MENU_OP_UNSTICK"
              glib:nick="unstick">
      </member>
      <member name="stick"
              value="128"
              c:identifier="META_MENU_OP_STICK"
              glib:nick="stick">
      </member>
      <member name="workspaces"
              value="256"
              c:identifier="META_MENU_OP_WORKSPACES"
              glib:nick="workspaces">
      </member>
      <member name="move"
              value="512"
              c:identifier="META_MENU_OP_MOVE"
              glib:nick="move">
      </member>
      <member name="resize"
              value="1024"
              c:identifier="META_MENU_OP_RESIZE"
              glib:nick="resize">
      </member>
      <member name="above"
              value="2048"
              c:identifier="META_MENU_OP_ABOVE"
              glib:nick="above">
      </member>
      <member name="unabove"
              value="4096"
              c:identifier="META_MENU_OP_UNABOVE"
              glib:nick="unabove">
      </member>
      <member name="move_left"
              value="8192"
              c:identifier="META_MENU_OP_MOVE_LEFT"
              glib:nick="move-left">
      </member>
      <member name="move_right"
              value="16384"
              c:identifier="META_MENU_OP_MOVE_RIGHT"
              glib:nick="move-right">
      </member>
      <member name="move_up"
              value="32768"
              c:identifier="META_MENU_OP_MOVE_UP"
              glib:nick="move-up">
      </member>
      <member name="move_down"
              value="65536"
              c:identifier="META_MENU_OP_MOVE_DOWN"
              glib:nick="move-down">
      </member>
      <member name="recover"
              value="131072"
              c:identifier="META_MENU_OP_RECOVER"
              glib:nick="recover">
      </member>
      <member name="move_new"
              value="262144"
              c:identifier="META_MENU_OP_MOVE_NEW"
              glib:nick="move-new">
      </member>
    </bitfield>
    <bitfield name="ModalOptions"
              glib:type-name="MetaModalOptions"
              glib:get-type="meta_modal_options_get_type"
              c:type="MetaModalOptions">
      <doc xml:space="preserve">Options that can be provided when calling meta_plugin_begin_modal().</doc>
      <member name="pointer_already_grabbed"
              value="1"
              c:identifier="META_MODAL_POINTER_ALREADY_GRABBED"
              glib:nick="pointer-already-grabbed">
        <doc xml:space="preserve">if set the pointer is already
  grabbed by the plugin and should not be grabbed again.</doc>
      </member>
      <member name="keyboard_already_grabbed"
              value="2"
              c:identifier="META_MODAL_KEYBOARD_ALREADY_GRABBED"
              glib:nick="keyboard-already-grabbed">
        <doc xml:space="preserve">if set the keyboard is already
  grabbed by the plugin and should not be grabbed again.</doc>
      </member>
    </bitfield>
    <enumeration name="MotionDirection"
                 glib:type-name="MetaMotionDirection"
                 glib:get-type="meta_motion_direction_get_type"
                 c:type="MetaMotionDirection">
      <member name="up"
              value="-1"
              c:identifier="META_MOTION_UP"
              glib:nick="up">
      </member>
      <member name="down"
              value="-2"
              c:identifier="META_MOTION_DOWN"
              glib:nick="down">
      </member>
      <member name="left"
              value="-3"
              c:identifier="META_MOTION_LEFT"
              glib:nick="left">
      </member>
      <member name="right"
              value="-4"
              c:identifier="META_MOTION_RIGHT"
              glib:nick="right">
      </member>
      <member name="up_left"
              value="-5"
              c:identifier="META_MOTION_UP_LEFT"
              glib:nick="up-left">
      </member>
      <member name="up_right"
              value="-6"
              c:identifier="META_MOTION_UP_RIGHT"
              glib:nick="up-right">
      </member>
      <member name="down_left"
              value="-7"
              c:identifier="META_MOTION_DOWN_LEFT"
              glib:nick="down-left">
      </member>
      <member name="down_right"
              value="-8"
              c:identifier="META_MOTION_DOWN_RIGHT"
              glib:nick="down-right">
      </member>
      <member name="not_exist_yet"
              value="-30"
              c:identifier="META_MOTION_NOT_EXIST_YET"
              glib:nick="not-exist-yet">
      </member>
    </enumeration>
    <constant name="PRIORITY_BEFORE_REDRAW"
              value="40"
              c:type="META_PRIORITY_BEFORE_REDRAW">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="PRIORITY_PREFS_NOTIFY"
              value="10"
              c:type="META_PRIORITY_PREFS_NOTIFY">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="PRIORITY_REDRAW" value="50" c:type="META_PRIORITY_REDRAW">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="PRIORITY_RESIZE" value="15" c:type="META_PRIORITY_RESIZE">
      <type name="gint" c:type="gint"/>
    </constant>
    <enumeration name="PlacementMode"
                 glib:type-name="MetaPlacementMode"
                 glib:get-type="meta_placement_mode_get_type"
                 c:type="MetaPlacementMode">
      <member name="automatic"
              value="0"
              c:identifier="META_PLACEMENT_MODE_AUTOMATIC"
              glib:nick="automatic">
      </member>
      <member name="pointer"
              value="1"
              c:identifier="META_PLACEMENT_MODE_POINTER"
              glib:nick="pointer">
      </member>
      <member name="manual"
              value="2"
              c:identifier="META_PLACEMENT_MODE_MANUAL"
              glib:nick="manual">
      </member>
      <member name="center"
              value="3"
              c:identifier="META_PLACEMENT_MODE_CENTER"
              glib:nick="center">
      </member>
    </enumeration>
    <class name="Plugin"
           c:symbol-prefix="plugin"
           c:type="MetaPlugin"
           introspectable="0"
           parent="GObject.Object"
           abstract="1"
           glib:type-name="MetaPlugin"
           glib:get-type="meta_plugin_get_type"
           glib:type-struct="PluginClass">
      <function name="manager_set_plugin_type"
                c:identifier="meta_plugin_manager_set_plugin_type">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="gtype" transfer-ownership="none">
            <type name="GType" c:type="GType"/>
          </parameter>
        </parameters>
      </function>
      <virtual-method name="destroy">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="plugin" transfer-ownership="none">
            <type name="Plugin" c:type="MetaPlugin*"/>
          </instance-parameter>
          <parameter name="actor" transfer-ownership="none">
            <type name="WindowActor" c:type="MetaWindowActor*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="hide_hud_preview">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="plugin" transfer-ownership="none">
            <type name="Plugin" c:type="MetaPlugin*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="hide_tile_preview">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="plugin" transfer-ownership="none">
            <type name="Plugin" c:type="MetaPlugin*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="kill_window_effects">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="plugin" transfer-ownership="none">
            <type name="Plugin" c:type="MetaPlugin*"/>
          </instance-parameter>
          <parameter name="actor" transfer-ownership="none">
            <type name="WindowActor" c:type="MetaWindowActor*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="map">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="plugin" transfer-ownership="none">
            <type name="Plugin" c:type="MetaPlugin*"/>
          </instance-parameter>
          <parameter name="actor" transfer-ownership="none">
            <type name="WindowActor" c:type="MetaWindowActor*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="maximize">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="plugin" transfer-ownership="none">
            <type name="Plugin" c:type="MetaPlugin*"/>
          </instance-parameter>
          <parameter name="actor" transfer-ownership="none">
            <type name="WindowActor" c:type="MetaWindowActor*"/>
          </parameter>
          <parameter name="x" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="minimize">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="plugin" transfer-ownership="none">
            <type name="Plugin" c:type="MetaPlugin*"/>
          </instance-parameter>
          <parameter name="actor" transfer-ownership="none">
            <type name="WindowActor" c:type="MetaWindowActor*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="plugin_info">
        <return-value transfer-ownership="none">
          <type name="PluginInfo" c:type="const MetaPluginInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="plugin" transfer-ownership="none">
            <type name="Plugin" c:type="MetaPlugin*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="show_hud_preview">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="plugin" transfer-ownership="none">
            <type name="Plugin" c:type="MetaPlugin*"/>
          </instance-parameter>
          <parameter name="current_proximity_zone" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="work_area" transfer-ownership="none">
            <type name="Rectangle" c:type="MetaRectangle*"/>
          </parameter>
          <parameter name="snap_queued" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="show_tile_preview">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="plugin" transfer-ownership="none">
            <type name="Plugin" c:type="MetaPlugin*"/>
          </instance-parameter>
          <parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </parameter>
          <parameter name="tile_rect" transfer-ownership="none">
            <type name="Rectangle" c:type="MetaRectangle*"/>
          </parameter>
          <parameter name="tile_monitor_number" transfer-ownership="none">
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="snap_queued" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="start">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="plugin" transfer-ownership="none">
            <type name="Plugin" c:type="MetaPlugin*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="switch_workspace">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="plugin" transfer-ownership="none">
            <type name="Plugin" c:type="MetaPlugin*"/>
          </instance-parameter>
          <parameter name="from" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="to" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="direction" transfer-ownership="none">
            <type name="MotionDirection" c:type="MetaMotionDirection"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="tile">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="plugin" transfer-ownership="none">
            <type name="Plugin" c:type="MetaPlugin*"/>
          </instance-parameter>
          <parameter name="actor" transfer-ownership="none">
            <type name="WindowActor" c:type="MetaWindowActor*"/>
          </parameter>
          <parameter name="x" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="unmaximize">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="plugin" transfer-ownership="none">
            <type name="Plugin" c:type="MetaPlugin*"/>
          </instance-parameter>
          <parameter name="actor" transfer-ownership="none">
            <type name="WindowActor" c:type="MetaWindowActor*"/>
          </parameter>
          <parameter name="x" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="xevent_filter">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="plugin" transfer-ownership="none">
            <type name="Plugin" c:type="MetaPlugin*"/>
          </instance-parameter>
          <parameter name="event" transfer-ownership="none">
            <type c:type="XEvent*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="begin_modal" c:identifier="meta_plugin_begin_modal">
        <doc xml:space="preserve">This function is used to grab the keyboard and mouse for the exclusive
use of the plugin. Correct operation requires that both the keyboard
and mouse are grabbed, or thing will break. (In particular, other
passive X grabs in Meta can trigger but not be handled by the normal
keybinding handling code.) However, the plugin can establish the keyboard
and/or mouse grabs ahead of time and pass in the
%META_MODAL_POINTER_ALREADY_GRABBED and/or %META_MODAL_KEYBOARD_ALREADY_GRABBED
options. This facility is provided for two reasons: first to allow using
this function to establish modality after a passive grab, and second to
allow using obscure features of XGrabPointer() and XGrabKeyboard() without
having to add them to this API.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether we successfully grabbed the keyboard and
 mouse and made the plugin modal.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="plugin" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaPlugin</doc>
            <type name="Plugin" c:type="MetaPlugin*"/>
          </instance-parameter>
          <parameter name="grab_window" transfer-ownership="none">
            <doc xml:space="preserve">the X window to grab the keyboard and mouse on</doc>
            <type name="xlib.Window" c:type="Window"/>
          </parameter>
          <parameter name="cursor" transfer-ownership="none">
            <doc xml:space="preserve">the cursor to use for the pointer grab, or None,
         to use the normal cursor for the grab window and
         its descendants.</doc>
            <type name="xlib.Cursor" c:type="Cursor"/>
          </parameter>
          <parameter name="options" transfer-ownership="none">
            <doc xml:space="preserve">flags that modify the behavior of the modal grab</doc>
            <type name="ModalOptions" c:type="MetaModalOptions"/>
          </parameter>
          <parameter name="timestamp" transfer-ownership="none">
            <doc xml:space="preserve">the timestamp used for establishing grabs</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="debug_mode" c:identifier="meta_plugin_debug_mode">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="plugin" transfer-ownership="none">
            <type name="Plugin" c:type="MetaPlugin*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="destroy_completed"
              c:identifier="meta_plugin_destroy_completed">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="plugin" transfer-ownership="none">
            <type name="Plugin" c:type="MetaPlugin*"/>
          </instance-parameter>
          <parameter name="actor" transfer-ownership="none">
            <type name="WindowActor" c:type="MetaWindowActor*"/>
          </parameter>
        </parameters>
      </method>
      <method name="end_modal" c:identifier="meta_plugin_end_modal">
        <doc xml:space="preserve">Ends the modal operation begun with meta_plugin_begin_modal(). This
ungrabs both the mouse and keyboard even when
%META_MODAL_POINTER_ALREADY_GRABBED or
%META_MODAL_KEYBOARD_ALREADY_GRABBED were provided as options
when beginnning the modal operation.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="plugin" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaPlugin</doc>
            <type name="Plugin" c:type="MetaPlugin*"/>
          </instance-parameter>
          <parameter name="timestamp" transfer-ownership="none">
            <doc xml:space="preserve">the time used for releasing grabs</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_info" c:identifier="meta_plugin_get_info">
        <return-value transfer-ownership="none">
          <type name="PluginInfo" c:type="const MetaPluginInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="plugin" transfer-ownership="none">
            <type name="Plugin" c:type="MetaPlugin*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_screen" c:identifier="meta_plugin_get_screen">
        <doc xml:space="preserve">Gets the #MetaScreen corresponding to a plugin. Each plugin instance
is associated with exactly one screen; if Metacity is managing
multiple screens, multiple plugin instances will be created.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the #MetaScreen for the plugin</doc>
          <type name="Screen" c:type="MetaScreen*"/>
        </return-value>
        <parameters>
          <instance-parameter name="plugin" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaPlugin</doc>
            <type name="Plugin" c:type="MetaPlugin*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="map_completed" c:identifier="meta_plugin_map_completed">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="plugin" transfer-ownership="none">
            <type name="Plugin" c:type="MetaPlugin*"/>
          </instance-parameter>
          <parameter name="actor" transfer-ownership="none">
            <type name="WindowActor" c:type="MetaWindowActor*"/>
          </parameter>
        </parameters>
      </method>
      <method name="maximize_completed"
              c:identifier="meta_plugin_maximize_completed">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="plugin" transfer-ownership="none">
            <type name="Plugin" c:type="MetaPlugin*"/>
          </instance-parameter>
          <parameter name="actor" transfer-ownership="none">
            <type name="WindowActor" c:type="MetaWindowActor*"/>
          </parameter>
        </parameters>
      </method>
      <method name="minimize_completed"
              c:identifier="meta_plugin_minimize_completed">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="plugin" transfer-ownership="none">
            <type name="Plugin" c:type="MetaPlugin*"/>
          </instance-parameter>
          <parameter name="actor" transfer-ownership="none">
            <type name="WindowActor" c:type="MetaWindowActor*"/>
          </parameter>
        </parameters>
      </method>
      <method name="running" c:identifier="meta_plugin_running">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="plugin" transfer-ownership="none">
            <type name="Plugin" c:type="MetaPlugin*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="switch_workspace_completed"
              c:identifier="meta_plugin_switch_workspace_completed">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="plugin" transfer-ownership="none">
            <type name="Plugin" c:type="MetaPlugin*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="tile_completed" c:identifier="meta_plugin_tile_completed">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="plugin" transfer-ownership="none">
            <type name="Plugin" c:type="MetaPlugin*"/>
          </instance-parameter>
          <parameter name="actor" transfer-ownership="none">
            <type name="WindowActor" c:type="MetaWindowActor*"/>
          </parameter>
        </parameters>
      </method>
      <method name="unmaximize_completed"
              c:identifier="meta_plugin_unmaximize_completed">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="plugin" transfer-ownership="none">
            <type name="Plugin" c:type="MetaPlugin*"/>
          </instance-parameter>
          <parameter name="actor" transfer-ownership="none">
            <type name="WindowActor" c:type="MetaWindowActor*"/>
          </parameter>
        </parameters>
      </method>
      <property name="debug-mode" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="screen" writable="1" transfer-ownership="none">
        <type name="Screen"/>
      </property>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv">
        <type name="PluginPrivate" c:type="MetaPluginPrivate*"/>
      </field>
    </class>
    <record name="PluginClass"
            c:type="MetaPluginClass"
            glib:is-gtype-struct-for="Plugin"
            introspectable="0">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="start">
        <callback name="start" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="plugin" transfer-ownership="none">
              <type name="Plugin" c:type="MetaPlugin*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="minimize">
        <callback name="minimize" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="plugin" transfer-ownership="none">
              <type name="Plugin" c:type="MetaPlugin*"/>
            </parameter>
            <parameter name="actor" transfer-ownership="none">
              <type name="WindowActor" c:type="MetaWindowActor*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="maximize">
        <callback name="maximize" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="plugin" transfer-ownership="none">
              <type name="Plugin" c:type="MetaPlugin*"/>
            </parameter>
            <parameter name="actor" transfer-ownership="none">
              <type name="WindowActor" c:type="MetaWindowActor*"/>
            </parameter>
            <parameter name="x" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="y" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="width" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="height" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="unmaximize">
        <callback name="unmaximize" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="plugin" transfer-ownership="none">
              <type name="Plugin" c:type="MetaPlugin*"/>
            </parameter>
            <parameter name="actor" transfer-ownership="none">
              <type name="WindowActor" c:type="MetaWindowActor*"/>
            </parameter>
            <parameter name="x" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="y" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="width" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="height" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="tile">
        <callback name="tile" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="plugin" transfer-ownership="none">
              <type name="Plugin" c:type="MetaPlugin*"/>
            </parameter>
            <parameter name="actor" transfer-ownership="none">
              <type name="WindowActor" c:type="MetaWindowActor*"/>
            </parameter>
            <parameter name="x" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="y" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="width" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="height" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="map">
        <callback name="map" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="plugin" transfer-ownership="none">
              <type name="Plugin" c:type="MetaPlugin*"/>
            </parameter>
            <parameter name="actor" transfer-ownership="none">
              <type name="WindowActor" c:type="MetaWindowActor*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="destroy">
        <callback name="destroy" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="plugin" transfer-ownership="none">
              <type name="Plugin" c:type="MetaPlugin*"/>
            </parameter>
            <parameter name="actor" transfer-ownership="none">
              <type name="WindowActor" c:type="MetaWindowActor*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="switch_workspace">
        <callback name="switch_workspace" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="plugin" transfer-ownership="none">
              <type name="Plugin" c:type="MetaPlugin*"/>
            </parameter>
            <parameter name="from" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="to" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="direction" transfer-ownership="none">
              <type name="MotionDirection" c:type="MetaMotionDirection"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="show_tile_preview">
        <callback name="show_tile_preview" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="plugin" transfer-ownership="none">
              <type name="Plugin" c:type="MetaPlugin*"/>
            </parameter>
            <parameter name="window" transfer-ownership="none">
              <type name="Window" c:type="MetaWindow*"/>
            </parameter>
            <parameter name="tile_rect" transfer-ownership="none">
              <type name="Rectangle" c:type="MetaRectangle*"/>
            </parameter>
            <parameter name="tile_monitor_number" transfer-ownership="none">
              <type name="gint" c:type="int"/>
            </parameter>
            <parameter name="snap_queued" transfer-ownership="none">
              <type name="guint" c:type="guint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="hide_tile_preview">
        <callback name="hide_tile_preview" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="plugin" transfer-ownership="none">
              <type name="Plugin" c:type="MetaPlugin*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="show_hud_preview">
        <callback name="show_hud_preview" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="plugin" transfer-ownership="none">
              <type name="Plugin" c:type="MetaPlugin*"/>
            </parameter>
            <parameter name="current_proximity_zone" transfer-ownership="none">
              <type name="guint" c:type="guint"/>
            </parameter>
            <parameter name="work_area" transfer-ownership="none">
              <type name="Rectangle" c:type="MetaRectangle*"/>
            </parameter>
            <parameter name="snap_queued" transfer-ownership="none">
              <type name="guint" c:type="guint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="hide_hud_preview">
        <callback name="hide_hud_preview" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="plugin" transfer-ownership="none">
              <type name="Plugin" c:type="MetaPlugin*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="kill_window_effects">
        <callback name="kill_window_effects" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="plugin" transfer-ownership="none">
              <type name="Plugin" c:type="MetaPlugin*"/>
            </parameter>
            <parameter name="actor" transfer-ownership="none">
              <type name="WindowActor" c:type="MetaWindowActor*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="xevent_filter">
        <callback name="xevent_filter" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="plugin" transfer-ownership="none">
              <type name="Plugin" c:type="MetaPlugin*"/>
            </parameter>
            <parameter name="event" transfer-ownership="none">
              <type c:type="XEvent*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="plugin_info">
        <callback name="plugin_info" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="PluginInfo" c:type="const MetaPluginInfo*"/>
          </return-value>
          <parameters>
            <parameter name="plugin" transfer-ownership="none">
              <type name="Plugin" c:type="MetaPlugin*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <record name="PluginInfo" c:type="MetaPluginInfo">
      <field name="name" writable="1">
        <type name="utf8" c:type="const gchar*"/>
      </field>
      <field name="version" writable="1">
        <type name="utf8" c:type="const gchar*"/>
      </field>
      <field name="author" writable="1">
        <type name="utf8" c:type="const gchar*"/>
      </field>
      <field name="license" writable="1">
        <type name="utf8" c:type="const gchar*"/>
      </field>
      <field name="description" writable="1">
        <type name="utf8" c:type="const gchar*"/>
      </field>
    </record>
    <record name="PluginPrivate" c:type="MetaPluginPrivate" disguised="1">
    </record>
    <record name="PluginVersion" c:type="MetaPluginVersion">
      <field name="version_major" writable="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="version_minor" writable="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="version_micro" writable="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="version_api" writable="1">
        <type name="guint" c:type="guint"/>
      </field>
    </record>
    <enumeration name="Preference"
                 glib:type-name="MetaPreference"
                 glib:get-type="meta_preference_get_type"
                 c:type="MetaPreference">
      <member name="mouse_button_mods"
              value="0"
              c:identifier="META_PREF_MOUSE_BUTTON_MODS"
              glib:nick="mouse-button-mods">
      </member>
      <member name="focus_mode"
              value="1"
              c:identifier="META_PREF_FOCUS_MODE"
              glib:nick="focus-mode">
      </member>
      <member name="focus_new_windows"
              value="2"
              c:identifier="META_PREF_FOCUS_NEW_WINDOWS"
              glib:nick="focus-new-windows">
      </member>
      <member name="attach_modal_dialogs"
              value="3"
              c:identifier="META_PREF_ATTACH_MODAL_DIALOGS"
              glib:nick="attach-modal-dialogs">
      </member>
      <member name="raise_on_click"
              value="4"
              c:identifier="META_PREF_RAISE_ON_CLICK"
              glib:nick="raise-on-click">
      </member>
      <member name="action_double_click_titlebar"
              value="5"
              c:identifier="META_PREF_ACTION_DOUBLE_CLICK_TITLEBAR"
              glib:nick="action-double-click-titlebar">
      </member>
      <member name="action_middle_click_titlebar"
              value="6"
              c:identifier="META_PREF_ACTION_MIDDLE_CLICK_TITLEBAR"
              glib:nick="action-middle-click-titlebar">
      </member>
      <member name="action_right_click_titlebar"
              value="7"
              c:identifier="META_PREF_ACTION_RIGHT_CLICK_TITLEBAR"
              glib:nick="action-right-click-titlebar">
      </member>
      <member name="action_scroll_wheel_titlebar"
              value="8"
              c:identifier="META_PREF_ACTION_SCROLL_WHEEL_TITLEBAR"
              glib:nick="action-scroll-wheel-titlebar">
      </member>
      <member name="auto_raise"
              value="9"
              c:identifier="META_PREF_AUTO_RAISE"
              glib:nick="auto-raise">
      </member>
      <member name="auto_raise_delay"
              value="10"
              c:identifier="META_PREF_AUTO_RAISE_DELAY"
              glib:nick="auto-raise-delay">
      </member>
      <member name="theme"
              value="11"
              c:identifier="META_PREF_THEME"
              glib:nick="theme">
      </member>
      <member name="titlebar_font"
              value="12"
              c:identifier="META_PREF_TITLEBAR_FONT"
              glib:nick="titlebar-font">
      </member>
      <member name="num_workspaces"
              value="13"
              c:identifier="META_PREF_NUM_WORKSPACES"
              glib:nick="num-workspaces">
      </member>
      <member name="dynamic_workspaces"
              value="14"
              c:identifier="META_PREF_DYNAMIC_WORKSPACES"
              glib:nick="dynamic-workspaces">
      </member>
      <member name="unredirect_fullscreen_windows"
              value="15"
              c:identifier="META_PREF_UNREDIRECT_FULLSCREEN_WINDOWS"
              glib:nick="unredirect-fullscreen-windows">
      </member>
      <member name="application_based"
              value="16"
              c:identifier="META_PREF_APPLICATION_BASED"
              glib:nick="application-based">
      </member>
      <member name="keybindings"
              value="17"
              c:identifier="META_PREF_KEYBINDINGS"
              glib:nick="keybindings">
      </member>
      <member name="disable_workarounds"
              value="18"
              c:identifier="META_PREF_DISABLE_WORKAROUNDS"
              glib:nick="disable-workarounds">
      </member>
      <member name="button_layout"
              value="19"
              c:identifier="META_PREF_BUTTON_LAYOUT"
              glib:nick="button-layout">
      </member>
      <member name="workspace_names"
              value="20"
              c:identifier="META_PREF_WORKSPACE_NAMES"
              glib:nick="workspace-names">
      </member>
      <member name="workspace_cycle"
              value="21"
              c:identifier="META_PREF_WORKSPACE_CYCLE"
              glib:nick="workspace-cycle">
      </member>
      <member name="visual_bell"
              value="22"
              c:identifier="META_PREF_VISUAL_BELL"
              glib:nick="visual-bell">
      </member>
      <member name="audible_bell"
              value="23"
              c:identifier="META_PREF_AUDIBLE_BELL"
              glib:nick="audible-bell">
      </member>
      <member name="visual_bell_type"
              value="24"
              c:identifier="META_PREF_VISUAL_BELL_TYPE"
              glib:nick="visual-bell-type">
      </member>
      <member name="gnome_accessibility"
              value="25"
              c:identifier="META_PREF_GNOME_ACCESSIBILITY"
              glib:nick="gnome-accessibility">
      </member>
      <member name="gnome_animations"
              value="26"
              c:identifier="META_PREF_GNOME_ANIMATIONS"
              glib:nick="gnome-animations">
      </member>
      <member name="cursor_theme"
              value="27"
              c:identifier="META_PREF_CURSOR_THEME"
              glib:nick="cursor-theme">
      </member>
      <member name="cursor_size"
              value="28"
              c:identifier="META_PREF_CURSOR_SIZE"
              glib:nick="cursor-size">
      </member>
      <member name="resize_with_right_button"
              value="29"
              c:identifier="META_PREF_RESIZE_WITH_RIGHT_BUTTON"
              glib:nick="resize-with-right-button">
      </member>
      <member name="edge_tiling"
              value="30"
              c:identifier="META_PREF_EDGE_TILING"
              glib:nick="edge-tiling">
      </member>
      <member name="force_fullscreen"
              value="31"
              c:identifier="META_PREF_FORCE_FULLSCREEN"
              glib:nick="force-fullscreen">
      </member>
      <member name="live_hidden_windows"
              value="32"
              c:identifier="META_PREF_LIVE_HIDDEN_WINDOWS"
              glib:nick="live-hidden-windows">
      </member>
      <member name="workspaces_only_on_primary"
              value="33"
              c:identifier="META_PREF_WORKSPACES_ONLY_ON_PRIMARY"
              glib:nick="workspaces-only-on-primary">
      </member>
      <member name="draggable_border_width"
              value="34"
              c:identifier="META_PREF_DRAGGABLE_BORDER_WIDTH"
              glib:nick="draggable-border-width">
      </member>
      <member name="tile_hud_threshold"
              value="35"
              c:identifier="META_PREF_TILE_HUD_THRESHOLD"
              glib:nick="tile-hud-threshold">
      </member>
      <member name="resize_threshold"
              value="36"
              c:identifier="META_PREF_RESIZE_THRESHOLD"
              glib:nick="resize-threshold">
      </member>
      <member name="snap_modifier"
              value="37"
              c:identifier="META_PREF_SNAP_MODIFIER"
              glib:nick="snap-modifier">
      </member>
      <member name="legacy_snap"
              value="38"
              c:identifier="META_PREF_LEGACY_SNAP"
              glib:nick="legacy-snap">
      </member>
      <member name="invert_workspace_flip_direction"
              value="39"
              c:identifier="META_PREF_INVERT_WORKSPACE_FLIP_DIRECTION"
              glib:nick="invert-workspace-flip-direction">
      </member>
      <member name="tile_maximize"
              value="40"
              c:identifier="META_PREF_TILE_MAXIMIZE"
              glib:nick="tile-maximize">
      </member>
      <member name="placement_mode"
              value="41"
              c:identifier="META_PREF_PLACEMENT_MODE"
              glib:nick="placement-mode">
      </member>
      <member name="min_win_opacity"
              value="42"
              c:identifier="META_PREF_MIN_WIN_OPACITY"
              glib:nick="min-win-opacity">
      </member>
      <member name="mouse_zoom_enabled"
              value="43"
              c:identifier="META_PREF_MOUSE_ZOOM_ENABLED"
              glib:nick="mouse-zoom-enabled">
      </member>
      <member name="mouse_button_zoom_mods"
              value="44"
              c:identifier="META_PREF_MOUSE_BUTTON_ZOOM_MODS"
              glib:nick="mouse-button-zoom-mods">
      </member>
      <function name="to_string" c:identifier="meta_preference_to_string">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <parameter name="pref" transfer-ownership="none">
            <type name="Preference" c:type="MetaPreference"/>
          </parameter>
        </parameters>
      </function>
    </enumeration>
    <callback name="PrefsChangedFunc" c:type="MetaPrefsChangedFunc">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="pref" transfer-ownership="none">
          <type name="Preference" c:type="MetaPreference"/>
        </parameter>
        <parameter name="data" transfer-ownership="none">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <record name="Rectangle"
            c:type="MetaRectangle"
            glib:type-name="MetaRectangle"
            glib:get-type="meta_rectangle_get_type"
            c:symbol-prefix="rectangle">
      <field name="x" writable="1">
        <type name="gint" c:type="int"/>
      </field>
      <field name="y" writable="1">
        <type name="gint" c:type="int"/>
      </field>
      <field name="width" writable="1">
        <type name="gint" c:type="int"/>
      </field>
      <field name="height" writable="1">
        <type name="gint" c:type="int"/>
      </field>
      <method name="area" c:identifier="meta_rectangle_area">
        <return-value transfer-ownership="none">
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="rect" transfer-ownership="none">
            <type name="Rectangle" c:type="const MetaRectangle*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="contains_rect" c:identifier="meta_rectangle_contains_rect">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="outer_rect" transfer-ownership="none">
            <type name="Rectangle" c:type="const MetaRectangle*"/>
          </instance-parameter>
          <parameter name="inner_rect" transfer-ownership="none">
            <type name="Rectangle" c:type="const MetaRectangle*"/>
          </parameter>
        </parameters>
      </method>
      <method name="copy" c:identifier="meta_rectangle_copy">
        <return-value transfer-ownership="full">
          <type name="Rectangle" c:type="MetaRectangle*"/>
        </return-value>
        <parameters>
          <instance-parameter name="rect" transfer-ownership="none">
            <type name="Rectangle" c:type="const MetaRectangle*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="could_fit_rect"
              c:identifier="meta_rectangle_could_fit_rect">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="outer_rect" transfer-ownership="none">
            <type name="Rectangle" c:type="const MetaRectangle*"/>
          </instance-parameter>
          <parameter name="inner_rect" transfer-ownership="none">
            <type name="Rectangle" c:type="const MetaRectangle*"/>
          </parameter>
        </parameters>
      </method>
      <method name="equal" c:identifier="meta_rectangle_equal">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="src1" transfer-ownership="none">
            <type name="Rectangle" c:type="const MetaRectangle*"/>
          </instance-parameter>
          <parameter name="src2" transfer-ownership="none">
            <type name="Rectangle" c:type="const MetaRectangle*"/>
          </parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="meta_rectangle_free">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="rect" transfer-ownership="none">
            <type name="Rectangle" c:type="MetaRectangle*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="horiz_overlap" c:identifier="meta_rectangle_horiz_overlap">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="rect1" transfer-ownership="none">
            <type name="Rectangle" c:type="const MetaRectangle*"/>
          </instance-parameter>
          <parameter name="rect2" transfer-ownership="none">
            <type name="Rectangle" c:type="const MetaRectangle*"/>
          </parameter>
        </parameters>
      </method>
      <method name="intersect" c:identifier="meta_rectangle_intersect">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">TRUE is some intersection exists and is not degenerate, FALSE
  otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="src1" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaRectangle</doc>
            <type name="Rectangle" c:type="const MetaRectangle*"/>
          </instance-parameter>
          <parameter name="src2" transfer-ownership="none">
            <doc xml:space="preserve">another #MetaRectangle</doc>
            <type name="Rectangle" c:type="const MetaRectangle*"/>
          </parameter>
          <parameter name="dest"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve">an empty #MetaRectangle, to be filled
  with the coordinates of the intersection.</doc>
            <type name="Rectangle" c:type="MetaRectangle*"/>
          </parameter>
        </parameters>
      </method>
      <method name="overlap" c:identifier="meta_rectangle_overlap">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="rect1" transfer-ownership="none">
            <type name="Rectangle" c:type="const MetaRectangle*"/>
          </instance-parameter>
          <parameter name="rect2" transfer-ownership="none">
            <type name="Rectangle" c:type="const MetaRectangle*"/>
          </parameter>
        </parameters>
      </method>
      <method name="union" c:identifier="meta_rectangle_union">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="rect1" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaRectangle</doc>
            <type name="Rectangle" c:type="const MetaRectangle*"/>
          </instance-parameter>
          <parameter name="rect2" transfer-ownership="none">
            <doc xml:space="preserve">another #MetaRectangle</doc>
            <type name="Rectangle" c:type="const MetaRectangle*"/>
          </parameter>
          <parameter name="dest"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve">an empty #MetaRectangle, to be filled
  with the coordinates of the bounding box.</doc>
            <type name="Rectangle" c:type="MetaRectangle*"/>
          </parameter>
        </parameters>
      </method>
      <method name="vert_overlap" c:identifier="meta_rectangle_vert_overlap">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="rect1" transfer-ownership="none">
            <type name="Rectangle" c:type="const MetaRectangle*"/>
          </instance-parameter>
          <parameter name="rect2" transfer-ownership="none">
            <type name="Rectangle" c:type="const MetaRectangle*"/>
          </parameter>
        </parameters>
      </method>
    </record>
    <record name="ResizePopup" c:type="MetaResizePopup" disguised="1">
    </record>
    <class name="Screen"
           c:symbol-prefix="screen"
           c:type="MetaScreen"
           parent="GObject.Object"
           glib:type-name="MetaScreen"
           glib:get-type="meta_screen_get_type"
           glib:type-struct="ScreenClass">
      <function name="for_x_screen" c:identifier="meta_screen_for_x_screen">
        <doc xml:space="preserve">Gets the #MetaScreen corresponding to an X screen structure.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the #MetaScreen for the X screen
  %NULL if Metacity is not managing the screen.</doc>
          <type name="Screen" c:type="MetaScreen*"/>
        </return-value>
        <parameters>
          <parameter name="xscreen" transfer-ownership="none">
            <doc xml:space="preserve">an X screen structure.</doc>
            <type name="xlib.Screen" c:type="Screen*"/>
          </parameter>
        </parameters>
      </function>
      <method name="append_new_workspace"
              c:identifier="meta_screen_append_new_workspace">
        <doc xml:space="preserve">Append a new workspace to the screen and (optionally) switch to that
screen.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the newly appended workspace.</doc>
          <type name="Workspace" c:type="MetaWorkspace*"/>
        </return-value>
        <parameters>
          <instance-parameter name="screen" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaScreen</doc>
            <type name="Screen" c:type="MetaScreen*"/>
          </instance-parameter>
          <parameter name="activate" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if the workspace should be switched to after creation</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="timestamp" transfer-ownership="none">
            <doc xml:space="preserve">if switching to a new workspace, timestamp to be used when
  focusing a window on the new workspace. (Doesn't hurt to pass a valid
  timestamp when available even if not switching workspaces.)</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_active_workspace"
              c:identifier="meta_screen_get_active_workspace">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The current workspace</doc>
          <type name="Workspace" c:type="MetaWorkspace*"/>
        </return-value>
        <parameters>
          <instance-parameter name="screen" transfer-ownership="none">
            <type name="Screen" c:type="MetaScreen*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_active_workspace_index"
              c:identifier="meta_screen_get_active_workspace_index">
        <return-value transfer-ownership="none">
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="screen" transfer-ownership="none">
            <type name="Screen" c:type="MetaScreen*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_compositor_data"
              c:identifier="meta_screen_get_compositor_data"
              introspectable="0">
        <return-value>
          <type name="gpointer" c:type="gpointer"/>
        </return-value>
        <parameters>
          <instance-parameter name="screen" transfer-ownership="none">
            <type name="Screen" c:type="MetaScreen*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_display" c:identifier="meta_screen_get_display">
        <doc xml:space="preserve">Retrieve the display associated with screen.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Display</doc>
          <type name="Display" c:type="MetaDisplay*"/>
        </return-value>
        <parameters>
          <instance-parameter name="screen" transfer-ownership="none">
            <doc xml:space="preserve">A #MetaScreen</doc>
            <type name="Screen" c:type="MetaScreen*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_monitor_geometry"
              c:identifier="meta_screen_get_monitor_geometry">
        <doc xml:space="preserve">Stores the location and size of the indicated monitor in @geometry.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="screen" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaScreen</doc>
            <type name="Screen" c:type="MetaScreen*"/>
          </instance-parameter>
          <parameter name="monitor" transfer-ownership="none">
            <doc xml:space="preserve">the monitor number</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="geometry"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve">location to store the monitor geometry</doc>
            <type name="Rectangle" c:type="MetaRectangle*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_mouse_window"
              c:identifier="meta_screen_get_mouse_window">
        <doc xml:space="preserve">Gets the #MetaWindow pointed by the mouse</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the #MetaWindow pointed by the mouse
 %NULL when window not found</doc>
          <type name="Window" c:type="MetaWindow*"/>
        </return-value>
        <parameters>
          <instance-parameter name="screen" transfer-ownership="none">
            <doc xml:space="preserve">an X screen structure.</doc>
            <type name="Screen" c:type="MetaScreen*"/>
          </instance-parameter>
          <parameter name="not_this_one"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">window to be excluded</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_n_monitors" c:identifier="meta_screen_get_n_monitors">
        <doc xml:space="preserve">Gets the number of monitors that are joined together to form @screen.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of monitors</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="screen" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaScreen</doc>
            <type name="Screen" c:type="MetaScreen*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_n_workspaces"
              c:identifier="meta_screen_get_n_workspaces">
        <return-value transfer-ownership="none">
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="screen" transfer-ownership="none">
            <type name="Screen" c:type="MetaScreen*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_primary_monitor"
              c:identifier="meta_screen_get_primary_monitor">
        <doc xml:space="preserve">Gets the index of the primary monitor on this @screen.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a monitor index</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="screen" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaScreen</doc>
            <type name="Screen" c:type="MetaScreen*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_screen_number"
              c:identifier="meta_screen_get_screen_number">
        <return-value transfer-ownership="none">
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="screen" transfer-ownership="none">
            <type name="Screen" c:type="MetaScreen*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_size" c:identifier="meta_screen_get_size">
        <doc xml:space="preserve">Retrieve the size of the screen.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="screen" transfer-ownership="none">
            <doc xml:space="preserve">A #MetaScreen</doc>
            <type name="Screen" c:type="MetaScreen*"/>
          </instance-parameter>
          <parameter name="width"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">The width of the screen</doc>
            <type name="gint" c:type="int*"/>
          </parameter>
          <parameter name="height"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">The height of the screen</doc>
            <type name="gint" c:type="int*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_startup_sequences"
              c:identifier="meta_screen_get_startup_sequences"
              introspectable="0">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Currently active #SnStartupSequence items</doc>
          <type name="GLib.SList" c:type="GSList*">
            <type name="gpointer" c:type="gpointer"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="screen" transfer-ownership="none">
            <type name="Screen" c:type="MetaScreen*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_workspace_by_index"
              c:identifier="meta_screen_get_workspace_by_index">
        <doc xml:space="preserve">Gets the workspace object for one of a screen's workspaces given the workspace
index. It's valid to call this function with an out-of-range index and it
will robustly return %NULL.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the workspace object with specified index, or %NULL
  if the index is out of range.</doc>
          <type name="Workspace" c:type="MetaWorkspace*"/>
        </return-value>
        <parameters>
          <instance-parameter name="screen" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaScreen</doc>
            <type name="Screen" c:type="MetaScreen*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve">index of one of the screen's workspaces</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_workspaces"
              c:identifier="meta_screen_get_workspaces"
              introspectable="0">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The workspaces for @screen</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="Workspace"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="screen" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaScreen</doc>
            <type name="Screen" c:type="MetaScreen*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_xroot"
              c:identifier="meta_screen_get_xroot"
              introspectable="0">
        <return-value transfer-ownership="none">
          <type name="xlib.Window" c:type="Window"/>
        </return-value>
        <parameters>
          <instance-parameter name="screen" transfer-ownership="none">
            <type name="Screen" c:type="MetaScreen*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="grab_all_keys" c:identifier="meta_screen_grab_all_keys">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="screen" transfer-ownership="none">
            <type name="Screen" c:type="MetaScreen*"/>
          </instance-parameter>
          <parameter name="timestamp" transfer-ownership="none">
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="override_workspace_layout"
              c:identifier="meta_screen_override_workspace_layout">
        <doc xml:space="preserve">Explicitly set the layout of workspaces. Once this has been called, the contents of the
_NET_DESKTOP_LAYOUT property on the root window are completely ignored.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="screen" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaScreen</doc>
            <type name="Screen" c:type="MetaScreen*"/>
          </instance-parameter>
          <parameter name="starting_corner" transfer-ownership="none">
            <doc xml:space="preserve">the corner at which the first workspace is found</doc>
            <type name="ScreenCorner" c:type="MetaScreenCorner"/>
          </parameter>
          <parameter name="vertical_layout" transfer-ownership="none">
            <doc xml:space="preserve">if %TRUE the workspaces are laid out in columns rather than rows</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="n_rows" transfer-ownership="none">
            <doc xml:space="preserve">number of rows of workspaces, or -1 to determine the number of rows from
  @n_columns and the total number of workspaces</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="n_columns" transfer-ownership="none">
            <doc xml:space="preserve">number of columns of workspaces, or -1 to determine the number of columns from
  @n_rows and the total number of workspaces</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_workspace"
              c:identifier="meta_screen_remove_workspace">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="screen" transfer-ownership="none">
            <type name="Screen" c:type="MetaScreen*"/>
          </instance-parameter>
          <parameter name="workspace" transfer-ownership="none">
            <type name="Workspace" c:type="MetaWorkspace*"/>
          </parameter>
          <parameter name="timestamp" transfer-ownership="none">
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_cm_selection"
              c:identifier="meta_screen_set_cm_selection">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="screen" transfer-ownership="none">
            <type name="Screen" c:type="MetaScreen*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_compositor_data"
              c:identifier="meta_screen_set_compositor_data">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="screen" transfer-ownership="none">
            <type name="Screen" c:type="MetaScreen*"/>
          </instance-parameter>
          <parameter name="info" transfer-ownership="none">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="show_desktop" c:identifier="meta_screen_show_desktop">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="screen" transfer-ownership="none">
            <type name="Screen" c:type="MetaScreen*"/>
          </instance-parameter>
          <parameter name="timestamp" transfer-ownership="none">
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="toggle_desktop" c:identifier="meta_screen_toggle_desktop">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="screen" transfer-ownership="none">
            <type name="Screen" c:type="MetaScreen*"/>
          </instance-parameter>
          <parameter name="timestamp" transfer-ownership="none">
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="ungrab_all_keys"
              c:identifier="meta_screen_ungrab_all_keys">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="screen" transfer-ownership="none">
            <type name="Screen" c:type="MetaScreen*"/>
          </instance-parameter>
          <parameter name="timestamp" transfer-ownership="none">
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="unset_cm_selection"
              c:identifier="meta_screen_unset_cm_selection">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="screen" transfer-ownership="none">
            <type name="Screen" c:type="MetaScreen*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unshow_desktop" c:identifier="meta_screen_unshow_desktop">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="screen" transfer-ownership="none">
            <type name="Screen" c:type="MetaScreen*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="keyboard-grabbed" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="n-workspaces" transfer-ownership="none">
        <type name="gint" c:type="gint"/>
      </property>
      <glib:signal name="hide-snap-osd" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="monitors-changed" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="restacked" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="show-snap-osd" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="show-workspace-osd" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="startup-sequence-changed" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="toggle-recording" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="window-entered-monitor" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="p0" transfer-ownership="none">
            <type name="Window"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="window-left-monitor" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="p0" transfer-ownership="none">
            <type name="Window"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="workareas-changed" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="workspace-added" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="workspace-removed" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="workspace-switched" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="p0" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="p1" transfer-ownership="none">
            <type name="MotionDirection"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="ScreenClass"
            c:type="MetaScreenClass"
            disguised="1"
            glib:is-gtype-struct-for="Screen">
    </record>
    <enumeration name="ScreenCorner"
                 glib:type-name="MetaScreenCorner"
                 glib:get-type="meta_screen_corner_get_type"
                 c:type="MetaScreenCorner">
      <member name="topleft"
              value="0"
              c:identifier="META_SCREEN_TOPLEFT"
              glib:nick="topleft">
      </member>
      <member name="topright"
              value="1"
              c:identifier="META_SCREEN_TOPRIGHT"
              glib:nick="topright">
      </member>
      <member name="bottomleft"
              value="2"
              c:identifier="META_SCREEN_BOTTOMLEFT"
              glib:nick="bottomleft">
      </member>
      <member name="bottomright"
              value="3"
              c:identifier="META_SCREEN_BOTTOMRIGHT"
              glib:nick="bottomright">
      </member>
    </enumeration>
    <class name="ShadowFactory"
           c:symbol-prefix="shadow_factory"
           c:type="MetaShadowFactory"
           parent="GObject.Object"
           glib:type-name="MetaShadowFactory"
           glib:get-type="meta_shadow_factory_get_type"
           glib:type-struct="ShadowFactoryClass">
      <doc xml:space="preserve">#MetaShadowFactory is used to create window shadows. It caches shadows internally
so that multiple shadows created for the same shape with the same radius will
share the same MetaShadow.</doc>
      <function name="get_default"
                c:identifier="meta_shadow_factory_get_default">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the global singleton shadow factory</doc>
          <type name="ShadowFactory" c:type="MetaShadowFactory*"/>
        </return-value>
      </function>
      <method name="get_params" c:identifier="meta_shadow_factory_get_params">
        <doc xml:space="preserve">Gets the shadow parameters for a particular class of shadows
for either the focused or unfocused state. If the class name
does not name an existing class, default values will be returned
without printing an error.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="factory" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaShadowFactory</doc>
            <type name="ShadowFactory" c:type="MetaShadowFactory*"/>
          </instance-parameter>
          <parameter name="class_name" transfer-ownership="none">
            <doc xml:space="preserve">name of the class of shadow to get the params for</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="focused" transfer-ownership="none">
            <doc xml:space="preserve">whether the shadow is for a focused window</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="params"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve">location to store the current parameter values</doc>
            <type name="ShadowParams" c:type="MetaShadowParams*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_params" c:identifier="meta_shadow_factory_set_params">
        <doc xml:space="preserve">Updates the shadow parameters for a particular class of shadows
for either the focused or unfocused state. If the class name
does not name an existing class, a new class will be created
(the other focus state for that class will have default values
assigned to it.)</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="factory" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaShadowFactory</doc>
            <type name="ShadowFactory" c:type="MetaShadowFactory*"/>
          </instance-parameter>
          <parameter name="class_name" transfer-ownership="none">
            <doc xml:space="preserve">name of the class of shadow to set the params for.
 the default shadow classes are the names of the different
 theme frame types (normal, dialog, modal_dialog, utility,
 border, menu, attached) and in addition, popup-menu
 and dropdown-menu.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="focused" transfer-ownership="none">
            <doc xml:space="preserve">whether the shadow is for a focused window</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="params" transfer-ownership="none">
            <doc xml:space="preserve">new parameter values</doc>
            <type name="ShadowParams" c:type="MetaShadowParams*"/>
          </parameter>
        </parameters>
      </method>
      <glib:signal name="changed" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="ShadowFactoryClass"
            c:type="MetaShadowFactoryClass"
            disguised="1"
            glib:is-gtype-struct-for="ShadowFactory">
    </record>
    <record name="ShadowParams" c:type="MetaShadowParams">
      <doc xml:space="preserve">The #MetaShadowParams structure holds information about how to draw
a particular style of shadow.</doc>
      <field name="radius" writable="1">
        <doc xml:space="preserve">the radius (gaussian standard deviation) of the shadow</doc>
        <type name="gint" c:type="int"/>
      </field>
      <field name="top_fade" writable="1">
        <doc xml:space="preserve">if &gt;= 0, the shadow doesn't extend above the top
 of the shape, and fades out over the given number of pixels</doc>
        <type name="gint" c:type="int"/>
      </field>
      <field name="x_offset" writable="1">
        <doc xml:space="preserve">horizontal offset of the shadow with respect to the
 shape being shadowed, in pixels</doc>
        <type name="gint" c:type="int"/>
      </field>
      <field name="y_offset" writable="1">
        <doc xml:space="preserve">vertical offset of the shadow with respect to the
 shape being shadowed, in pixels</doc>
        <type name="gint" c:type="int"/>
      </field>
      <field name="opacity" writable="1">
        <doc xml:space="preserve">opacity of the shadow, from 0 to 255</doc>
        <type name="guint8" c:type="guint8"/>
      </field>
    </record>
    <class name="ShapedTexture"
           c:symbol-prefix="shaped_texture"
           c:type="MetaShapedTexture"
           parent="Clutter.Actor"
           glib:type-name="MetaShapedTexture"
           glib:get-type="meta_shaped_texture_get_type"
           glib:type-struct="ShapedTextureClass">
      <implements name="Atk.ImplementorIface"/>
      <implements name="Clutter.Animatable"/>
      <implements name="Clutter.Container"/>
      <implements name="Clutter.Scriptable"/>
      <constructor name="new" c:identifier="meta_shaped_texture_new">
        <return-value transfer-ownership="none">
          <type name="Clutter.Actor" c:type="ClutterActor*"/>
        </return-value>
      </constructor>
      <method name="get_image" c:identifier="meta_shaped_texture_get_image">
        <doc xml:space="preserve">Flattens the two layers of the shaped texture into one ARGB32
image by alpha blending the two images, and returns the flattened
image.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new cairo surface to be freed with
cairo_surface_destroy().</doc>
          <type name="cairo.Surface" c:type="cairo_surface_t*"/>
        </return-value>
        <parameters>
          <instance-parameter name="stex" transfer-ownership="none">
            <doc xml:space="preserve">A #MetaShapedTexture</doc>
            <type name="ShapedTexture" c:type="MetaShapedTexture*"/>
          </instance-parameter>
          <parameter name="clip" transfer-ownership="none">
            <doc xml:space="preserve">A clipping rectangle, to help prevent extra processing.
In the case that the clipping rectangle is partially or fully
outside the bounds of the texture, the rectangle will be clipped.</doc>
            <type name="cairo.RectangleInt" c:type="cairo_rectangle_int_t*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_texture"
              c:identifier="meta_shaped_texture_get_texture">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the unshaped texture</doc>
          <type name="Cogl.Handle" c:type="CoglHandle"/>
        </return-value>
        <parameters>
          <instance-parameter name="stex" transfer-ownership="none">
            <doc xml:space="preserve">The #MetaShapedTexture</doc>
            <type name="ShapedTexture" c:type="MetaShapedTexture*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_clip_region"
              c:identifier="meta_shaped_texture_set_clip_region">
        <doc xml:space="preserve">Provides a hint to the texture about what areas of the texture
are not completely obscured and thus need to be painted. This
is an optimization and is not supposed to have any effect on
the output.

Typically a parent container will set the clip region before
painting its children, and then unset it afterwards.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="stex" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaShapedTexture</doc>
            <type name="ShapedTexture" c:type="MetaShapedTexture*"/>
          </instance-parameter>
          <parameter name="clip_region" transfer-ownership="full">
            <doc xml:space="preserve">the region of the texture that
  is visible and should be painted.</doc>
            <type name="cairo.Region" c:type="cairo_region_t*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_create_mipmaps"
              c:identifier="meta_shaped_texture_set_create_mipmaps">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="stex" transfer-ownership="none">
            <type name="ShapedTexture" c:type="MetaShapedTexture*"/>
          </instance-parameter>
          <parameter name="create_mipmaps" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_overlay_path"
              c:identifier="meta_shaped_texture_set_overlay_path">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="stex" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaShapedTexture</doc>
            <type name="ShapedTexture" c:type="MetaShapedTexture*"/>
          </instance-parameter>
          <parameter name="overlay_region" transfer-ownership="none">
            <doc xml:space="preserve">A region containing the parts of the mask to overlay.
  All rectangles in this region are wiped clear to full transparency,
  and the overlay path is clipped to this region.</doc>
            <type name="cairo.Region" c:type="cairo_region_t*"/>
          </parameter>
          <parameter name="overlay_path" transfer-ownership="full">
            <doc xml:space="preserve">This path will be painted onto the mask
  texture with a fully opaque source. Due to the lack of refcounting
  in #cairo_path_t, ownership of the path is assumed.</doc>
            <type name="cairo.Path" c:type="cairo_path_t*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_pixmap" c:identifier="meta_shaped_texture_set_pixmap">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="stex" transfer-ownership="none">
            <doc xml:space="preserve">The #MetaShapedTexture</doc>
            <type name="ShapedTexture" c:type="MetaShapedTexture*"/>
          </instance-parameter>
          <parameter name="pixmap" transfer-ownership="none">
            <doc xml:space="preserve">The pixmap you want the stex to assume</doc>
            <type name="xlib.Pixmap" c:type="Pixmap"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_shape_region"
              c:identifier="meta_shaped_texture_set_shape_region">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="stex" transfer-ownership="none">
            <type name="ShapedTexture" c:type="MetaShapedTexture*"/>
          </instance-parameter>
          <parameter name="region" transfer-ownership="none">
            <type name="cairo.Region" c:type="cairo_region_t*"/>
          </parameter>
        </parameters>
      </method>
      <method name="update_area"
              c:identifier="meta_shaped_texture_update_area">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="stex" transfer-ownership="none">
            <type name="ShapedTexture" c:type="MetaShapedTexture*"/>
          </instance-parameter>
          <parameter name="x" transfer-ownership="none">
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent">
        <type name="Clutter.Actor" c:type="ClutterActor"/>
      </field>
      <field name="priv">
        <type name="ShapedTexturePrivate" c:type="MetaShapedTexturePrivate*"/>
      </field>
    </class>
    <record name="ShapedTextureClass"
            c:type="MetaShapedTextureClass"
            glib:is-gtype-struct-for="ShapedTexture">
      <field name="parent_class">
        <type name="Clutter.ActorClass" c:type="ClutterActorClass"/>
      </field>
    </record>
    <record name="ShapedTexturePrivate"
            c:type="MetaShapedTexturePrivate"
            disguised="1">
    </record>
    <enumeration name="Side"
                 glib:type-name="MetaSide"
                 glib:get-type="meta_side_get_type"
                 c:type="MetaSide">
      <member name="left"
              value="1"
              c:identifier="META_SIDE_LEFT"
              glib:nick="left">
      </member>
      <member name="right"
              value="2"
              c:identifier="META_SIDE_RIGHT"
              glib:nick="right">
      </member>
      <member name="top"
              value="4"
              c:identifier="META_SIDE_TOP"
              glib:nick="top">
      </member>
      <member name="bottom"
              value="8"
              c:identifier="META_SIDE_BOTTOM"
              glib:nick="bottom">
      </member>
    </enumeration>
    <enumeration name="StackLayer"
                 glib:type-name="MetaStackLayer"
                 glib:get-type="meta_stack_layer_get_type"
                 c:type="MetaStackLayer">
      <member name="desktop"
              value="0"
              c:identifier="META_LAYER_DESKTOP"
              glib:nick="desktop">
      </member>
      <member name="bottom"
              value="1"
              c:identifier="META_LAYER_BOTTOM"
              glib:nick="bottom">
      </member>
      <member name="normal"
              value="2"
              c:identifier="META_LAYER_NORMAL"
              glib:nick="normal">
      </member>
      <member name="top"
              value="4"
              c:identifier="META_LAYER_TOP"
              glib:nick="top">
      </member>
      <member name="dock"
              value="4"
              c:identifier="META_LAYER_DOCK"
              glib:nick="dock">
      </member>
      <member name="fullscreen"
              value="5"
              c:identifier="META_LAYER_FULLSCREEN"
              glib:nick="fullscreen">
      </member>
      <member name="focused_window"
              value="6"
              c:identifier="META_LAYER_FOCUSED_WINDOW"
              glib:nick="focused-window">
      </member>
      <member name="override_redirect"
              value="7"
              c:identifier="META_LAYER_OVERRIDE_REDIRECT"
              glib:nick="override-redirect">
      </member>
      <member name="last"
              value="8"
              c:identifier="META_LAYER_LAST"
              glib:nick="last">
      </member>
    </enumeration>
    <record name="Strut" c:type="MetaStrut">
      <field name="rect" writable="1">
        <type name="Rectangle" c:type="MetaRectangle"/>
      </field>
      <field name="side" writable="1">
        <type name="Side" c:type="MetaSide"/>
      </field>
    </record>
    <enumeration name="TabList"
                 glib:type-name="MetaTabList"
                 glib:get-type="meta_tab_list_get_type"
                 c:type="MetaTabList">
      <member name="normal"
              value="0"
              c:identifier="META_TAB_LIST_NORMAL"
              glib:nick="normal">
      </member>
      <member name="docks"
              value="1"
              c:identifier="META_TAB_LIST_DOCKS"
              glib:nick="docks">
      </member>
      <member name="group"
              value="2"
              c:identifier="META_TAB_LIST_GROUP"
              glib:nick="group">
      </member>
      <member name="normal_all"
              value="3"
              c:identifier="META_TAB_LIST_NORMAL_ALL"
              glib:nick="normal-all">
      </member>
    </enumeration>
    <enumeration name="TabShowType"
                 glib:type-name="MetaTabShowType"
                 glib:get-type="meta_tab_show_type_get_type"
                 c:type="MetaTabShowType">
      <member name="icon"
              value="0"
              c:identifier="META_TAB_SHOW_ICON"
              glib:nick="icon">
      </member>
      <member name="instantly"
              value="1"
              c:identifier="META_TAB_SHOW_INSTANTLY"
              glib:nick="instantly">
      </member>
    </enumeration>
    <record name="Theme" c:type="MetaTheme" disguised="1">
      <method name="free" c:identifier="meta_theme_free">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="theme" transfer-ownership="none">
            <type name="Theme" c:type="MetaTheme*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="validate" c:identifier="meta_theme_validate" throws="1">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="theme" transfer-ownership="none">
            <type name="Theme" c:type="MetaTheme*"/>
          </instance-parameter>
        </parameters>
      </method>
      <function name="get_current"
                c:identifier="meta_theme_get_current"
                introspectable="0">
        <return-value>
          <type name="Theme" c:type="MetaTheme*"/>
        </return-value>
      </function>
      <function name="load"
                c:identifier="meta_theme_load"
                introspectable="0"
                throws="1">
        <return-value>
          <type name="Theme" c:type="MetaTheme*"/>
        </return-value>
        <parameters>
          <parameter name="theme_name" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </function>
      <function name="new" c:identifier="meta_theme_new" introspectable="0">
        <return-value>
          <type name="Theme" c:type="MetaTheme*"/>
        </return-value>
      </function>
      <function name="set_current" c:identifier="meta_theme_set_current">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="force_reload" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </function>
    </record>
    <enumeration name="TileMode"
                 glib:type-name="MetaTileMode"
                 glib:get-type="meta_tile_mode_get_type"
                 c:type="MetaTileMode">
      <member name="none"
              value="0"
              c:identifier="META_TILE_NONE"
              glib:nick="none">
      </member>
      <member name="left"
              value="1"
              c:identifier="META_TILE_LEFT"
              glib:nick="left">
      </member>
      <member name="right"
              value="2"
              c:identifier="META_TILE_RIGHT"
              glib:nick="right">
      </member>
      <member name="ulc"
              value="3"
              c:identifier="META_TILE_ULC"
              glib:nick="ulc">
      </member>
      <member name="llc"
              value="4"
              c:identifier="META_TILE_LLC"
              glib:nick="llc">
      </member>
      <member name="urc"
              value="5"
              c:identifier="META_TILE_URC"
              glib:nick="urc">
      </member>
      <member name="lrc"
              value="6"
              c:identifier="META_TILE_LRC"
              glib:nick="lrc">
      </member>
      <member name="top"
              value="7"
              c:identifier="META_TILE_TOP"
              glib:nick="top">
      </member>
      <member name="bottom"
              value="8"
              c:identifier="META_TILE_BOTTOM"
              glib:nick="bottom">
      </member>
      <member name="maximize"
              value="9"
              c:identifier="META_TILE_MAXIMIZE"
              glib:nick="maximize">
      </member>
    </enumeration>
    <bitfield name="VirtualModifier"
              glib:type-name="MetaVirtualModifier"
              glib:get-type="meta_virtual_modifier_get_type"
              c:type="MetaVirtualModifier">
      <member name="shift_mask"
              value="32"
              c:identifier="META_VIRTUAL_SHIFT_MASK"
              glib:nick="shift-mask">
      </member>
      <member name="control_mask"
              value="64"
              c:identifier="META_VIRTUAL_CONTROL_MASK"
              glib:nick="control-mask">
      </member>
      <member name="alt_mask"
              value="128"
              c:identifier="META_VIRTUAL_ALT_MASK"
              glib:nick="alt-mask">
      </member>
      <member name="meta_mask"
              value="256"
              c:identifier="META_VIRTUAL_META_MASK"
              glib:nick="meta-mask">
      </member>
      <member name="super_mask"
              value="512"
              c:identifier="META_VIRTUAL_SUPER_MASK"
              glib:nick="super-mask">
      </member>
      <member name="hyper_mask"
              value="1024"
              c:identifier="META_VIRTUAL_HYPER_MASK"
              glib:nick="hyper-mask">
      </member>
      <member name="mod2_mask"
              value="2048"
              c:identifier="META_VIRTUAL_MOD2_MASK"
              glib:nick="mod2-mask">
      </member>
      <member name="mod3_mask"
              value="4096"
              c:identifier="META_VIRTUAL_MOD3_MASK"
              glib:nick="mod3-mask">
      </member>
      <member name="mod4_mask"
              value="8192"
              c:identifier="META_VIRTUAL_MOD4_MASK"
              glib:nick="mod4-mask">
      </member>
      <member name="mod5_mask"
              value="16384"
              c:identifier="META_VIRTUAL_MOD5_MASK"
              glib:nick="mod5-mask">
      </member>
    </bitfield>
    <class name="Window"
           c:symbol-prefix="window"
           c:type="MetaWindow"
           parent="GObject.Object"
           glib:type-name="MetaWindow"
           glib:get-type="meta_window_get_type"
           glib:type-struct="WindowClass">
      <method name="activate" c:identifier="meta_window_activate">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
          <parameter name="current_time" transfer-ownership="none">
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="activate_with_workspace"
              c:identifier="meta_window_activate_with_workspace">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
          <parameter name="current_time" transfer-ownership="none">
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="workspace" transfer-ownership="none">
            <type name="Workspace" c:type="MetaWorkspace*"/>
          </parameter>
        </parameters>
      </method>
      <method name="appears_focused"
              c:identifier="meta_window_appears_focused">
        <doc xml:space="preserve">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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the window should be drawn with a focused frame</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="can_tile" c:identifier="meta_window_can_tile">
        <doc xml:space="preserve">Tests if @window can be tiled or snapped in the supplied
tiling zone</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether @window can be tiled</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
          <parameter name="mode" transfer-ownership="none">
            <doc xml:space="preserve">the #MetaTileMode to check for</doc>
            <type name="TileMode" c:type="MetaTileMode"/>
          </parameter>
        </parameters>
      </method>
      <method name="change_workspace"
              c:identifier="meta_window_change_workspace">
        <doc xml:space="preserve">Moves the window to the specified workspace.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
          <parameter name="workspace" transfer-ownership="none">
            <doc xml:space="preserve">the #MetaWorkspace where to put the window</doc>
            <type name="Workspace" c:type="MetaWorkspace*"/>
          </parameter>
        </parameters>
      </method>
      <method name="change_workspace_by_index"
              c:identifier="meta_window_change_workspace_by_index">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
          <parameter name="space_index" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="append" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="timestamp" transfer-ownership="none">
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="compute_group" c:identifier="meta_window_compute_group">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="configure_notify"
              c:identifier="meta_window_configure_notify"
              introspectable="0">
        <doc xml:space="preserve">This is used to notify us of an unrequested configuration
(only applicable to override redirect windows)</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
          <parameter name="event" transfer-ownership="none">
            <doc xml:space="preserve">a #XConfigureEvent</doc>
            <type c:type="XConfigureEvent*"/>
          </parameter>
        </parameters>
      </method>
      <method name="delete" c:identifier="meta_window_delete">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
          <parameter name="timestamp" transfer-ownership="none">
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_root_ancestor"
              c:identifier="meta_window_find_root_ancestor">
        <doc xml:space="preserve">Follow the chain of parents of @window, skipping transient windows,
and return the "root" window which has no non-transient parent.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The root ancestor window</doc>
          <type name="Window" c:type="MetaWindow*"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="foreach_ancestor"
              c:identifier="meta_window_foreach_ancestor">
        <doc xml:space="preserve">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.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
          <parameter name="func"
                     transfer-ownership="none"
                     scope="call"
                     closure="1">
            <doc xml:space="preserve">Called for each window which is a transient parent of @window</doc>
            <type name="WindowForeachFunc" c:type="MetaWindowForeachFunc"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">User data</doc>
            <type name="gpointer" c:type="void*"/>
          </parameter>
        </parameters>
      </method>
      <method name="foreach_transient"
              c:identifier="meta_window_foreach_transient">
        <doc xml:space="preserve">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.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
          <parameter name="func"
                     transfer-ownership="none"
                     scope="call"
                     closure="1">
            <doc xml:space="preserve">Called for each window which is a transient of @window (transitively)</doc>
            <type name="WindowForeachFunc" c:type="MetaWindowForeachFunc"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">User data</doc>
            <type name="gpointer" c:type="void*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_client_machine"
              c:identifier="meta_window_get_client_machine">
        <doc xml:space="preserve">Returns name of the client machine from which this windows was created,
if known (obtained from the WM_CLIENT_MACHINE property).</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the machine name, or NULL; the string is
owned by the window manager and should not be freed or modified by the
caller.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_compositor_private"
              c:identifier="meta_window_get_compositor_private">
        <doc xml:space="preserve">Gets the compositor's wrapper object for @window.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the wrapper object.</doc>
          <type name="GObject.Object" c:type="GObject*"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_description"
              c:identifier="meta_window_get_description">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_display" c:identifier="meta_window_get_display">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The display for @window</doc>
          <type name="Display" c:type="MetaDisplay*"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">A #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_frame"
              c:identifier="meta_window_get_frame"
              introspectable="0">
        <return-value>
          <type name="Frame" c:type="MetaFrame*"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_frame_bounds"
              c:identifier="meta_window_get_frame_bounds">
        <doc xml:space="preserve">Gets a region representing the outer bounds of the window's frame.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #cairo_region_t
 holding the outer bounds of the window, or %NULL if the window
 doesn't have a frame.</doc>
          <type name="cairo.Region" c:type="cairo_region_t*"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_frame_type" c:identifier="meta_window_get_frame_type">
        <doc xml:space="preserve">Gets the type of window decorations that should be used for this window.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the frame type</doc>
          <type name="FrameType" c:type="MetaFrameType"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_group"
              c:identifier="meta_window_get_group"
              introspectable="0">
        <return-value>
          <type name="Group" c:type="MetaGroup*"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_gtk_app_menu_object_path"
              c:identifier="meta_window_get_gtk_app_menu_object_path">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the object path</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_gtk_application_id"
              c:identifier="meta_window_get_gtk_application_id">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the application ID</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_gtk_application_object_path"
              c:identifier="meta_window_get_gtk_application_object_path">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the object path</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_gtk_menubar_object_path"
              c:identifier="meta_window_get_gtk_menubar_object_path">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the object path</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_gtk_unique_bus_name"
              c:identifier="meta_window_get_gtk_unique_bus_name">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the unique name</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_gtk_window_object_path"
              c:identifier="meta_window_get_gtk_window_object_path">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the object path</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_icon_geometry"
              c:identifier="meta_window_get_icon_geometry">
        <doc xml:space="preserve">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. This currently
retrieves the icon geometry from the X server as a round trip on every
call.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the icon geometry was succesfully retrieved.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
          <parameter name="rect" transfer-ownership="none">
            <doc xml:space="preserve">rectangle into which to store the returned geometry.</doc>
            <type name="Rectangle" c:type="MetaRectangle*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_input_rect" c:identifier="meta_window_get_input_rect">
        <doc xml:space="preserve">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.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="const MetaWindow*"/>
          </instance-parameter>
          <parameter name="rect"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve">pointer to an allocated #MetaRectangle</doc>
            <type name="Rectangle" c:type="MetaRectangle*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_layer" c:identifier="meta_window_get_layer">
        <return-value transfer-ownership="none">
          <type name="StackLayer" c:type="MetaStackLayer"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_maximized" c:identifier="meta_window_get_maximized">
        <doc xml:space="preserve">Gets the current maximization state of the window, as combination
of the %META_MAXIMIZE_HORIZONTAL and %META_MAXIMIZE_VERTICAL flags;</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">current maximization state</doc>
          <type name="MaximizeFlags" c:type="MetaMaximizeFlags"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_monitor" c:identifier="meta_window_get_monitor">
        <doc xml:space="preserve">Gets index of the monitor that this window is on.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The index of the monitor in the screens monitor list</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_muffin_hints"
              c:identifier="meta_window_get_muffin_hints">
        <doc xml:space="preserve">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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the _MUFFIN_HINTS string, or %NULL if no hints
are set.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_outer_rect" c:identifier="meta_window_get_outer_rect">
        <doc xml:space="preserve">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.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="const MetaWindow*"/>
          </instance-parameter>
          <parameter name="rect"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve">pointer to an allocated #MetaRectangle</doc>
            <type name="Rectangle" c:type="MetaRectangle*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_pid" c:identifier="meta_window_get_pid">
        <doc xml:space="preserve">Returns pid of the process that created this window, if known (obtained from
the _NET_WM_PID property).</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the pid, or -1 if not known.</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_rect" c:identifier="meta_window_get_rect">
        <doc xml:space="preserve">Gets the rectangle that bounds @window, ignoring any window decorations.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the #MetaRectangle for the window</doc>
          <type name="Rectangle" c:type="MetaRectangle*"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_role" c:identifier="meta_window_get_role">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_screen" c:identifier="meta_window_get_screen">
        <doc xml:space="preserve">Gets the #MetaScreen that the window is on.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the #MetaScreen for the window</doc>
          <type name="Screen" c:type="MetaScreen*"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_stable_sequence"
              c:identifier="meta_window_get_stable_sequence">
        <doc xml:space="preserve">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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Internal sequence number for this window</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">A #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_startup_id" c:identifier="meta_window_get_startup_id">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_tile_match" c:identifier="meta_window_get_tile_match">
        <doc xml:space="preserve">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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the matching tiled window or
%NULL if it doesn't exist.</doc>
          <type name="Window" c:type="MetaWindow*"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_title" c:identifier="meta_window_get_title">
        <doc xml:space="preserve">Returns the current title of the window.</doc>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_transient_for"
              c:identifier="meta_window_get_transient_for">
        <doc xml:space="preserve">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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">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.</doc>
          <type name="Window" c:type="MetaWindow*"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_transient_for_as_xid"
              c:identifier="meta_window_get_transient_for_as_xid">
        <doc xml:space="preserve">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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the window this window is transient for, or
None if the WM_TRANSIENT_FOR hint is unset.</doc>
          <type name="xlib.Window" c:type="Window"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_user_time" c:identifier="meta_window_get_user_time">
        <doc xml:space="preserve">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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The last time the user interacted with this window.</doc>
          <type name="guint32" c:type="guint32"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_window_type"
              c:identifier="meta_window_get_window_type">
        <return-value transfer-ownership="none">
          <type name="WindowType" c:type="MetaWindowType"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_window_type_atom"
              c:identifier="meta_window_get_window_type_atom"
              introspectable="0">
        <doc xml:space="preserve">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.)</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the raw X atom for the window type, or None</doc>
          <type name="xlib.Atom" c:type="Atom"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_wm_class" c:identifier="meta_window_get_wm_class">
        <doc xml:space="preserve">Return the current value of the name part of WM_CLASS X property.</doc>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_wm_class_instance"
              c:identifier="meta_window_get_wm_class_instance">
        <doc xml:space="preserve">Return the current value of the instance part of WM_CLASS X property.</doc>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_workspace" c:identifier="meta_window_get_workspace">
        <doc xml:space="preserve">Gets the #MetaWorkspace that the window is currently displayed on.
If the window is on all workspaces, returns the currently active
workspace.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the #MetaWorkspace for the window</doc>
          <type name="Workspace" c:type="MetaWorkspace*"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_xwindow" c:identifier="meta_window_get_xwindow">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The Window id of the @window
note - we return unsigned long because Window
Can't be introspected (but Window *is* a ulong)</doc>
          <type name="gulong" c:type="unsigned long"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">A #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="group_leader_changed"
              c:identifier="meta_window_group_leader_changed">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="has_focus" c:identifier="meta_window_has_focus">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_ancestor_of_transient"
              c:identifier="meta_window_is_ancestor_of_transient">
        <doc xml:space="preserve">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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if window is an ancestor of transient.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
          <parameter name="transient" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_attached_dialog"
              c:identifier="meta_window_is_attached_dialog">
        <doc xml:space="preserve">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.)</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether @window should be attached to its parent</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_demanding_attention"
              c:identifier="meta_window_is_demanding_attention">
        <doc xml:space="preserve">Returns true if window has the demands-attention flag set.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if wm_state_demands_attention is set.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">A #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_fullscreen" c:identifier="meta_window_is_fullscreen">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the window is currently fullscreen</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_hidden" c:identifier="meta_window_is_hidden">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_mapped" c:identifier="meta_window_is_mapped">
        <doc xml:space="preserve">Determines whether the X window for the MetaWindow is mapped.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_modal" c:identifier="meta_window_is_modal">
        <doc xml:space="preserve">Queries whether the window is in a modal state as described by the
_NET_WM_STATE protocol.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">TRUE if the window is in modal state.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_monitor_sized"
              c:identifier="meta_window_is_monitor_sized">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the window is occupies an entire monitor or
              the whole screen.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_on_all_workspaces"
              c:identifier="meta_window_is_on_all_workspaces">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_on_primary_monitor"
              c:identifier="meta_window_is_on_primary_monitor">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the window is on the primary monitor</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_override_redirect"
              c:identifier="meta_window_is_override_redirect">
        <doc xml:space="preserve">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".</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">A #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_remote" c:identifier="meta_window_is_remote">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if this window originates from a host
different from the one running muffin.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_shaded" c:identifier="meta_window_is_shaded">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_skip_taskbar"
              c:identifier="meta_window_is_skip_taskbar">
        <doc xml:space="preserve">Gets whether this window should be ignored by task lists.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the skip bar hint is set.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">A #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_urgent" c:identifier="meta_window_is_urgent">
        <doc xml:space="preserve">Returns true if window has the urgent hint set.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if wm_hints_urgent is set.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">A #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="lower" c:identifier="meta_window_lower">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="maximize" c:identifier="meta_window_maximize">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
          <parameter name="directions" transfer-ownership="none">
            <type name="MaximizeFlags" c:type="MetaMaximizeFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="minimize" c:identifier="meta_window_minimize">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="move" c:identifier="meta_window_move">
        <doc xml:space="preserve">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.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
          <parameter name="user_op" transfer-ownership="none">
            <doc xml:space="preserve">bool to indicate whether or not this is a user operation</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="root_x_nw" transfer-ownership="none">
            <doc xml:space="preserve">desired x pos</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="root_y_nw" transfer-ownership="none">
            <doc xml:space="preserve">desired y pos</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="move_frame" c:identifier="meta_window_move_frame">
        <doc xml:space="preserve">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().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
          <parameter name="user_op" transfer-ownership="none">
            <doc xml:space="preserve">bool to indicate whether or not this is a user operation</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="root_x_nw" transfer-ownership="none">
            <doc xml:space="preserve">desired x pos</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="root_y_nw" transfer-ownership="none">
            <doc xml:space="preserve">desired y pos</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="move_resize_frame"
              c:identifier="meta_window_move_resize_frame">
        <doc xml:space="preserve">Resizes the window so that its outer bounds (including frame)
fit within the given rect</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
          <parameter name="user_op" transfer-ownership="none">
            <doc xml:space="preserve">bool to indicate whether or not this is a user operation</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="root_x_nw" transfer-ownership="none">
            <doc xml:space="preserve">new x</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="root_y_nw" transfer-ownership="none">
            <doc xml:space="preserve">new y</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="w" transfer-ownership="none">
            <doc xml:space="preserve">desired width</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="h" transfer-ownership="none">
            <doc xml:space="preserve">desired height</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="move_to_monitor"
              c:identifier="meta_window_move_to_monitor">
        <doc xml:space="preserve">Moves the window to the monitor with index @monitor, keeping
the relative position of the window's top left corner.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
          <parameter name="monitor" transfer-ownership="none">
            <doc xml:space="preserve">desired monitor index</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="raise" c:identifier="meta_window_raise">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="requested_bypass_compositor"
              c:identifier="meta_window_requested_bypass_compositor">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the window requested to bypass the compositor</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="requested_dont_bypass_compositor"
              c:identifier="meta_window_requested_dont_bypass_compositor">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the window requested to opt out of unredirecting</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="reset_opacity" c:identifier="meta_window_reset_opacity">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="resize" c:identifier="meta_window_resize">
        <doc xml:space="preserve">Resize the window to the desired size.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
          <parameter name="user_op" transfer-ownership="none">
            <doc xml:space="preserve">bool to indicate whether or not this is a user operation</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="w" transfer-ownership="none">
            <doc xml:space="preserve">desired width</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="h" transfer-ownership="none">
            <doc xml:space="preserve">desired height</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_compositor_private"
              c:identifier="meta_window_set_compositor_private">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
          <parameter name="priv" transfer-ownership="none">
            <type name="GObject.Object" c:type="GObject*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_demands_attention"
              c:identifier="meta_window_set_demands_attention">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="showing_on_its_workspace"
              c:identifier="meta_window_showing_on_its_workspace">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if window would be visible, if its workspace was current</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">A #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="shutdown_group" c:identifier="meta_window_shutdown_group">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="stick" c:identifier="meta_window_stick">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="tile" c:identifier="meta_window_tile">
        <doc xml:space="preserve">Tiles or snaps the window in the requested configuration</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether or not @window was successfully tiled</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
          <parameter name="mode" transfer-ownership="none">
            <doc xml:space="preserve">the #MetaTileMode to use</doc>
            <type name="TileMode" c:type="MetaTileMode"/>
          </parameter>
          <parameter name="snap" transfer-ownership="none">
            <doc xml:space="preserve">whether to snap the window (as opposed to simple tile)</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="toplevel_is_mapped"
              c:identifier="meta_window_toplevel_is_mapped">
        <doc xml:space="preserve">Determines whether the toplevel X window for the MetaWindow is
mapped. (The frame window is mapped even without the client window
when a window is shaded.)</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the toplevel is mapped.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unmaximize" c:identifier="meta_window_unmaximize">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
          <parameter name="directions" transfer-ownership="none">
            <type name="MaximizeFlags" c:type="MetaMaximizeFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="unminimize" c:identifier="meta_window_unminimize">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unset_demands_attention"
              c:identifier="meta_window_unset_demands_attention">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unstick" c:identifier="meta_window_unstick">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="window" transfer-ownership="none">
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="above" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="appears-focused" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="decorated" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="demands-attention" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="fullscreen" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="gtk-app-menu-object-path" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="gtk-application-id" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="gtk-application-object-path" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="gtk-menubar-object-path" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="gtk-unique-bus-name" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="gtk-window-object-path" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="icon" transfer-ownership="none">
        <type name="GdkPixbuf.Pixbuf"/>
      </property>
      <property name="maximized-horizontally" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="maximized-vertically" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="mini-icon" transfer-ownership="none">
        <type name="GdkPixbuf.Pixbuf"/>
      </property>
      <property name="minimized" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="muffin-hints" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="resizeable" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="tile-type" transfer-ownership="none">
        <type name="gint" c:type="gint"/>
      </property>
      <property name="title" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="urgent" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="user-time" transfer-ownership="none">
        <type name="guint" c:type="guint"/>
      </property>
      <property name="window-type" transfer-ownership="none">
        <type name="WindowType"/>
      </property>
      <property name="wm-class" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <glib:signal name="focus" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="raised" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="unmanaged" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="workspace-changed" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <class name="WindowActor"
           c:symbol-prefix="window_actor"
           c:type="MetaWindowActor"
           parent="Clutter.Group"
           glib:type-name="MetaWindowActor"
           glib:get-type="meta_window_actor_get_type"
           glib:type-struct="WindowActorClass">
      <implements name="Atk.ImplementorIface"/>
      <implements name="Clutter.Animatable"/>
      <implements name="Clutter.Container"/>
      <implements name="Clutter.Scriptable"/>
      <method name="get_description"
              c:identifier="meta_window_actor_get_description">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="WindowActor" c:type="MetaWindowActor*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_meta_window"
              c:identifier="meta_window_actor_get_meta_window">
        <doc xml:space="preserve">Gets the #MetaWindow object that the the #MetaWindowActor is displaying</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the displayed #MetaWindow</doc>
          <type name="Window" c:type="MetaWindow*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="WindowActor" c:type="MetaWindowActor*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_texture" c:identifier="meta_window_actor_get_texture">
        <doc xml:space="preserve">Gets the ClutterActor that is used to display the contents of the window</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the #ClutterActor for the contents</doc>
          <type name="Clutter.Actor" c:type="ClutterActor*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="WindowActor" c:type="MetaWindowActor*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_workspace"
              c:identifier="meta_window_actor_get_workspace">
        <doc xml:space="preserve">Returns the index of workspace on which this window is located; if the
window is sticky, or is not currently located on any workspace, returns -1.
This function is deprecated  and should not be used in newly written code;
meta_window_get_workspace() instead.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">index of workspace on which this window is
located.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">#MetaWindowActor</doc>
            <type name="WindowActor" c:type="MetaWindowActor*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_x_window"
              c:identifier="meta_window_actor_get_x_window"
              introspectable="0">
        <return-value transfer-ownership="none">
          <type name="xlib.Window" c:type="Window"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="WindowActor" c:type="MetaWindowActor*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_destroyed"
              c:identifier="meta_window_actor_is_destroyed">
        <doc xml:space="preserve">Gets whether the X window that the actor was displaying has been destroyed</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE when the window is destroyed, otherwise %FALSE</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="WindowActor" c:type="MetaWindowActor*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_override_redirect"
              c:identifier="meta_window_actor_is_override_redirect">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="WindowActor" c:type="MetaWindowActor*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="showing_on_its_workspace"
              c:identifier="meta_window_actor_showing_on_its_workspace">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="WindowActor" c:type="MetaWindowActor*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="meta-screen"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="gpointer" c:type="gpointer"/>
      </property>
      <property name="meta-window"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="Window"/>
      </property>
      <property name="no-shadow" writable="1" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="shadow-class" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="x-window"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="gulong" c:type="gulong"/>
      </property>
      <field name="parent">
        <type name="Clutter.Group" c:type="ClutterGroup"/>
      </field>
      <field name="priv">
        <type name="WindowActorPrivate" c:type="MetaWindowActorPrivate*"/>
      </field>
      <glib:signal name="position-changed" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="size-changed" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="WindowActorClass"
            c:type="MetaWindowActorClass"
            glib:is-gtype-struct-for="WindowActor">
      <field name="parent_class">
        <type name="Clutter.GroupClass" c:type="ClutterGroupClass"/>
      </field>
    </record>
    <record name="WindowActorPrivate"
            c:type="MetaWindowActorPrivate"
            disguised="1">
    </record>
    <record name="WindowClass"
            c:type="MetaWindowClass"
            disguised="1"
            glib:is-gtype-struct-for="Window">
    </record>
    <callback name="WindowForeachFunc" c:type="MetaWindowForeachFunc">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="window" transfer-ownership="none">
          <type name="Window" c:type="MetaWindow*"/>
        </parameter>
        <parameter name="data" transfer-ownership="none">
          <type name="gpointer" c:type="void*"/>
        </parameter>
      </parameters>
    </callback>
    <record name="WindowMenu" c:type="MetaWindowMenu" disguised="1">
    </record>
    <callback name="WindowMenuFunc" c:type="MetaWindowMenuFunc">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="menu" transfer-ownership="none">
          <type name="WindowMenu" c:type="MetaWindowMenu*"/>
        </parameter>
        <parameter name="xdisplay" transfer-ownership="none">
          <type name="xlib.Display" c:type="Display*"/>
        </parameter>
        <parameter name="client_xwindow" transfer-ownership="none">
          <type name="xlib.Window" c:type="Window"/>
        </parameter>
        <parameter name="timestamp" transfer-ownership="none">
          <type name="guint32" c:type="guint32"/>
        </parameter>
        <parameter name="op" transfer-ownership="none">
          <type name="MenuOp" c:type="MetaMenuOp"/>
        </parameter>
        <parameter name="workspace" transfer-ownership="none">
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="data" transfer-ownership="none">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <enumeration name="WindowTileType"
                 glib:type-name="MetaWindowTileType"
                 glib:get-type="meta_window_tile_type_get_type"
                 c:type="MetaWindowTileType">
      <member name="none"
              value="0"
              c:identifier="META_WINDOW_TILE_TYPE_NONE"
              glib:nick="none">
      </member>
      <member name="tiled"
              value="1"
              c:identifier="META_WINDOW_TILE_TYPE_TILED"
              glib:nick="tiled">
      </member>
      <member name="snapped"
              value="2"
              c:identifier="META_WINDOW_TILE_TYPE_SNAPPED"
              glib:nick="snapped">
      </member>
    </enumeration>
    <enumeration name="WindowType"
                 glib:type-name="MetaWindowType"
                 glib:get-type="meta_window_type_get_type"
                 c:type="MetaWindowType">
      <member name="normal"
              value="0"
              c:identifier="META_WINDOW_NORMAL"
              glib:nick="normal">
      </member>
      <member name="desktop"
              value="1"
              c:identifier="META_WINDOW_DESKTOP"
              glib:nick="desktop">
      </member>
      <member name="dock"
              value="2"
              c:identifier="META_WINDOW_DOCK"
              glib:nick="dock">
      </member>
      <member name="dialog"
              value="3"
              c:identifier="META_WINDOW_DIALOG"
              glib:nick="dialog">
      </member>
      <member name="modal_dialog"
              value="4"
              c:identifier="META_WINDOW_MODAL_DIALOG"
              glib:nick="modal-dialog">
      </member>
      <member name="toolbar"
              value="5"
              c:identifier="META_WINDOW_TOOLBAR"
              glib:nick="toolbar">
      </member>
      <member name="menu"
              value="6"
              c:identifier="META_WINDOW_MENU"
              glib:nick="menu">
      </member>
      <member name="utility"
              value="7"
              c:identifier="META_WINDOW_UTILITY"
              glib:nick="utility">
      </member>
      <member name="splashscreen"
              value="8"
              c:identifier="META_WINDOW_SPLASHSCREEN"
              glib:nick="splashscreen">
      </member>
      <member name="dropdown_menu"
              value="9"
              c:identifier="META_WINDOW_DROPDOWN_MENU"
              glib:nick="dropdown-menu">
      </member>
      <member name="popup_menu"
              value="10"
              c:identifier="META_WINDOW_POPUP_MENU"
              glib:nick="popup-menu">
      </member>
      <member name="tooltip"
              value="11"
              c:identifier="META_WINDOW_TOOLTIP"
              glib:nick="tooltip">
      </member>
      <member name="notification"
              value="12"
              c:identifier="META_WINDOW_NOTIFICATION"
              glib:nick="notification">
      </member>
      <member name="combo"
              value="13"
              c:identifier="META_WINDOW_COMBO"
              glib:nick="combo">
      </member>
      <member name="dnd"
              value="14"
              c:identifier="META_WINDOW_DND"
              glib:nick="dnd">
      </member>
      <member name="override_other"
              value="15"
              c:identifier="META_WINDOW_OVERRIDE_OTHER"
              glib:nick="override-other">
      </member>
    </enumeration>
    <class name="Workspace"
           c:symbol-prefix="workspace"
           c:type="MetaWorkspace"
           parent="GObject.Object"
           glib:type-name="MetaWorkspace"
           glib:get-type="meta_workspace_get_type"
           glib:type-struct="WorkspaceClass">
      <method name="activate" c:identifier="meta_workspace_activate">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="workspace" transfer-ownership="none">
            <type name="Workspace" c:type="MetaWorkspace*"/>
          </instance-parameter>
          <parameter name="timestamp" transfer-ownership="none">
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="activate_with_focus"
              c:identifier="meta_workspace_activate_with_focus">
        <doc xml:space="preserve">Switches to @workspace and possibly activates the window @focus_this.

The window @focus_this is activated by calling meta_window_activate()
which will unminimize it and transient parents, raise it and give it
the focus.

If a window is currently being moved by the user, it will be
moved to @workspace.

The advantage of calling this function instead of meta_workspace_activate()
followed by meta_window_activate() is that it happens as a unit, so
no other window gets focused first before @focus_this.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="workspace" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWorkspace</doc>
            <type name="Workspace" c:type="MetaWorkspace*"/>
          </instance-parameter>
          <parameter name="focus_this" transfer-ownership="none">
            <doc xml:space="preserve">the #MetaWindow to be focused, or %NULL</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </parameter>
          <parameter name="timestamp" transfer-ownership="none">
            <doc xml:space="preserve">timestamp for @focus_this</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_neighbor" c:identifier="meta_workspace_get_neighbor">
        <doc xml:space="preserve">Gets the neighbor of the #MetaWorkspace in the given direction</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the neighbor #MetaWorkspace</doc>
          <type name="Workspace" c:type="MetaWorkspace*"/>
        </return-value>
        <parameters>
          <instance-parameter name="workspace" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWorkspace</doc>
            <type name="Workspace" c:type="MetaWorkspace*"/>
          </instance-parameter>
          <parameter name="direction" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaMotionDirection, direction in which to look for the neighbor</doc>
            <type name="MotionDirection" c:type="MetaMotionDirection"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_work_area_all_monitors"
              c:identifier="meta_workspace_get_work_area_all_monitors">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="workspace" transfer-ownership="none">
            <type name="Workspace" c:type="MetaWorkspace*"/>
          </instance-parameter>
          <parameter name="area" transfer-ownership="none">
            <type name="Rectangle" c:type="MetaRectangle*"/>
          </parameter>
        </parameters>
      </method>
      <method name="index" c:identifier="meta_workspace_index">
        <return-value transfer-ownership="none">
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="workspace" transfer-ownership="none">
            <type name="Workspace" c:type="MetaWorkspace*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="list_windows" c:identifier="meta_workspace_list_windows">
        <doc xml:space="preserve">Gets windows contained on the workspace, including workspace-&gt;windows
and also sticky windows. Override-redirect windows are not included.</doc>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve">the list of windows.</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="Window"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="workspace" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWorkspace</doc>
            <type name="Workspace" c:type="MetaWorkspace*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_builtin_struts"
              c:identifier="meta_workspace_set_builtin_struts">
        <doc xml:space="preserve">Sets a list of struts that will be used in addition to the struts
of the windows in the workspace when computing the work area of
the workspace.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="workspace" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWorkspace</doc>
            <type name="Workspace" c:type="MetaWorkspace*"/>
          </instance-parameter>
          <parameter name="struts" transfer-ownership="none">
            <doc xml:space="preserve">list of #MetaStrut</doc>
            <type name="GLib.SList" c:type="GSList*">
              <type name="Strut"/>
            </type>
          </parameter>
        </parameters>
      </method>
      <method name="update_window_hints"
              c:identifier="meta_workspace_update_window_hints">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="workspace" transfer-ownership="none">
            <type name="Workspace" c:type="MetaWorkspace*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="n-windows" transfer-ownership="none">
        <type name="guint" c:type="guint"/>
      </property>
      <glib:signal name="window-added" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="Window"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="window-removed" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="Window"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="WorkspaceClass"
            c:type="MetaWorkspaceClass"
            disguised="1"
            glib:is-gtype-struct-for="Workspace">
    </record>
    <function name="add_verbose_topic" c:identifier="meta_add_verbose_topic">
      <doc xml:space="preserve">Ensure log messages for the given topic @topic
will be printed.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="topic" transfer-ownership="none">
          <doc xml:space="preserve">Topic for which logging will be started</doc>
          <type name="DebugTopic" c:type="MetaDebugTopic"/>
        </parameter>
      </parameters>
    </function>
    <function name="bug" c:identifier="meta_bug" introspectable="0">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="format" transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="..." transfer-ownership="none">
          <varargs/>
        </parameter>
      </parameters>
    </function>
    <function name="compositor_new"
              c:identifier="meta_compositor_new"
              moved-to="Compositor.new"
              introspectable="0">
      <return-value>
        <type name="Compositor" c:type="MetaCompositor*"/>
      </return-value>
      <parameters>
        <parameter name="display" transfer-ownership="none">
          <type name="Display" c:type="MetaDisplay*"/>
        </parameter>
      </parameters>
    </function>
    <function name="debug_spew_real"
              c:identifier="meta_debug_spew_real"
              introspectable="0">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="format" transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="..." transfer-ownership="none">
          <varargs/>
        </parameter>
      </parameters>
    </function>
    <function name="disable_unredirect_for_screen"
              c:identifier="meta_disable_unredirect_for_screen">
      <doc xml:space="preserve">Disables unredirection, can be usefull in situations where having
unredirected windows is undesireable like when recording a video.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="screen" transfer-ownership="none">
          <doc xml:space="preserve">a #MetaScreen</doc>
          <type name="Screen" c:type="MetaScreen*"/>
        </parameter>
      </parameters>
    </function>
    <function name="empty_stage_input_region"
              c:identifier="meta_empty_stage_input_region">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="screen" transfer-ownership="none">
          <type name="Screen" c:type="MetaScreen*"/>
        </parameter>
      </parameters>
    </function>
    <function name="enable_unredirect_for_screen"
              c:identifier="meta_enable_unredirect_for_screen">
      <doc xml:space="preserve">Enables unredirection which reduces the overhead for apps like games.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="screen" transfer-ownership="none">
          <doc xml:space="preserve">a #MetaScreen</doc>
          <type name="Screen" c:type="MetaScreen*"/>
        </parameter>
      </parameters>
    </function>
    <function name="error_trap_pop" c:identifier="meta_error_trap_pop">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="display" transfer-ownership="none">
          <type name="Display" c:type="MetaDisplay*"/>
        </parameter>
      </parameters>
    </function>
    <function name="error_trap_pop_with_return"
              c:identifier="meta_error_trap_pop_with_return">
      <return-value transfer-ownership="none">
        <type name="gint" c:type="int"/>
      </return-value>
      <parameters>
        <parameter name="display" transfer-ownership="none">
          <type name="Display" c:type="MetaDisplay*"/>
        </parameter>
      </parameters>
    </function>
    <function name="error_trap_push" c:identifier="meta_error_trap_push">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="display" transfer-ownership="none">
          <type name="Display" c:type="MetaDisplay*"/>
        </parameter>
      </parameters>
    </function>
    <function name="error_trap_push_with_return"
              c:identifier="meta_error_trap_push_with_return">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="display" transfer-ownership="none">
          <type name="Display" c:type="MetaDisplay*"/>
        </parameter>
      </parameters>
    </function>
    <function name="exit" c:identifier="meta_exit">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="code" transfer-ownership="none">
          <type name="ExitCode" c:type="MetaExitCode"/>
        </parameter>
      </parameters>
    </function>
    <function name="fatal" c:identifier="meta_fatal" introspectable="0">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="format" transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="..." transfer-ownership="none">
          <varargs/>
        </parameter>
      </parameters>
    </function>
    <function name="frame_type_to_string"
              c:identifier="meta_frame_type_to_string"
              moved-to="FrameType.to_string">
      <doc xml:space="preserve">Converts a frame type enum value to the name string that would
appear in the theme definition file.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">the string value</doc>
        <type name="utf8" c:type="const char*"/>
      </return-value>
      <parameters>
        <parameter name="type" transfer-ownership="none">
          <type name="FrameType" c:type="MetaFrameType"/>
        </parameter>
      </parameters>
    </function>
    <function name="free_gslist_and_elements"
              c:identifier="meta_free_gslist_and_elements"
              introspectable="0">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="list_to_deep_free" transfer-ownership="none">
          <type name="GLib.SList" c:type="GSList*">
            <type name="gpointer" c:type="gpointer"/>
          </type>
        </parameter>
      </parameters>
    </function>
    <function name="g_utf8_strndup" c:identifier="meta_g_utf8_strndup">
      <return-value transfer-ownership="full">
        <type name="utf8" c:type="char*"/>
      </return-value>
      <parameters>
        <parameter name="src" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="n" transfer-ownership="none">
          <type name="gsize" c:type="gsize"/>
        </parameter>
      </parameters>
    </function>
    <function name="get_background_actor_for_screen"
              c:identifier="meta_get_background_actor_for_screen">
      <doc xml:space="preserve">Gets the actor that draws the root window background under the windows.
The root window background automatically tracks the image or color set
by the environment.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">The background actor corresponding to @screen</doc>
        <type name="Clutter.Actor" c:type="ClutterActor*"/>
      </return-value>
      <parameters>
        <parameter name="screen" transfer-ownership="none">
          <doc xml:space="preserve">a #MetaScreen</doc>
          <type name="Screen" c:type="MetaScreen*"/>
        </parameter>
      </parameters>
    </function>
    <function name="get_bottom_window_group_for_screen"
              c:identifier="meta_get_bottom_window_group_for_screen">
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">The bottom window group corresponding to @screen</doc>
        <type name="Clutter.Actor" c:type="ClutterActor*"/>
      </return-value>
      <parameters>
        <parameter name="screen" transfer-ownership="none">
          <doc xml:space="preserve">a #MetaScreen</doc>
          <type name="Screen" c:type="MetaScreen*"/>
        </parameter>
      </parameters>
    </function>
    <function name="get_option_context"
              c:identifier="meta_get_option_context"
              introspectable="0">
      <doc xml:space="preserve">Returns a #GOptionContext initialized with muffin-related options.
Parse the command-line args with this before calling meta_init().</doc>
      <return-value>
        <doc xml:space="preserve">the #GOptionContext</doc>
        <type name="GLib.OptionContext" c:type="GOptionContext*"/>
      </return-value>
    </function>
    <function name="get_overlay_group_for_screen"
              c:identifier="meta_get_overlay_group_for_screen">
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">The overlay group corresponding to @screen</doc>
        <type name="Clutter.Actor" c:type="ClutterActor*"/>
      </return-value>
      <parameters>
        <parameter name="screen" transfer-ownership="none">
          <doc xml:space="preserve">a #MetaScreen</doc>
          <type name="Screen" c:type="MetaScreen*"/>
        </parameter>
      </parameters>
    </function>
    <function name="get_overlay_window"
              c:identifier="meta_get_overlay_window"
              introspectable="0">
      <return-value transfer-ownership="none">
        <type name="xlib.Window" c:type="Window"/>
      </return-value>
      <parameters>
        <parameter name="screen" transfer-ownership="none">
          <type name="Screen" c:type="MetaScreen*"/>
        </parameter>
      </parameters>
    </function>
    <function name="get_replace_current_wm"
              c:identifier="meta_get_replace_current_wm">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <function name="get_stage_for_screen"
              c:identifier="meta_get_stage_for_screen">
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">The #ClutterStage for the screen</doc>
        <type name="Clutter.Actor" c:type="ClutterActor*"/>
      </return-value>
      <parameters>
        <parameter name="screen" transfer-ownership="none">
          <doc xml:space="preserve">a #MetaScreen</doc>
          <type name="Screen" c:type="MetaScreen*"/>
        </parameter>
      </parameters>
    </function>
    <function name="get_top_window_group_for_screen"
              c:identifier="meta_get_top_window_group_for_screen">
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">The top window group corresponding to @screen</doc>
        <type name="Clutter.Actor" c:type="ClutterActor*"/>
      </return-value>
      <parameters>
        <parameter name="screen" transfer-ownership="none">
          <doc xml:space="preserve">a #MetaScreen</doc>
          <type name="Screen" c:type="MetaScreen*"/>
        </parameter>
      </parameters>
    </function>
    <function name="get_window_actors" c:identifier="meta_get_window_actors">
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">The set of #MetaWindowActor on @screen</doc>
        <type name="GLib.List" c:type="GList*">
          <type name="Clutter.Actor"/>
        </type>
      </return-value>
      <parameters>
        <parameter name="screen" transfer-ownership="none">
          <doc xml:space="preserve">a #MetaScreen</doc>
          <type name="Screen" c:type="MetaScreen*"/>
        </parameter>
      </parameters>
    </function>
    <function name="get_window_group_for_screen"
              c:identifier="meta_get_window_group_for_screen">
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">The window group corresponding to @screen</doc>
        <type name="Clutter.Actor" c:type="ClutterActor*"/>
      </return-value>
      <parameters>
        <parameter name="screen" transfer-ownership="none">
          <doc xml:space="preserve">a #MetaScreen</doc>
          <type name="Screen" c:type="MetaScreen*"/>
        </parameter>
      </parameters>
    </function>
    <function name="gradient_add_alpha" c:identifier="meta_gradient_add_alpha">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="pixbuf" transfer-ownership="none">
          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
        </parameter>
        <parameter name="alphas" transfer-ownership="none">
          <type name="guint8" c:type="const guchar*"/>
        </parameter>
        <parameter name="n_alphas" transfer-ownership="none">
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="type" transfer-ownership="none">
          <type name="GradientType" c:type="MetaGradientType"/>
        </parameter>
      </parameters>
    </function>
    <function name="gradient_create_interwoven"
              c:identifier="meta_gradient_create_interwoven"
              introspectable="0">
      <doc xml:space="preserve">Interwoven essentially means we have two vertical gradients,
cut into horizontal strips of the given thickness, and then the strips
are alternated. I'm not sure what it's good for, just copied since
WindowMaker had it.</doc>
      <return-value>
        <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
      </return-value>
      <parameters>
        <parameter name="width" transfer-ownership="none">
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="height" transfer-ownership="none">
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="colors1" transfer-ownership="none">
          <type name="Gdk.RGBA" c:type="const GdkRGBA"/>
        </parameter>
        <parameter name="thickness1" transfer-ownership="none">
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="colors2" transfer-ownership="none">
          <type name="Gdk.RGBA" c:type="const GdkRGBA"/>
        </parameter>
        <parameter name="thickness2" transfer-ownership="none">
          <type name="gint" c:type="int"/>
        </parameter>
      </parameters>
    </function>
    <function name="gradient_create_multi"
              c:identifier="meta_gradient_create_multi">
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">A new multi-step linear gradient</doc>
        <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
      </return-value>
      <parameters>
        <parameter name="width" transfer-ownership="none">
          <doc xml:space="preserve">Width in pixels</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="height" transfer-ownership="none">
          <doc xml:space="preserve">Height in pixels</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="colors" transfer-ownership="none">
          <doc xml:space="preserve">Array of colors</doc>
          <array length="3" zero-terminated="0" c:type="GdkRGBA*">
            <type name="Gdk.RGBA" c:type="GdkRGBA"/>
          </array>
        </parameter>
        <parameter name="n_colors" transfer-ownership="none">
          <doc xml:space="preserve">Number of colors</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="style" transfer-ownership="none">
          <doc xml:space="preserve">Gradient style</doc>
          <type name="GradientType" c:type="MetaGradientType"/>
        </parameter>
      </parameters>
    </function>
    <function name="gradient_create_simple"
              c:identifier="meta_gradient_create_simple">
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">A new linear gradient</doc>
        <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
      </return-value>
      <parameters>
        <parameter name="width" transfer-ownership="none">
          <doc xml:space="preserve">Width in pixels</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="height" transfer-ownership="none">
          <doc xml:space="preserve">Height in pixels</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="from" transfer-ownership="none">
          <doc xml:space="preserve">Starting color</doc>
          <type name="Gdk.RGBA" c:type="const GdkRGBA*"/>
        </parameter>
        <parameter name="to" transfer-ownership="none">
          <doc xml:space="preserve">Ending color</doc>
          <type name="Gdk.RGBA" c:type="const GdkRGBA*"/>
        </parameter>
        <parameter name="style" transfer-ownership="none">
          <doc xml:space="preserve">Gradient style</doc>
          <type name="GradientType" c:type="MetaGradientType"/>
        </parameter>
      </parameters>
    </function>
    <function name="gravity_to_string" c:identifier="meta_gravity_to_string">
      <return-value transfer-ownership="none">
        <type name="utf8" c:type="const char*"/>
      </return-value>
      <parameters>
        <parameter name="gravity" transfer-ownership="none">
          <type name="gint" c:type="int"/>
        </parameter>
      </parameters>
    </function>
    <function name="init" c:identifier="meta_init" introspectable="0">
      <doc xml:space="preserve">Initialize muffin. Call this after meta_get_option_context() and
meta_plugin_manager_set_plugin_type(), and before meta_run().</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </function>
    <function name="is_debugging" c:identifier="meta_is_debugging">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <function name="is_syncing" c:identifier="meta_is_syncing">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <function name="is_verbose" c:identifier="meta_is_verbose">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <function name="keybindings_set_custom_handler"
              c:identifier="meta_keybindings_set_custom_handler">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="name" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="handler"
                   transfer-ownership="none"
                   scope="notified"
                   closure="2"
                   destroy="3">
          <type name="KeyHandlerFunc" c:type="MetaKeyHandlerFunc"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
        <parameter name="free_data" transfer-ownership="none" scope="async">
          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
        </parameter>
      </parameters>
    </function>
    <function name="later_add" c:identifier="meta_later_add">
      <doc xml:space="preserve">Sets up a callback  to be called at some later time. @when determines the
particular later occasion at which it is called. This is much like g_idle_add(),
except that the functions interact properly with clutter event handling.
If a "later" function is added from a clutter event handler, and is supposed
to be run before the stage is redrawn, it will be run before that redraw
of the stage, not the next one.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">an integer ID (guaranteed to be non-zero) that can be used
 to cancel the callback and prevent it from being run.</doc>
        <type name="guint" c:type="guint"/>
      </return-value>
      <parameters>
        <parameter name="when" transfer-ownership="none">
          <doc xml:space="preserve">enumeration value determining the phase at which to run the callback</doc>
          <type name="LaterType" c:type="MetaLaterType"/>
        </parameter>
        <parameter name="func"
                   transfer-ownership="none"
                   scope="notified"
                   closure="2"
                   destroy="3">
          <doc xml:space="preserve">callback to run later</doc>
          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
        </parameter>
        <parameter name="data" transfer-ownership="none">
          <doc xml:space="preserve">data to pass to the callback</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
        <parameter name="notify" transfer-ownership="none" scope="async">
          <doc xml:space="preserve">function to call to destroy @data when it is no longer in use, or %NULL</doc>
          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
        </parameter>
      </parameters>
    </function>
    <function name="later_remove" c:identifier="meta_later_remove">
      <doc xml:space="preserve">Removes a callback added with meta_later_add()</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="later_id" transfer-ownership="none">
          <doc xml:space="preserve">the integer ID returned from meta_later_add()</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
      </parameters>
    </function>
    <function name="pop_no_msg_prefix" c:identifier="meta_pop_no_msg_prefix">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </function>
    <function name="preference_to_string"
              c:identifier="meta_preference_to_string"
              moved-to="Preference.to_string">
      <return-value transfer-ownership="none">
        <type name="utf8" c:type="const char*"/>
      </return-value>
      <parameters>
        <parameter name="pref" transfer-ownership="none">
          <type name="Preference" c:type="MetaPreference"/>
        </parameter>
      </parameters>
    </function>
    <function name="prefs_add_listener"
              c:identifier="meta_prefs_add_listener"
              introspectable="0">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="func" transfer-ownership="none" closure="1">
          <type name="PrefsChangedFunc" c:type="MetaPrefsChangedFunc"/>
        </parameter>
        <parameter name="data" transfer-ownership="none">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="prefs_bell_is_audible"
              c:identifier="meta_prefs_bell_is_audible">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <function name="prefs_change_workspace_name"
              c:identifier="meta_prefs_change_workspace_name">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="i" transfer-ownership="none">
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="name" transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="prefs_get_action_double_click_titlebar"
              c:identifier="meta_prefs_get_action_double_click_titlebar">
      <return-value transfer-ownership="none">
        <type name="CDesktopEnums.TitlebarAction"
              c:type="CDesktopTitlebarAction"/>
      </return-value>
    </function>
    <function name="prefs_get_action_middle_click_titlebar"
              c:identifier="meta_prefs_get_action_middle_click_titlebar">
      <return-value transfer-ownership="none">
        <type name="CDesktopEnums.TitlebarAction"
              c:type="CDesktopTitlebarAction"/>
      </return-value>
    </function>
    <function name="prefs_get_action_right_click_titlebar"
              c:identifier="meta_prefs_get_action_right_click_titlebar">
      <return-value transfer-ownership="none">
        <type name="CDesktopEnums.TitlebarAction"
              c:type="CDesktopTitlebarAction"/>
      </return-value>
    </function>
    <function name="prefs_get_action_scroll_wheel_titlebar"
              c:identifier="meta_prefs_get_action_scroll_wheel_titlebar">
      <return-value transfer-ownership="none">
        <type name="CDesktopEnums.TitlebarScrollAction"
              c:type="CDesktopTitlebarScrollAction"/>
      </return-value>
    </function>
    <function name="prefs_get_application_based"
              c:identifier="meta_prefs_get_application_based">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <function name="prefs_get_attach_modal_dialogs"
              c:identifier="meta_prefs_get_attach_modal_dialogs">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <function name="prefs_get_auto_raise"
              c:identifier="meta_prefs_get_auto_raise">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <function name="prefs_get_auto_raise_delay"
              c:identifier="meta_prefs_get_auto_raise_delay">
      <return-value transfer-ownership="none">
        <type name="gint" c:type="int"/>
      </return-value>
    </function>
    <function name="prefs_get_button_layout"
              c:identifier="meta_prefs_get_button_layout">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="button_layout" transfer-ownership="none">
          <type name="ButtonLayout" c:type="MetaButtonLayout*"/>
        </parameter>
      </parameters>
    </function>
    <function name="prefs_get_compositing_manager"
              c:identifier="meta_prefs_get_compositing_manager">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <function name="prefs_get_cursor_size"
              c:identifier="meta_prefs_get_cursor_size">
      <return-value transfer-ownership="none">
        <type name="gint" c:type="int"/>
      </return-value>
    </function>
    <function name="prefs_get_cursor_theme"
              c:identifier="meta_prefs_get_cursor_theme">
      <return-value transfer-ownership="none">
        <type name="utf8" c:type="const char*"/>
      </return-value>
    </function>
    <function name="prefs_get_disable_workarounds"
              c:identifier="meta_prefs_get_disable_workarounds">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <function name="prefs_get_draggable_border_width"
              c:identifier="meta_prefs_get_draggable_border_width">
      <return-value transfer-ownership="none">
        <type name="gint" c:type="int"/>
      </return-value>
    </function>
    <function name="prefs_get_dynamic_workspaces"
              c:identifier="meta_prefs_get_dynamic_workspaces">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <function name="prefs_get_edge_tiling"
              c:identifier="meta_prefs_get_edge_tiling">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <function name="prefs_get_focus_mode"
              c:identifier="meta_prefs_get_focus_mode">
      <return-value transfer-ownership="none">
        <type name="CDesktopEnums.FocusMode" c:type="CDesktopFocusMode"/>
      </return-value>
    </function>
    <function name="prefs_get_focus_new_windows"
              c:identifier="meta_prefs_get_focus_new_windows">
      <return-value transfer-ownership="none">
        <type name="CDesktopEnums.FocusNewWindows"
              c:type="CDesktopFocusNewWindows"/>
      </return-value>
    </function>
    <function name="prefs_get_force_fullscreen"
              c:identifier="meta_prefs_get_force_fullscreen">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <function name="prefs_get_gnome_accessibility"
              c:identifier="meta_prefs_get_gnome_accessibility">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <function name="prefs_get_gnome_animations"
              c:identifier="meta_prefs_get_gnome_animations">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <function name="prefs_get_invert_flip_direction"
              c:identifier="meta_prefs_get_invert_flip_direction">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <function name="prefs_get_keybinding_action"
              c:identifier="meta_prefs_get_keybinding_action">
      <return-value transfer-ownership="none">
        <type name="KeyBindingAction" c:type="MetaKeyBindingAction"/>
      </return-value>
      <parameters>
        <parameter name="name" transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="prefs_get_keybindings"
              c:identifier="meta_prefs_get_keybindings">
      <return-value transfer-ownership="container">
        <type name="GLib.List" c:type="GList*">
          <type name="KeyPref"/>
        </type>
      </return-value>
    </function>
    <function name="prefs_get_legacy_snap"
              c:identifier="meta_prefs_get_legacy_snap">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <function name="prefs_get_live_hidden_windows"
              c:identifier="meta_prefs_get_live_hidden_windows">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <function name="prefs_get_min_win_opacity"
              c:identifier="meta_prefs_get_min_win_opacity">
      <return-value transfer-ownership="none">
        <type name="gint" c:type="gint"/>
      </return-value>
    </function>
    <function name="prefs_get_mouse_button_menu"
              c:identifier="meta_prefs_get_mouse_button_menu">
      <return-value transfer-ownership="none">
        <type name="guint" c:type="guint"/>
      </return-value>
    </function>
    <function name="prefs_get_mouse_button_mods"
              c:identifier="meta_prefs_get_mouse_button_mods">
      <return-value transfer-ownership="none">
        <type name="VirtualModifier" c:type="MetaVirtualModifier"/>
      </return-value>
    </function>
    <function name="prefs_get_mouse_button_resize"
              c:identifier="meta_prefs_get_mouse_button_resize">
      <return-value transfer-ownership="none">
        <type name="guint" c:type="guint"/>
      </return-value>
    </function>
    <function name="prefs_get_mouse_button_zoom_mods"
              c:identifier="meta_prefs_get_mouse_button_zoom_mods">
      <return-value transfer-ownership="none">
        <type name="VirtualModifier" c:type="MetaVirtualModifier"/>
      </return-value>
    </function>
    <function name="prefs_get_mouse_zoom_enabled"
              c:identifier="meta_prefs_get_mouse_zoom_enabled">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <function name="prefs_get_num_workspaces"
              c:identifier="meta_prefs_get_num_workspaces">
      <return-value transfer-ownership="none">
        <type name="gint" c:type="int"/>
      </return-value>
    </function>
    <function name="prefs_get_placement_mode"
              c:identifier="meta_prefs_get_placement_mode">
      <return-value transfer-ownership="none">
        <type name="PlacementMode" c:type="MetaPlacementMode"/>
      </return-value>
    </function>
    <function name="prefs_get_raise_on_click"
              c:identifier="meta_prefs_get_raise_on_click">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <function name="prefs_get_resize_threshold"
              c:identifier="meta_prefs_get_resize_threshold">
      <return-value transfer-ownership="none">
        <type name="gint" c:type="int"/>
      </return-value>
    </function>
    <function name="prefs_get_screenshot_command"
              c:identifier="meta_prefs_get_screenshot_command">
      <return-value transfer-ownership="none">
        <type name="utf8" c:type="const char*"/>
      </return-value>
    </function>
    <function name="prefs_get_snap_modifier"
              c:identifier="meta_prefs_get_snap_modifier">
      <return-value transfer-ownership="none">
        <type name="guint" c:type="unsigned int*"/>
      </return-value>
    </function>
    <function name="prefs_get_terminal_command"
              c:identifier="meta_prefs_get_terminal_command">
      <return-value transfer-ownership="none">
        <type name="utf8" c:type="const char*"/>
      </return-value>
    </function>
    <function name="prefs_get_theme" c:identifier="meta_prefs_get_theme">
      <return-value transfer-ownership="none">
        <type name="utf8" c:type="const char*"/>
      </return-value>
    </function>
    <function name="prefs_get_tile_hud_threshold"
              c:identifier="meta_prefs_get_tile_hud_threshold">
      <return-value transfer-ownership="none">
        <type name="gint" c:type="int"/>
      </return-value>
    </function>
    <function name="prefs_get_tile_maximize"
              c:identifier="meta_prefs_get_tile_maximize">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <function name="prefs_get_titlebar_font"
              c:identifier="meta_prefs_get_titlebar_font">
      <return-value transfer-ownership="none">
        <type name="Pango.FontDescription"
              c:type="const PangoFontDescription*"/>
      </return-value>
    </function>
    <function name="prefs_get_ui_scale" c:identifier="meta_prefs_get_ui_scale">
      <return-value transfer-ownership="none">
        <type name="gint" c:type="gint"/>
      </return-value>
    </function>
    <function name="prefs_get_unredirect_fullscreen_windows"
              c:identifier="meta_prefs_get_unredirect_fullscreen_windows">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <function name="prefs_get_visual_bell"
              c:identifier="meta_prefs_get_visual_bell">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <function name="prefs_get_visual_bell_type"
              c:identifier="meta_prefs_get_visual_bell_type">
      <return-value transfer-ownership="none">
        <type name="CDesktopEnums.VisualBellType"
              c:type="CDesktopVisualBellType"/>
      </return-value>
    </function>
    <function name="prefs_get_window_binding"
              c:identifier="meta_prefs_get_window_binding">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="name" transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="keysym" transfer-ownership="none">
          <type name="guint" c:type="unsigned int*"/>
        </parameter>
        <parameter name="modifiers" transfer-ownership="none">
          <type name="VirtualModifier" c:type="MetaVirtualModifier*"/>
        </parameter>
      </parameters>
    </function>
    <function name="prefs_get_window_screenshot_command"
              c:identifier="meta_prefs_get_window_screenshot_command">
      <return-value transfer-ownership="none">
        <type name="utf8" c:type="const char*"/>
      </return-value>
    </function>
    <function name="prefs_get_workspace_cycle"
              c:identifier="meta_prefs_get_workspace_cycle">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <function name="prefs_get_workspace_name"
              c:identifier="meta_prefs_get_workspace_name">
      <return-value transfer-ownership="none">
        <type name="utf8" c:type="const char*"/>
      </return-value>
      <parameters>
        <parameter name="i" transfer-ownership="none">
          <type name="gint" c:type="int"/>
        </parameter>
      </parameters>
    </function>
    <function name="prefs_get_workspaces_only_on_primary"
              c:identifier="meta_prefs_get_workspaces_only_on_primary">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <function name="prefs_init" c:identifier="meta_prefs_init">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </function>
    <function name="prefs_override_preference_schema"
              c:identifier="meta_prefs_override_preference_schema">
      <doc xml:space="preserve">Specify a schema whose keys are used to override the standard Metacity
keys. This might be used if a plugin expected a different value for
some preference than the Metacity default. While this function can be
called at any point, this function should generally be called in a
plugin's constructor, rather than in its start() method so the preference
isn't first loaded with one value then changed to another value.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="key" transfer-ownership="none">
          <doc xml:space="preserve">the preference name</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="schema" transfer-ownership="none">
          <doc xml:space="preserve">new schema for preference %key</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="prefs_remove_listener"
              c:identifier="meta_prefs_remove_listener"
              introspectable="0">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="func" transfer-ownership="none" closure="1">
          <type name="PrefsChangedFunc" c:type="MetaPrefsChangedFunc"/>
        </parameter>
        <parameter name="data" transfer-ownership="none">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="prefs_set_compositing_manager"
              c:identifier="meta_prefs_set_compositing_manager">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="whether" transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="prefs_set_force_fullscreen"
              c:identifier="meta_prefs_set_force_fullscreen">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="whether" transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="prefs_set_live_hidden_windows"
              c:identifier="meta_prefs_set_live_hidden_windows">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="whether" transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="prefs_set_num_workspaces"
              c:identifier="meta_prefs_set_num_workspaces">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="n_workspaces" transfer-ownership="none">
          <type name="gint" c:type="int"/>
        </parameter>
      </parameters>
    </function>
    <function name="print_backtrace" c:identifier="meta_print_backtrace">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </function>
    <function name="push_no_msg_prefix" c:identifier="meta_push_no_msg_prefix">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </function>
    <function name="quit" c:identifier="meta_quit">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="code" transfer-ownership="none">
          <type name="ExitCode" c:type="MetaExitCode"/>
        </parameter>
      </parameters>
    </function>
    <function name="rect" c:identifier="meta_rect">
      <return-value transfer-ownership="full">
        <type name="Rectangle" c:type="MetaRectangle"/>
      </return-value>
      <parameters>
        <parameter name="x" transfer-ownership="none">
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="y" transfer-ownership="none">
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="width" transfer-ownership="none">
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="height" transfer-ownership="none">
          <type name="gint" c:type="int"/>
        </parameter>
      </parameters>
    </function>
    <function name="remove_verbose_topic"
              c:identifier="meta_remove_verbose_topic">
      <doc xml:space="preserve">Stop printing log messages for the given topic @topic.  Note
that this method does not stack with meta_add_verbose_topic();
i.e. if two calls to meta_add_verbose_topic() for the same
topic are made, one call to meta_remove_verbose_topic() will
remove it.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="topic" transfer-ownership="none">
          <doc xml:space="preserve">Topic for which logging will be stopped</doc>
          <type name="DebugTopic" c:type="MetaDebugTopic"/>
        </parameter>
      </parameters>
    </function>
    <function name="run" c:identifier="meta_run" introspectable="0">
      <doc xml:space="preserve">Runs muffin. Call this after completing your own initialization.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">muffin's exit status</doc>
        <type name="gint" c:type="int"/>
      </return-value>
    </function>
    <function name="set_debugging" c:identifier="meta_set_debugging">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="setting" transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="set_replace_current_wm"
              c:identifier="meta_set_replace_current_wm">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="setting" transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="set_stage_input_region"
              c:identifier="meta_set_stage_input_region">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="screen" transfer-ownership="none">
          <type name="Screen" c:type="MetaScreen*"/>
        </parameter>
        <parameter name="region" transfer-ownership="none">
          <type name="xfixes.XserverRegion" c:type="XserverRegion"/>
        </parameter>
      </parameters>
    </function>
    <function name="set_syncing" c:identifier="meta_set_syncing">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="setting" transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="set_verbose" c:identifier="meta_set_verbose">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="setting" transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="show_dialog"
              c:identifier="meta_show_dialog"
              introspectable="0">
      <return-value transfer-ownership="none">
        <type name="GLib.Pid" c:type="GPid"/>
      </return-value>
      <parameters>
        <parameter name="type" transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="message" transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="timeout" transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="display" transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="ok_text" transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="cancel_text" transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="transient_for" transfer-ownership="none">
          <type name="gint" c:type="const int"/>
        </parameter>
        <parameter name="columns" transfer-ownership="none">
          <type name="GLib.SList" c:type="GSList*">
            <type name="gpointer" c:type="gpointer"/>
          </type>
        </parameter>
        <parameter name="entries" transfer-ownership="none">
          <type name="GLib.SList" c:type="GSList*">
            <type name="gpointer" c:type="gpointer"/>
          </type>
        </parameter>
      </parameters>
    </function>
    <function name="theme_get_current"
              c:identifier="meta_theme_get_current"
              moved-to="Theme.get_current"
              introspectable="0">
      <return-value>
        <type name="Theme" c:type="MetaTheme*"/>
      </return-value>
    </function>
    <function name="theme_load"
              c:identifier="meta_theme_load"
              moved-to="Theme.load"
              introspectable="0"
              throws="1">
      <return-value>
        <type name="Theme" c:type="MetaTheme*"/>
      </return-value>
      <parameters>
        <parameter name="theme_name" transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="theme_new"
              c:identifier="meta_theme_new"
              moved-to="Theme.new"
              introspectable="0">
      <return-value>
        <type name="Theme" c:type="MetaTheme*"/>
      </return-value>
    </function>
    <function name="theme_set_current"
              c:identifier="meta_theme_set_current"
              moved-to="Theme.set_current">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="name" transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="force_reload" transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="topic_real"
              c:identifier="meta_topic_real"
              introspectable="0">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="topic" transfer-ownership="none">
          <type name="DebugTopic" c:type="MetaDebugTopic"/>
        </parameter>
        <parameter name="format" transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="..." transfer-ownership="none">
          <varargs/>
        </parameter>
      </parameters>
    </function>
    <function name="unsigned_long_equal"
              c:identifier="meta_unsigned_long_equal">
      <return-value transfer-ownership="none">
        <type name="gint" c:type="gint"/>
      </return-value>
      <parameters>
        <parameter name="v1" transfer-ownership="none">
          <type name="gpointer" c:type="gconstpointer"/>
        </parameter>
        <parameter name="v2" transfer-ownership="none">
          <type name="gpointer" c:type="gconstpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="unsigned_long_hash" c:identifier="meta_unsigned_long_hash">
      <return-value transfer-ownership="none">
        <type name="guint" c:type="guint"/>
      </return-value>
      <parameters>
        <parameter name="v" transfer-ownership="none">
          <type name="gpointer" c:type="gconstpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="verbose_real"
              c:identifier="meta_verbose_real"
              introspectable="0">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="format" transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="..." transfer-ownership="none">
          <varargs/>
        </parameter>
      </parameters>
    </function>
    <function name="warning" c:identifier="meta_warning" introspectable="0">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="format" transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="..." transfer-ownership="none">
          <varargs/>
        </parameter>
      </parameters>
    </function>
  </namespace>
</repository>
