<?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="Clutter" version="3"/>
  <include name="Cogl" version="3"/>
  <include name="GDesktopEnums" version="3.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="libmutter-3"/>
  <namespace name="Meta"
             version="3"
             shared-library="libmutter-3.so.0"
             c:identifier-prefixes="Meta"
             c:symbol-prefixes="meta">
    <class name="Backend"
           c:symbol-prefix="backend"
           c:type="MetaBackend"
           parent="GObject.Object"
           abstract="1"
           glib:type-name="MetaBackend"
           glib:get-type="meta_backend_get_type"
           glib:type-struct="BackendClass">
      <implements name="Gio.Initable"/>
      <method name="get_dnd" c:identifier="meta_backend_get_dnd">
        <doc xml:space="preserve">Gets the global #MetaDnd that's managed by this backend.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the #MetaDnd</doc>
          <type name="Dnd" c:type="MetaDnd*"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve">A #MetaDnd</doc>
            <type name="Backend" c:type="MetaBackend*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_remote_access_controller"
              c:identifier="meta_backend_get_remote_access_controller">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The #MetaRemoteAccessController</doc>
          <type name="RemoteAccessController"
                c:type="MetaRemoteAccessController*"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve">A #MetaBackend</doc>
            <type name="Backend" c:type="MetaBackend*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_settings"
              c:identifier="meta_backend_get_settings"
              introspectable="0">
        <return-value>
          <type name="Settings" c:type="MetaSettings*"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <type name="Backend" c:type="MetaBackend*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_stage" c:identifier="meta_backend_get_stage">
        <doc xml:space="preserve">Gets the global #ClutterStage that's managed by this backend.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the #ClutterStage</doc>
          <type name="Clutter.Actor" c:type="ClutterActor*"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve">A #MetaBackend</doc>
            <type name="Backend" c:type="MetaBackend*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="lock_layout_group"
              c:identifier="meta_backend_lock_layout_group">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <type name="Backend" c:type="MetaBackend*"/>
          </instance-parameter>
          <parameter name="idx" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_keymap" c:identifier="meta_backend_set_keymap">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <type name="Backend" c:type="MetaBackend*"/>
          </instance-parameter>
          <parameter name="layouts" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="variants" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="options" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_numlock" c:identifier="meta_backend_set_numlock">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <type name="Backend" c:type="MetaBackend*"/>
          </instance-parameter>
          <parameter name="numlock_state" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <glib:signal name="keymap-changed" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="keymap-layout-group-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="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="last-device-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>
      <glib:signal name="lid-is-closed-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="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="BackendClass"
            c:type="MetaBackendClass"
            disguised="1"
            glib:is-gtype-struct-for="Backend">
    </record>
    <class name="Background"
           c:symbol-prefix="background"
           c:type="MetaBackground"
           parent="GObject.Object"
           glib:type-name="MetaBackground"
           glib:get-type="meta_background_get_type"
           glib:type-struct="BackgroundClass">
      <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>
      <constructor name="new" c:identifier="meta_background_new">
        <return-value transfer-ownership="full">
          <type name="Background" c:type="MetaBackground*"/>
        </return-value>
        <parameters>
          <parameter name="display" transfer-ownership="none">
            <type name="Display" c:type="MetaDisplay*"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="refresh_all" c:identifier="meta_background_refresh_all">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </function>
      <method name="set_blend" c:identifier="meta_background_set_blend">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Background" c:type="MetaBackground*"/>
          </instance-parameter>
          <parameter name="file1" transfer-ownership="none">
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="file2" transfer-ownership="none">
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="blend_factor" transfer-ownership="none">
            <type name="gdouble" c:type="double"/>
          </parameter>
          <parameter name="style" transfer-ownership="none">
            <type name="GDesktopEnums.BackgroundStyle"
                  c:type="GDesktopBackgroundStyle"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_color" c:identifier="meta_background_set_color">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Background" c:type="MetaBackground*"/>
          </instance-parameter>
          <parameter name="color" transfer-ownership="none">
            <type name="Clutter.Color" c:type="ClutterColor*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_file" c:identifier="meta_background_set_file">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Background" c:type="MetaBackground*"/>
          </instance-parameter>
          <parameter name="file" transfer-ownership="none">
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="style" transfer-ownership="none">
            <type name="GDesktopEnums.BackgroundStyle"
                  c:type="GDesktopBackgroundStyle"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_gradient" c:identifier="meta_background_set_gradient">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Background" c:type="MetaBackground*"/>
          </instance-parameter>
          <parameter name="shading_direction" transfer-ownership="none">
            <type name="GDesktopEnums.BackgroundShading"
                  c:type="GDesktopBackgroundShading"/>
          </parameter>
          <parameter name="color" transfer-ownership="none">
            <type name="Clutter.Color" c:type="ClutterColor*"/>
          </parameter>
          <parameter name="second_color" transfer-ownership="none">
            <type name="Clutter.Color" c:type="ClutterColor*"/>
          </parameter>
        </parameters>
      </method>
      <property name="meta-display"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="Display"/>
      </property>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv">
        <type name="BackgroundPrivate" c:type="MetaBackgroundPrivate*"/>
      </field>
      <glib:signal name="changed" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <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" c:identifier="meta_background_actor_new">
        <doc xml:space="preserve">Creates a new actor to draw the background for the given monitor.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the newly created background actor</doc>
          <type name="Clutter.Actor" c:type="ClutterActor*"/>
        </return-value>
        <parameters>
          <parameter name="display" transfer-ownership="none">
            <type name="Display" c:type="MetaDisplay*"/>
          </parameter>
          <parameter name="monitor" transfer-ownership="none">
            <doc xml:space="preserve">Index of the monitor for which to draw the background</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="set_background"
              c:identifier="meta_background_actor_set_background">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="BackgroundActor" c:type="MetaBackgroundActor*"/>
          </instance-parameter>
          <parameter name="background" transfer-ownership="none">
            <type name="Background" c:type="MetaBackground*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_gradient"
              c:identifier="meta_background_actor_set_gradient">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="BackgroundActor" c:type="MetaBackgroundActor*"/>
          </instance-parameter>
          <parameter name="enabled" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="tone_start" transfer-ownership="none">
            <type name="gdouble" c:type="double"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_monitor"
              c:identifier="meta_background_actor_set_monitor">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="BackgroundActor" c:type="MetaBackgroundActor*"/>
          </instance-parameter>
          <parameter name="monitor" transfer-ownership="none">
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_vignette"
              c:identifier="meta_background_actor_set_vignette">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="BackgroundActor" c:type="MetaBackgroundActor*"/>
          </instance-parameter>
          <parameter name="enabled" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="brightness" transfer-ownership="none">
            <type name="gdouble" c:type="double"/>
          </parameter>
          <parameter name="sharpness" transfer-ownership="none">
            <type name="gdouble" c:type="double"/>
          </parameter>
        </parameters>
      </method>
      <property name="background" writable="1" transfer-ownership="none">
        <type name="Background"/>
      </property>
      <property name="brightness" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="gradient" writable="1" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="gradient-height" writable="1" transfer-ownership="none">
        <type name="gint" c:type="gint"/>
      </property>
      <property name="gradient-max-darkness"
                writable="1"
                transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="meta-display"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="Display"/>
      </property>
      <property name="monitor"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="gint" c:type="gint"/>
      </property>
      <property name="vignette" writable="1" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="vignette-sharpness"
                writable="1"
                transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </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" readable="0" private="1">
        <type name="Clutter.ActorClass" c:type="ClutterActorClass"/>
      </field>
    </record>
    <record name="BackgroundActorPrivate"
            c:type="MetaBackgroundActorPrivate"
            disguised="1">
    </record>
    <record name="BackgroundClass"
            c:type="MetaBackgroundClass"
            glib:is-gtype-struct-for="Background">
      <field name="parent_class" readable="0" private="1">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <class name="BackgroundGroup"
           c:symbol-prefix="background_group"
           c:type="MetaBackgroundGroup"
           parent="Clutter.Actor"
           glib:type-name="MetaBackgroundGroup"
           glib:get-type="meta_background_group_get_type"
           glib:type-struct="BackgroundGroupClass">
      <implements name="Atk.ImplementorIface"/>
      <implements name="Clutter.Animatable"/>
      <implements name="Clutter.Container"/>
      <implements name="Clutter.Scriptable"/>
      <constructor name="new" c:identifier="meta_background_group_new">
        <return-value transfer-ownership="none">
          <type name="Clutter.Actor" c:type="ClutterActor*"/>
        </return-value>
      </constructor>
      <field name="parent" readable="0" private="1">
        <type name="Clutter.Actor" c:type="ClutterActor"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="BackgroundGroupPrivate"
              c:type="MetaBackgroundGroupPrivate*"/>
      </field>
    </class>
    <record name="BackgroundGroupClass"
            c:type="MetaBackgroundGroupClass"
            glib:is-gtype-struct-for="BackgroundGroup">
      <field name="parent_class" readable="0" private="1">
        <type name="Clutter.ActorClass" c:type="ClutterActorClass"/>
      </field>
    </record>
    <record name="BackgroundGroupPrivate"
            c:type="MetaBackgroundGroupPrivate"
            disguised="1">
    </record>
    <class name="BackgroundImage"
           c:symbol-prefix="background_image"
           c:type="MetaBackgroundImage"
           parent="GObject.Object"
           glib:type-name="MetaBackgroundImage"
           glib:get-type="meta_background_image_get_type"
           glib:type-struct="BackgroundImageClass">
      <doc xml:space="preserve">#MetaBackgroundImage is an object that represents a loaded or loading background image.</doc>
      <method name="get_success"
              c:identifier="meta_background_image_get_success">
        <doc xml:space="preserve">This function is a convenience function for checking for success,
without having to call meta_background_image_get_texture() and
handle the return of a Cogl type.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if loading completed successfully, otherwise %FALSE</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="image" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaBackgroundImage</doc>
            <type name="BackgroundImage" c:type="MetaBackgroundImage*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_texture"
              c:identifier="meta_background_image_get_texture">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #CoglTexture if loading succeeded; if
 loading failed or has not yet finished, %NULL.</doc>
          <type name="Cogl.Texture" c:type="CoglTexture*"/>
        </return-value>
        <parameters>
          <instance-parameter name="image" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaBackgroundImage</doc>
            <type name="BackgroundImage" c:type="MetaBackgroundImage*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_loaded" c:identifier="meta_background_image_is_loaded">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if loading has already completed, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="image" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaBackgroundImage</doc>
            <type name="BackgroundImage" c:type="MetaBackgroundImage*"/>
          </instance-parameter>
        </parameters>
      </method>
      <glib:signal name="loaded" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <class name="BackgroundImageCache"
           c:symbol-prefix="background_image_cache"
           c:type="MetaBackgroundImageCache"
           parent="GObject.Object"
           glib:type-name="MetaBackgroundImageCache"
           glib:get-type="meta_background_image_cache_get_type"
           glib:type-struct="BackgroundImageCacheClass">
      <doc xml:space="preserve">#MetaBackgroundImageCache caches loading of textures for backgrounds; there's actually
nothing background specific about it, other than it is tuned to work well for
large images as typically are used for backgrounds.</doc>
      <function name="get_default"
                c:identifier="meta_background_image_cache_get_default">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the global singleton background cache</doc>
          <type name="BackgroundImageCache"
                c:type="MetaBackgroundImageCache*"/>
        </return-value>
      </function>
      <method name="load" c:identifier="meta_background_image_cache_load">
        <doc xml:space="preserve">Loads an image to use as a background, or returns a reference to an
image that is already in the process of loading or loaded. In either
case, what is returned is a #MetaBackgroundImage which can be derefenced
to get a #CoglTexture. If meta_background_image_is_loaded() returns %TRUE,
the background is loaded, otherwise the MetaBackgroundImage::loaded
signal will be emitted exactly once. The 'loaded' state means that the
loading process finished, whether it succeeded or failed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a #MetaBackgroundImage to dereference to get the loaded texture</doc>
          <type name="BackgroundImage" c:type="MetaBackgroundImage*"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaBackgroundImageCache</doc>
            <type name="BackgroundImageCache"
                  c:type="MetaBackgroundImageCache*"/>
          </instance-parameter>
          <parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve">#GFile to load</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
        </parameters>
      </method>
      <method name="purge" c:identifier="meta_background_image_cache_purge">
        <doc xml:space="preserve">Remove an entry from the cache; this would be used if monitoring
showed that the file changed.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaBackgroundImageCache</doc>
            <type name="BackgroundImageCache"
                  c:type="MetaBackgroundImageCache*"/>
          </instance-parameter>
          <parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve">file to remove from the cache</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
        </parameters>
      </method>
    </class>
    <record name="BackgroundImageCacheClass"
            c:type="MetaBackgroundImageCacheClass"
            disguised="1"
            glib:is-gtype-struct-for="BackgroundImageCache">
    </record>
    <record name="BackgroundImageClass"
            c:type="MetaBackgroundImageClass"
            disguised="1"
            glib:is-gtype-struct-for="BackgroundImage">
    </record>
    <record name="BackgroundPrivate"
            c:type="MetaBackgroundPrivate"
            disguised="1">
    </record>
    <class name="Barrier"
           c:symbol-prefix="barrier"
           c:type="MetaBarrier"
           parent="GObject.Object"
           glib:type-name="MetaBarrier"
           glib:get-type="meta_barrier_get_type"
           glib:type-struct="BarrierClass">
      <doc xml:space="preserve">The &lt;structname&gt;MetaBarrier&lt;/structname&gt; structure contains
only private data and should be accessed using the provided API</doc>
      <method name="destroy" c:identifier="meta_barrier_destroy">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="barrier" transfer-ownership="none">
            <type name="Barrier" c:type="MetaBarrier*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_active" c:identifier="meta_barrier_is_active">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="barrier" transfer-ownership="none">
            <type name="Barrier" c:type="MetaBarrier*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="release" c:identifier="meta_barrier_release">
        <doc xml:space="preserve">In XI2.3, pointer barriers provide a feature where they can
be temporarily released so that the pointer goes through
them. Pass a #MetaBarrierEvent to release the barrier for
this event sequence.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="barrier" transfer-ownership="none">
            <doc xml:space="preserve">The barrier to release</doc>
            <type name="Barrier" c:type="MetaBarrier*"/>
          </instance-parameter>
          <parameter name="event" transfer-ownership="none">
            <doc xml:space="preserve">The event to release the pointer for</doc>
            <type name="BarrierEvent" c:type="MetaBarrierEvent*"/>
          </parameter>
        </parameters>
      </method>
      <property name="directions"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="BarrierDirection"/>
      </property>
      <property name="display"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="Display"/>
      </property>
      <property name="x1"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="gint" c:type="gint"/>
      </property>
      <property name="x2"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="gint" c:type="gint"/>
      </property>
      <property name="y1"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="gint" c:type="gint"/>
      </property>
      <property name="y2"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="gint" c:type="gint"/>
      </property>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv">
        <type name="BarrierPrivate" c:type="MetaBarrierPrivate*"/>
      </field>
      <glib:signal name="hit" when="first">
        <doc xml:space="preserve">When a pointer barrier is hit, this will trigger. This
requires an XI2-enabled server.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="event" transfer-ownership="none">
            <doc xml:space="preserve">A #MetaBarrierEvent that has the details of how
the barrier was hit.</doc>
            <type name="BarrierEvent"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="left" when="first">
        <doc xml:space="preserve">When a pointer barrier hitbox was left, this will trigger.
This requires an XI2-enabled server.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="event" transfer-ownership="none">
            <doc xml:space="preserve">A #MetaBarrierEvent that has the details of how
the barrier was left.</doc>
            <type name="BarrierEvent"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="BarrierClass"
            c:type="MetaBarrierClass"
            glib:is-gtype-struct-for="Barrier">
      <doc xml:space="preserve">The &lt;structname&gt;MetaBarrierClass&lt;/structname&gt; structure contains only
private data.</doc>
      <field name="parent_class" readable="0" private="1">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <bitfield name="BarrierDirection"
              glib:type-name="MetaBarrierDirection"
              glib:get-type="meta_barrier_direction_get_type"
              c:type="MetaBarrierDirection">
      <member name="positive_x"
              value="1"
              c:identifier="META_BARRIER_DIRECTION_POSITIVE_X"
              glib:nick="positive-x">
        <doc xml:space="preserve">Positive direction in the X axis</doc>
      </member>
      <member name="positive_y"
              value="2"
              c:identifier="META_BARRIER_DIRECTION_POSITIVE_Y"
              glib:nick="positive-y">
        <doc xml:space="preserve">Positive direction in the Y axis</doc>
      </member>
      <member name="negative_x"
              value="4"
              c:identifier="META_BARRIER_DIRECTION_NEGATIVE_X"
              glib:nick="negative-x">
        <doc xml:space="preserve">Negative direction in the X axis</doc>
      </member>
      <member name="negative_y"
              value="8"
              c:identifier="META_BARRIER_DIRECTION_NEGATIVE_Y"
              glib:nick="negative-y">
        <doc xml:space="preserve">Negative direction in the Y axis</doc>
      </member>
    </bitfield>
    <record name="BarrierEvent"
            c:type="MetaBarrierEvent"
            glib:type-name="MetaBarrierEvent"
            glib:get-type="meta_barrier_event_get_type"
            c:symbol-prefix="barrier_event">
      <field name="ref_count" readable="0" private="1">
        <type name="guint" c:type="volatile guint"/>
      </field>
      <field name="event_id" writable="1">
        <doc xml:space="preserve">A unique integer ID identifying a
consecutive series of motions at or along the barrier</doc>
        <type name="gint" c:type="int"/>
      </field>
      <field name="dt" writable="1">
        <doc xml:space="preserve">Server time, in milliseconds, since the last event
sent for this barrier</doc>
        <type name="gint" c:type="int"/>
      </field>
      <field name="time" writable="1">
        <doc xml:space="preserve">Server time, in milliseconds</doc>
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="x" writable="1">
        <doc xml:space="preserve">The cursor X position in screen coordinates</doc>
        <type name="gdouble" c:type="double"/>
      </field>
      <field name="y" writable="1">
        <doc xml:space="preserve">The cursor Y position in screen coordinates.</doc>
        <type name="gdouble" c:type="double"/>
      </field>
      <field name="dx" writable="1">
        <doc xml:space="preserve">If the cursor hadn't been constrained, the delta
of X movement past the barrier, in screen coordinates</doc>
        <type name="gdouble" c:type="double"/>
      </field>
      <field name="dy" writable="1">
        <doc xml:space="preserve">If the cursor hadn't been constrained, the delta
of X movement past the barrier, in screen coordinates</doc>
        <type name="gdouble" c:type="double"/>
      </field>
      <field name="released" writable="1">
        <doc xml:space="preserve">A boolean flag, %TRUE if this event generated
by the pointer leaving the barrier as a result of a client
calling meta_barrier_release() (will be set only for
MetaBarrier::leave signals)</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="grabbed" writable="1">
        <doc xml:space="preserve">A boolean flag, %TRUE if the pointer was grabbed
at the time this event was sent</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
    </record>
    <record name="BarrierPrivate" c:type="MetaBarrierPrivate" disguised="1">
    </record>
    <enumeration name="ButtonFunction"
                 glib:type-name="MetaButtonFunction"
                 glib:get-type="meta_button_function_get_type"
                 c:type="MetaButtonFunction">
      <doc xml:space="preserve">Function a window button can have.  Note, you can't add stuff here
without extending the theme format to draw a new function and
breaking all existing themes.</doc>
      <member name="menu"
              value="0"
              c:identifier="META_BUTTON_FUNCTION_MENU"
              glib:nick="menu">
        <doc xml:space="preserve">Menu</doc>
      </member>
      <member name="minimize"
              value="1"
              c:identifier="META_BUTTON_FUNCTION_MINIMIZE"
              glib:nick="minimize">
        <doc xml:space="preserve">Minimize</doc>
      </member>
      <member name="maximize"
              value="2"
              c:identifier="META_BUTTON_FUNCTION_MAXIMIZE"
              glib:nick="maximize">
        <doc xml:space="preserve">Maximize</doc>
      </member>
      <member name="close"
              value="3"
              c:identifier="META_BUTTON_FUNCTION_CLOSE"
              glib:nick="close">
        <doc xml:space="preserve">Close</doc>
      </member>
      <member name="appmenu"
              value="4"
              c:identifier="META_BUTTON_FUNCTION_APPMENU"
              glib:nick="appmenu">
      </member>
      <member name="last"
              value="5"
              c:identifier="META_BUTTON_FUNCTION_LAST"
              glib:nick="last">
        <doc xml:space="preserve">Marks the end of the #MetaButtonFunction enumeration</doc>
      </member>
    </enumeration>
    <record name="ButtonLayout" c:type="MetaButtonLayout">
      <field name="left_buttons" writable="1">
        <array zero-terminated="0" c:type="MetaButtonFunction" fixed-size="5">
          <type name="ButtonFunction" c:type="MetaButtonFunction"/>
        </array>
      </field>
      <field name="left_buttons_has_spacer" writable="1">
        <array zero-terminated="0" c:type="gboolean" fixed-size="5">
          <type name="gboolean" c:type="gboolean"/>
        </array>
      </field>
      <field name="right_buttons" writable="1">
        <array zero-terminated="0" c:type="MetaButtonFunction" fixed-size="5">
          <type name="ButtonFunction" c:type="MetaButtonFunction"/>
        </array>
      </field>
      <field name="right_buttons_has_spacer" writable="1">
        <array zero-terminated="0" c:type="gboolean" fixed-size="5">
          <type name="gboolean" c:type="gboolean"/>
        </array>
      </field>
    </record>
    <constant name="CURRENT_TIME" value="0" c:type="META_CURRENT_TIME">
      <type name="gint" c:type="gint"/>
    </constant>
    <interface name="CloseDialog"
               c:symbol-prefix="close_dialog"
               c:type="MetaCloseDialog"
               glib:type-name="MetaCloseDialog"
               glib:get-type="meta_close_dialog_get_type"
               glib:type-struct="CloseDialogInterface">
      <virtual-method name="focus" invoker="focus">
        <doc xml:space="preserve">Call whenever @dialog should receive keyboard focus,
usually when the window would.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="dialog" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaCloseDialog</doc>
            <type name="CloseDialog" c:type="MetaCloseDialog*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="hide" invoker="hide">
        <doc xml:space="preserve">Hides the close dialog.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="dialog" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaCloseDialog</doc>
            <type name="CloseDialog" c:type="MetaCloseDialog*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="show" invoker="show">
        <doc xml:space="preserve">Shows the close dialog.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="dialog" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaCloseDialog</doc>
            <type name="CloseDialog" c:type="MetaCloseDialog*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <method name="focus" c:identifier="meta_close_dialog_focus">
        <doc xml:space="preserve">Call whenever @dialog should receive keyboard focus,
usually when the window would.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="dialog" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaCloseDialog</doc>
            <type name="CloseDialog" c:type="MetaCloseDialog*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="hide" c:identifier="meta_close_dialog_hide">
        <doc xml:space="preserve">Hides the close dialog.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="dialog" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaCloseDialog</doc>
            <type name="CloseDialog" c:type="MetaCloseDialog*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_visible" c:identifier="meta_close_dialog_is_visible">
        <doc xml:space="preserve">Returns whether @dialog is currently visible.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#TRUE if @dialog is visible.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="dialog" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaCloseDialog</doc>
            <type name="CloseDialog" c:type="MetaCloseDialog*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="response" c:identifier="meta_close_dialog_response">
        <doc xml:space="preserve">Responds and closes the dialog. To be called by #MetaCloseDialog
implementations.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="dialog" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaCloseDialog</doc>
            <type name="CloseDialog" c:type="MetaCloseDialog*"/>
          </instance-parameter>
          <parameter name="response" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaCloseDialogResponse</doc>
            <type name="CloseDialogResponse" c:type="MetaCloseDialogResponse"/>
          </parameter>
        </parameters>
      </method>
      <method name="show" c:identifier="meta_close_dialog_show">
        <doc xml:space="preserve">Shows the close dialog.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="dialog" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaCloseDialog</doc>
            <type name="CloseDialog" c:type="MetaCloseDialog*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="window"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="Window"/>
      </property>
      <glib:signal name="response" when="last" action="1">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="CloseDialogResponse"/>
          </parameter>
        </parameters>
      </glib:signal>
    </interface>
    <record name="CloseDialogInterface"
            c:type="MetaCloseDialogInterface"
            glib:is-gtype-struct-for="CloseDialog">
      <field name="parent_iface">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="show">
        <callback name="show">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="dialog" transfer-ownership="none">
              <doc xml:space="preserve">a #MetaCloseDialog</doc>
              <type name="CloseDialog" c:type="MetaCloseDialog*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="hide">
        <callback name="hide">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="dialog" transfer-ownership="none">
              <doc xml:space="preserve">a #MetaCloseDialog</doc>
              <type name="CloseDialog" c:type="MetaCloseDialog*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="focus">
        <callback name="focus">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="dialog" transfer-ownership="none">
              <doc xml:space="preserve">a #MetaCloseDialog</doc>
              <type name="CloseDialog" c:type="MetaCloseDialog*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <enumeration name="CloseDialogResponse"
                 glib:type-name="MetaCloseDialogResponse"
                 glib:get-type="meta_close_dialog_response_get_type"
                 c:type="MetaCloseDialogResponse">
      <member name="wait"
              value="0"
              c:identifier="META_CLOSE_DIALOG_RESPONSE_WAIT"
              glib:nick="wait">
      </member>
      <member name="force_close"
              value="1"
              c:identifier="META_CLOSE_DIALOG_RESPONSE_FORCE_CLOSE"
              glib:nick="force-close">
      </member>
    </enumeration>
    <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="filter_keybinding"
              c:identifier="meta_compositor_filter_keybinding">
        <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="binding" transfer-ownership="none">
            <type name="KeyBinding" c:type="MetaKeyBinding*"/>
          </parameter>
        </parameters>
      </method>
      <method name="flash_display"
              c:identifier="meta_compositor_flash_display">
        <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="display" transfer-ownership="none">
            <type name="Display" c:type="MetaDisplay*"/>
          </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>
        </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" c:identifier="meta_compositor_manage">
        <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="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="queue_frame_drawn"
              c:identifier="meta_compositor_queue_frame_drawn">
        <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="no_delay_frame" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </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="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="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>
        </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="show_window_menu"
              c:identifier="meta_compositor_show_window_menu">
        <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="menu" transfer-ownership="none">
            <type name="WindowMenuType" c:type="MetaWindowMenuType"/>
          </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>
        </parameters>
      </method>
      <method name="show_window_menu_for_rect"
              c:identifier="meta_compositor_show_window_menu_for_rect">
        <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="menu" transfer-ownership="none">
            <type name="WindowMenuType" c:type="MetaWindowMenuType"/>
          </parameter>
          <parameter name="rect" transfer-ownership="none">
            <type name="Rectangle" c:type="MetaRectangle*"/>
          </parameter>
        </parameters>
      </method>
      <method name="size_change_window"
              c:identifier="meta_compositor_size_change_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="which_change" transfer-ownership="none">
            <type name="SizeChange" c:type="MetaSizeChange"/>
          </parameter>
          <parameter name="old_frame_rect" transfer-ownership="none">
            <type name="Rectangle" c:type="MetaRectangle*"/>
          </parameter>
          <parameter name="old_buffer_rect" transfer-ownership="none">
            <type name="Rectangle" c:type="MetaRectangle*"/>
          </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="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_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="stack" transfer-ownership="none">
            <type name="GLib.List" c:type="GList*">
              <type name="gpointer" c:type="gpointer"/>
            </type>
          </parameter>
        </parameters>
      </method>
      <method name="sync_updates_frozen"
              c:identifier="meta_compositor_sync_updates_frozen">
        <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="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>
          <parameter name="did_placement" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="unmanage" c:identifier="meta_compositor_unmanage">
        <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="window_opacity_changed"
              c:identifier="meta_compositor_window_opacity_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_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_surface_changed"
              c:identifier="meta_compositor_window_surface_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>
      <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="none"
              value="0"
              c:identifier="META_CURSOR_NONE"
              glib:nick="none">
      </member>
      <member name="default"
              value="1"
              c:identifier="META_CURSOR_DEFAULT"
              glib:nick="default">
        <doc xml:space="preserve">Default cursor</doc>
      </member>
      <member name="north_resize"
              value="2"
              c:identifier="META_CURSOR_NORTH_RESIZE"
              glib:nick="north-resize">
        <doc xml:space="preserve">Resize northern edge cursor</doc>
      </member>
      <member name="south_resize"
              value="3"
              c:identifier="META_CURSOR_SOUTH_RESIZE"
              glib:nick="south-resize">
        <doc xml:space="preserve">Resize southern edge cursor</doc>
      </member>
      <member name="west_resize"
              value="4"
              c:identifier="META_CURSOR_WEST_RESIZE"
              glib:nick="west-resize">
        <doc xml:space="preserve">Resize western edge cursor</doc>
      </member>
      <member name="east_resize"
              value="5"
              c:identifier="META_CURSOR_EAST_RESIZE"
              glib:nick="east-resize">
        <doc xml:space="preserve">Resize eastern edge cursor</doc>
      </member>
      <member name="se_resize"
              value="6"
              c:identifier="META_CURSOR_SE_RESIZE"
              glib:nick="se-resize">
        <doc xml:space="preserve">Resize south-eastern corner cursor</doc>
      </member>
      <member name="sw_resize"
              value="7"
              c:identifier="META_CURSOR_SW_RESIZE"
              glib:nick="sw-resize">
        <doc xml:space="preserve">Resize south-western corner cursor</doc>
      </member>
      <member name="ne_resize"
              value="8"
              c:identifier="META_CURSOR_NE_RESIZE"
              glib:nick="ne-resize">
        <doc xml:space="preserve">Resize north-eastern corner cursor</doc>
      </member>
      <member name="nw_resize"
              value="9"
              c:identifier="META_CURSOR_NW_RESIZE"
              glib:nick="nw-resize">
        <doc xml:space="preserve">Resize north-western corner cursor</doc>
      </member>
      <member name="move_or_resize_window"
              value="10"
              c:identifier="META_CURSOR_MOVE_OR_RESIZE_WINDOW"
              glib:nick="move-or-resize-window">
        <doc xml:space="preserve">Move or resize cursor</doc>
      </member>
      <member name="busy"
              value="11"
              c:identifier="META_CURSOR_BUSY"
              glib:nick="busy">
        <doc xml:space="preserve">Busy cursor</doc>
      </member>
      <member name="dnd_in_drag"
              value="12"
              c:identifier="META_CURSOR_DND_IN_DRAG"
              glib:nick="dnd-in-drag">
        <doc xml:space="preserve">DND in drag cursor</doc>
      </member>
      <member name="dnd_move"
              value="13"
              c:identifier="META_CURSOR_DND_MOVE"
              glib:nick="dnd-move">
        <doc xml:space="preserve">DND move cursor</doc>
      </member>
      <member name="dnd_copy"
              value="14"
              c:identifier="META_CURSOR_DND_COPY"
              glib:nick="dnd-copy">
        <doc xml:space="preserve">DND copy cursor</doc>
      </member>
      <member name="dnd_unsupported_target"
              value="15"
              c:identifier="META_CURSOR_DND_UNSUPPORTED_TARGET"
              glib:nick="dnd-unsupported-target">
        <doc xml:space="preserve">DND unsupported target</doc>
      </member>
      <member name="pointing_hand"
              value="16"
              c:identifier="META_CURSOR_POINTING_HAND"
              glib:nick="pointing-hand">
        <doc xml:space="preserve">pointing hand</doc>
      </member>
      <member name="crosshair"
              value="17"
              c:identifier="META_CURSOR_CROSSHAIR"
              glib:nick="crosshair">
        <doc xml:space="preserve">crosshair (action forbidden)</doc>
      </member>
      <member name="ibeam"
              value="18"
              c:identifier="META_CURSOR_IBEAM"
              glib:nick="ibeam">
        <doc xml:space="preserve">I-beam (text input)</doc>
      </member>
      <member name="last"
              value="19"
              c:identifier="META_CURSOR_LAST"
              glib:nick="last">
      </member>
    </enumeration>
    <class name="CursorTracker"
           c:symbol-prefix="cursor_tracker"
           c:type="MetaCursorTracker"
           parent="GObject.Object"
           glib:type-name="MetaCursorTracker"
           glib:get-type="meta_cursor_tracker_get_type"
           glib:type-struct="CursorTrackerClass">
      <function name="get_for_display"
                c:identifier="meta_cursor_tracker_get_for_display">
        <doc xml:space="preserve">Retrieves the cursor tracker object for @display.</doc>
        <return-value transfer-ownership="none">
          <type name="CursorTracker" c:type="MetaCursorTracker*"/>
        </return-value>
        <parameters>
          <parameter name="display" transfer-ownership="none">
            <doc xml:space="preserve">the #MetaDisplay</doc>
            <type name="Display" c:type="MetaDisplay*"/>
          </parameter>
        </parameters>
      </function>
      <method name="get_hot" c:identifier="meta_cursor_tracker_get_hot">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="tracker" transfer-ownership="none">
            <type name="CursorTracker" c:type="MetaCursorTracker*"/>
          </instance-parameter>
          <parameter name="x"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <type name="gint" c:type="int*"/>
          </parameter>
          <parameter name="y"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <type name="gint" c:type="int*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_pointer"
              c:identifier="meta_cursor_tracker_get_pointer">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="tracker" transfer-ownership="none">
            <type name="CursorTracker" c:type="MetaCursorTracker*"/>
          </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="mods" transfer-ownership="none">
            <type name="Clutter.ModifierType" c:type="ClutterModifierType*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_sprite" c:identifier="meta_cursor_tracker_get_sprite">
        <return-value transfer-ownership="none">
          <type name="Cogl.Texture" c:type="CoglTexture*"/>
        </return-value>
        <parameters>
          <instance-parameter name="tracker" transfer-ownership="none">
            <type name="CursorTracker" c:type="MetaCursorTracker*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_pointer_visible"
              c:identifier="meta_cursor_tracker_set_pointer_visible">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="tracker" transfer-ownership="none">
            <type name="CursorTracker" c:type="MetaCursorTracker*"/>
          </instance-parameter>
          <parameter name="visible" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <glib:signal name="cursor-changed" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="CursorTrackerClass"
            c:type="MetaCursorTrackerClass"
            disguised="1"
            glib:is-gtype-struct-for="CursorTracker">
    </record>
    <class name="DBusDisplayConfigSkeleton"
           c:symbol-prefix="dbus_display_config_skeleton"
           parent="Gio.DBusInterfaceSkeleton"
           glib:type-name="MetaDBusDisplayConfigSkeleton"
           glib:get-type="meta_dbus_display_config_skeleton_get_type">
      <doc xml:space="preserve">The #MetaDBusDisplayConfigSkeleton structure contains only private data and should only be accessed using the provided API.</doc>
      <implements name="Gio.DBusInterface"/>
    </class>
    <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">
        <doc xml:space="preserve">verbose logging</doc>
      </member>
      <member name="focus"
              value="1"
              c:identifier="META_DEBUG_FOCUS"
              glib:nick="focus">
        <doc xml:space="preserve">focus</doc>
      </member>
      <member name="workarea"
              value="2"
              c:identifier="META_DEBUG_WORKAREA"
              glib:nick="workarea">
        <doc xml:space="preserve">workarea</doc>
      </member>
      <member name="stack"
              value="4"
              c:identifier="META_DEBUG_STACK"
              glib:nick="stack">
        <doc xml:space="preserve">stack</doc>
      </member>
      <member name="themes"
              value="8"
              c:identifier="META_DEBUG_THEMES"
              glib:nick="themes">
        <doc xml:space="preserve">themes</doc>
      </member>
      <member name="sm" value="16" c:identifier="META_DEBUG_SM" glib:nick="sm">
        <doc xml:space="preserve">session management</doc>
      </member>
      <member name="events"
              value="32"
              c:identifier="META_DEBUG_EVENTS"
              glib:nick="events">
        <doc xml:space="preserve">events</doc>
      </member>
      <member name="window_state"
              value="64"
              c:identifier="META_DEBUG_WINDOW_STATE"
              glib:nick="window-state">
        <doc xml:space="preserve">window state</doc>
      </member>
      <member name="window_ops"
              value="128"
              c:identifier="META_DEBUG_WINDOW_OPS"
              glib:nick="window-ops">
        <doc xml:space="preserve">window operations</doc>
      </member>
      <member name="geometry"
              value="256"
              c:identifier="META_DEBUG_GEOMETRY"
              glib:nick="geometry">
        <doc xml:space="preserve">geometry</doc>
      </member>
      <member name="placement"
              value="512"
              c:identifier="META_DEBUG_PLACEMENT"
              glib:nick="placement">
        <doc xml:space="preserve">window placement</doc>
      </member>
      <member name="ping"
              value="1024"
              c:identifier="META_DEBUG_PING"
              glib:nick="ping">
        <doc xml:space="preserve">ping</doc>
      </member>
      <member name="xinerama"
              value="2048"
              c:identifier="META_DEBUG_XINERAMA"
              glib:nick="xinerama">
        <doc xml:space="preserve">Xinerama</doc>
      </member>
      <member name="keybindings"
              value="4096"
              c:identifier="META_DEBUG_KEYBINDINGS"
              glib:nick="keybindings">
        <doc xml:space="preserve">keybindings</doc>
      </member>
      <member name="sync"
              value="8192"
              c:identifier="META_DEBUG_SYNC"
              glib:nick="sync">
        <doc xml:space="preserve">sync</doc>
      </member>
      <member name="errors"
              value="16384"
              c:identifier="META_DEBUG_ERRORS"
              glib:nick="errors">
        <doc xml:space="preserve">errors</doc>
      </member>
      <member name="startup"
              value="32768"
              c:identifier="META_DEBUG_STARTUP"
              glib:nick="startup">
        <doc xml:space="preserve">startup</doc>
      </member>
      <member name="prefs"
              value="65536"
              c:identifier="META_DEBUG_PREFS"
              glib:nick="prefs">
        <doc xml:space="preserve">preferences</doc>
      </member>
      <member name="groups"
              value="131072"
              c:identifier="META_DEBUG_GROUPS"
              glib:nick="groups">
        <doc xml:space="preserve">groups</doc>
      </member>
      <member name="resizing"
              value="262144"
              c:identifier="META_DEBUG_RESIZING"
              glib:nick="resizing">
        <doc xml:space="preserve">resizing</doc>
      </member>
      <member name="shapes"
              value="524288"
              c:identifier="META_DEBUG_SHAPES"
              glib:nick="shapes">
        <doc xml:space="preserve">shapes</doc>
      </member>
      <member name="compositor"
              value="1048576"
              c:identifier="META_DEBUG_COMPOSITOR"
              glib:nick="compositor">
        <doc xml:space="preserve">compositor</doc>
      </member>
      <member name="edge_resistance"
              value="2097152"
              c:identifier="META_DEBUG_EDGE_RESISTANCE"
              glib:nick="edge-resistance">
        <doc xml:space="preserve">edge resistance</doc>
      </member>
      <member name="dbus"
              value="4194304"
              c:identifier="META_DEBUG_DBUS"
              glib:nick="dbus">
      </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">
        <doc xml:space="preserve">Left</doc>
      </member>
      <member name="right"
              value="2"
              c:identifier="META_DIRECTION_RIGHT"
              glib:nick="right">
        <doc xml:space="preserve">Right</doc>
      </member>
      <member name="top"
              value="4"
              c:identifier="META_DIRECTION_TOP"
              glib:nick="top">
        <doc xml:space="preserve">Top</doc>
      </member>
      <member name="bottom"
              value="8"
              c:identifier="META_DIRECTION_BOTTOM"
              glib:nick="bottom">
        <doc xml:space="preserve">Bottom</doc>
      </member>
      <member name="up"
              value="4"
              c:identifier="META_DIRECTION_UP"
              glib:nick="up">
        <doc xml:space="preserve">Up</doc>
      </member>
      <member name="down"
              value="8"
              c:identifier="META_DIRECTION_DOWN"
              glib:nick="down">
        <doc xml:space="preserve">Down</doc>
      </member>
      <member name="horizontal"
              value="3"
              c:identifier="META_DIRECTION_HORIZONTAL"
              glib:nick="horizontal">
        <doc xml:space="preserve">Horizontal</doc>
      </member>
      <member name="vertical"
              value="12"
              c:identifier="META_DIRECTION_VERTICAL"
              glib:nick="vertical">
        <doc xml:space="preserve">Vertical</doc>
      </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_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.

Use meta_display_remove_keybinding() to remove the binding.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the corresponding keybinding action if the keybinding was
         added successfully, otherwise %META_KEYBINDING_ACTION_NONE</doc>
          <type name="guint" c:type="guint"/>
        </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="settings" transfer-ownership="none">
            <doc xml:space="preserve">the #GSettings object where @name is stored</doc>
            <type name="Gio.Settings" c:type="GSettings*"/>
          </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"
                     nullable="1"
                     allow-none="1">
            <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="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="clear_mouse_mode"
              c:identifier="meta_display_clear_mouse_mode">
        <doc xml:space="preserve">Sets the mouse-mode flag to %FALSE, which means that motion events are
no longer ignored in mouse or sloppy focus.
This is an internal function. It should be used only for reimplementing
keybindings, and only in a manner compatible with core code.</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>
        </parameters>
      </method>
      <method name="close" c:identifier="meta_display_close">
        <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="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_default_window"
              c:identifier="meta_display_focus_default_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="timestamp" transfer-ownership="none">
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="freeze_keyboard"
              c:identifier="meta_display_freeze_keyboard">
        <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="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">
            <doc xml:space="preserve">a #MetaDisplay</doc>
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_current_monitor"
              c:identifier="meta_display_get_current_monitor">
        <doc xml:space="preserve">Gets the index of the monitor that currently has the mouse pointer.</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="display" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaDisplay</doc>
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-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_focus_window"
              c:identifier="meta_display_get_focus_window">
        <doc xml:space="preserve">Get our best guess as to the "currently" focused window (that is,
the window that we expect will be focused at the point when the X
server processes our next request).</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
Mutter doesn't currently have a grab. %META_GRAB_OP_COMPOSITOR will
be returned if a compositor-plugin modal operation is in effect
(See mutter_begin_modal_for_plugin())</doc>
          <type name="GrabOp" c:type="MetaGrabOp"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <doc xml:space="preserve">The #MetaDisplay that the window is on</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 keybinding action bound to @keycode. Builtin keybindings
have a fixed associated #MetaKeyBindingAction, for bindings added
dynamically the function will return the keybinding action
meta_display_add_keybinding() returns on registration.</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="guint" c:type="guint"/>
        </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_monitor_geometry"
              c:identifier="meta_display_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="display" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaDisplay</doc>
            <type name="Display" c:type="MetaDisplay*"/>
          </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_monitor_in_fullscreen"
              c:identifier="meta_display_get_monitor_in_fullscreen">
        <doc xml:space="preserve">Determines whether there is a fullscreen window obscuring the specified
monitor. If there is a fullscreen window, the desktop environment will
typically hide any controls that might obscure the fullscreen window.

You can get notification when this changes by connecting to
MetaDisplay::in-fullscreen-changed.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if there is a fullscreen window covering the specified monitor.</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="monitor" transfer-ownership="none">
            <doc xml:space="preserve">the monitor number</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_monitor_index_for_rect"
              c:identifier="meta_display_get_monitor_index_for_rect">
        <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>
          <parameter name="rect" transfer-ownership="none">
            <type name="Rectangle" c:type="MetaRectangle*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_monitor_neighbor_index"
              c:identifier="meta_display_get_monitor_neighbor_index">
        <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>
          <parameter name="which_monitor" transfer-ownership="none">
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="dir" transfer-ownership="none">
            <type name="DisplayDirection" c:type="MetaDisplayDirection"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_n_monitors" c:identifier="meta_display_get_n_monitors">
        <doc xml:space="preserve">Gets the number of monitors that are joined together to form @display.</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="display" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaDisplay</doc>
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_pad_action_label"
              c:identifier="meta_display_get_pad_action_label">
        <return-value transfer-ownership="full">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
          <parameter name="pad" transfer-ownership="none">
            <type name="Clutter.InputDevice" c:type="ClutterInputDevice*"/>
          </parameter>
          <parameter name="action_type" transfer-ownership="none">
            <type name="PadActionType" c:type="MetaPadActionType"/>
          </parameter>
          <parameter name="action_number" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_primary_monitor"
              c:identifier="meta_display_get_primary_monitor">
        <doc xml:space="preserve">Gets the index of the primary monitor on this @display.</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="display" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaDisplay</doc>
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_size" c:identifier="meta_display_get_size">
        <doc xml:space="preserve">Retrieve the size of the display.</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="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_display_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="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="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.
If @workspace is not %NULL, the list only conains windows that are on
@workspace or have the demands-attention hint set; otherwise it contains
all windows.</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="workspace"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <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="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_workspace_manager"
              c:identifier="meta_display_get_workspace_manager">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The workspace manager of the display</doc>
          <type name="WorkspaceManager" c:type="MetaWorkspaceManager*"/>
        </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_x11_display"
              c:identifier="meta_display_get_x11_display"
              introspectable="0">
        <return-value>
          <type name="X11Display" c:type="MetaX11Display*"/>
        </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="grab_accelerator"
              c:identifier="meta_display_grab_accelerator">
        <return-value transfer-ownership="none">
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
          <parameter name="accelerator" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_pointer_emulating_sequence"
              c:identifier="meta_display_is_pointer_emulating_sequence">
        <doc xml:space="preserve">Tells whether the event sequence is the used for pointer emulation
and single-touch interaction.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#TRUE if the sequence emulates pointer behavior</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <doc xml:space="preserve">the display</doc>
            <type name="Display" c:type="MetaDisplay*"/>
          </instance-parameter>
          <parameter name="sequence"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #ClutterEventSequence</doc>
            <type name="Clutter.EventSequence" c:type="ClutterEventSequence*"/>
          </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="request_pad_osd"
              c:identifier="meta_display_request_pad_osd">
        <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="pad" transfer-ownership="none">
            <type name="Clutter.InputDevice" c:type="ClutterInputDevice*"/>
          </parameter>
          <parameter name="edition_mode" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_cursor" c:identifier="meta_display_set_cursor">
        <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="cursor" transfer-ownership="none">
            <type name="Cursor" c:type="MetaCursor"/>
          </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="supports_extended_barriers"
              c:identifier="meta_display_supports_extended_barriers">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether pointer barriers can be supported.

When running as an X compositor the X server needs XInput 2
version 2.3. When running as a display server it is supported
when running on the native backend.

Clients should use this method to determine whether their
interfaces should depend on new barrier features.</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>
        </parameters>
      </method>
      <method name="unfreeze_keyboard"
              c:identifier="meta_display_unfreeze_keyboard">
        <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="ungrab_accelerator"
              c:identifier="meta_display_ungrab_accelerator">
        <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="action_id" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="ungrab_keyboard"
              c:identifier="meta_display_ungrab_keyboard">
        <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="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>
      <property name="focus-window" transfer-ownership="none">
        <type name="Window"/>
      </property>
      <glib:signal name="accelerator-activated" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="p0" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="p1" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="cursor-updated" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="gl-video-memory-purged" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <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="Display"/>
          </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="Display"/>
          </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="in-fullscreen-changed" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="modifiers-accelerator-activated" when="last">
        <doc xml:space="preserve">The ::modifiers-accelerator-activated signal will be emitted when
a special modifiers-only keybinding is activated.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE means that the keyboard device should remain
   frozen and %FALSE for the default behavior of unfreezing the
   keyboard.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </glib:signal>
      <glib:signal name="overlay-key" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="pad-mode-switch" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="Clutter.InputDevice"/>
          </parameter>
          <parameter name="p0" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="p1" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </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="restart" when="last">
        <doc xml:space="preserve">The ::restart signal is emitted to indicate that compositor
should reexec the process. This is
emitted when meta_restart() is called, either by Mutter
internally or by the embedding compositor. See also
::show-restart-message.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%FALSE to indicate that the compositor could not
 be restarted. When the compositor is restarted, the signal
 should not return.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </glib:signal>
      <glib:signal name="show-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>
          <parameter name="p0" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="p1" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="show-pad-osd" when="last">
        <doc xml:space="preserve">Requests the pad button mapping OSD to be shown.</doc>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve">The OSD actor</doc>
          <type name="Clutter.Actor"/>
        </return-value>
        <parameters>
          <parameter name="pad" transfer-ownership="none">
            <doc xml:space="preserve">the pad device</doc>
            <type name="Clutter.InputDevice"/>
          </parameter>
          <parameter name="settings" transfer-ownership="none">
            <doc xml:space="preserve">the pad device settings</doc>
            <type name="Gio.Settings"/>
          </parameter>
          <parameter name="layout_path" transfer-ownership="none">
            <doc xml:space="preserve">path to the layout image</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="edition_mode" transfer-ownership="none">
            <doc xml:space="preserve">Whether the OSD should be shown in edition mode</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="monitor_idx" transfer-ownership="none">
            <doc xml:space="preserve">Monitor to show the OSD on</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="show-resize-popup" when="last">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="p0" transfer-ownership="none">
            <type name="Rectangle"/>
          </parameter>
          <parameter name="p1" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="p2" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="show-restart-message" when="last">
        <doc xml:space="preserve">The ::show-restart-message signal will be emitted to indicate
that the compositor should show a message during restart. This is
emitted when meta_restart() is called, either by Mutter
internally or by the embedding compositor.  The message should be
immediately added to the Clutter stage in its final form -
::restart will be emitted to exit the application and leave the
stage contents frozen as soon as the the stage is painted again.

On case of failure to restart, this signal will be emitted again
with %NULL for @message.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE means the message was added to the stage; %FALSE
  indicates that the compositor did not show the message.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="message"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">The message to display, or %NULL
 to clear a previous restart message.</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="showing-desktop-changed" 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"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </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-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="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="workareas-changed" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="x11-display-closing" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="x11-display-opened" 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>
    <enumeration name="DisplayCorner"
                 glib:type-name="MetaDisplayCorner"
                 glib:get-type="meta_display_corner_get_type"
                 c:type="MetaDisplayCorner">
      <member name="topleft"
              value="0"
              c:identifier="META_DISPLAY_TOPLEFT"
              glib:nick="topleft">
        <doc xml:space="preserve">top-left corner</doc>
      </member>
      <member name="topright"
              value="1"
              c:identifier="META_DISPLAY_TOPRIGHT"
              glib:nick="topright">
        <doc xml:space="preserve">top-right corner</doc>
      </member>
      <member name="bottomleft"
              value="2"
              c:identifier="META_DISPLAY_BOTTOMLEFT"
              glib:nick="bottomleft">
        <doc xml:space="preserve">bottom-left corner</doc>
      </member>
      <member name="bottomright"
              value="3"
              c:identifier="META_DISPLAY_BOTTOMRIGHT"
              glib:nick="bottomright">
        <doc xml:space="preserve">bottom-right corner</doc>
      </member>
    </enumeration>
    <enumeration name="DisplayDirection"
                 glib:type-name="MetaDisplayDirection"
                 glib:get-type="meta_display_direction_get_type"
                 c:type="MetaDisplayDirection">
      <member name="up"
              value="0"
              c:identifier="META_DISPLAY_UP"
              glib:nick="up">
        <doc xml:space="preserve">up</doc>
      </member>
      <member name="down"
              value="1"
              c:identifier="META_DISPLAY_DOWN"
              glib:nick="down">
        <doc xml:space="preserve">down</doc>
      </member>
      <member name="left"
              value="2"
              c:identifier="META_DISPLAY_LEFT"
              glib:nick="left">
        <doc xml:space="preserve">left</doc>
      </member>
      <member name="right"
              value="3"
              c:identifier="META_DISPLAY_RIGHT"
              glib:nick="right">
        <doc xml:space="preserve">right</doc>
      </member>
    </enumeration>
    <class name="Dnd"
           c:symbol-prefix="dnd"
           c:type="MetaDnd"
           parent="GObject.Object"
           glib:type-name="MetaDnd"
           glib:get-type="meta_dnd_get_type"
           glib:type-struct="DndClass">
      <glib:signal name="dnd-enter" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="dnd-leave" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="dnd-position-change" 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>
        </parameters>
      </glib:signal>
    </class>
    <record name="DndClass"
            c:type="MetaDndClass"
            glib:is-gtype-struct-for="Dnd">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <record name="Edge" c:type="MetaEdge">
      <field name="rect" writable="1">
        <doc xml:space="preserve">#MetaRectangle with the bounds of the edge</doc>
        <type name="Rectangle" c:type="MetaRectangle"/>
      </field>
      <field name="side_type" writable="1">
        <doc xml:space="preserve">Side</doc>
        <type name="Side" c:type="MetaSide"/>
      </field>
      <field name="edge_type" writable="1">
        <doc xml:space="preserve">To what belongs the edge</doc>
        <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">
        <doc xml:space="preserve">Whether the edge belongs to a window</doc>
      </member>
      <member name="monitor"
              value="1"
              c:identifier="META_EDGE_MONITOR"
              glib:nick="monitor">
        <doc xml:space="preserve">Whether the edge belongs to a monitor</doc>
      </member>
      <member name="screen"
              value="2"
              c:identifier="META_EDGE_SCREEN"
              glib:nick="screen">
        <doc xml:space="preserve">Whether the edge belongs to a screen</doc>
      </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">
        <doc xml:space="preserve">Success</doc>
      </member>
      <member name="error"
              value="1"
              c:identifier="META_EXIT_ERROR"
              glib:nick="error">
        <doc xml:space="preserve">Error</doc>
      </member>
    </enumeration>
    <record name="Frame" c:type="MetaFrame" disguised="1">
    </record>
    <record name="FrameBorders" c:type="MetaFrameBorders">
      <field name="visible" writable="1">
        <doc xml:space="preserve">inner visible portion of frame border</doc>
        <type name="Gtk.Border" c:type="GtkBorder"/>
      </field>
      <field name="invisible" writable="1">
        <doc xml:space="preserve">outer invisible portion of frame border</doc>
        <type name="Gtk.Border" c:type="GtkBorder"/>
      </field>
      <field name="total" writable="1">
        <doc xml:space="preserve">sum of the two borders above</doc>
        <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">
        <doc xml:space="preserve">frame allows delete</doc>
      </member>
      <member name="allows_menu"
              value="2"
              c:identifier="META_FRAME_ALLOWS_MENU"
              glib:nick="allows-menu">
        <doc xml:space="preserve">frame allows menu</doc>
      </member>
      <member name="allows_appmenu"
              value="4"
              c:identifier="META_FRAME_ALLOWS_APPMENU"
              glib:nick="allows-appmenu">
        <doc xml:space="preserve">frame allows (fallback) app menu</doc>
      </member>
      <member name="allows_minimize"
              value="8"
              c:identifier="META_FRAME_ALLOWS_MINIMIZE"
              glib:nick="allows-minimize">
        <doc xml:space="preserve">frame allows minimize</doc>
      </member>
      <member name="allows_maximize"
              value="16"
              c:identifier="META_FRAME_ALLOWS_MAXIMIZE"
              glib:nick="allows-maximize">
        <doc xml:space="preserve">frame allows maximize</doc>
      </member>
      <member name="allows_vertical_resize"
              value="32"
              c:identifier="META_FRAME_ALLOWS_VERTICAL_RESIZE"
              glib:nick="allows-vertical-resize">
        <doc xml:space="preserve">frame allows vertical resize</doc>
      </member>
      <member name="allows_horizontal_resize"
              value="64"
              c:identifier="META_FRAME_ALLOWS_HORIZONTAL_RESIZE"
              glib:nick="allows-horizontal-resize">
        <doc xml:space="preserve">frame allows horizontal resize</doc>
      </member>
      <member name="has_focus"
              value="128"
              c:identifier="META_FRAME_HAS_FOCUS"
              glib:nick="has-focus">
        <doc xml:space="preserve">frame has focus</doc>
      </member>
      <member name="shaded"
              value="256"
              c:identifier="META_FRAME_SHADED"
              glib:nick="shaded">
        <doc xml:space="preserve">frame is shaded</doc>
      </member>
      <member name="stuck"
              value="512"
              c:identifier="META_FRAME_STUCK"
              glib:nick="stuck">
        <doc xml:space="preserve">frame is stuck</doc>
      </member>
      <member name="maximized"
              value="1024"
              c:identifier="META_FRAME_MAXIMIZED"
              glib:nick="maximized">
        <doc xml:space="preserve">frame is maximized</doc>
      </member>
      <member name="allows_shade"
              value="2048"
              c:identifier="META_FRAME_ALLOWS_SHADE"
              glib:nick="allows-shade">
        <doc xml:space="preserve">frame allows shade</doc>
      </member>
      <member name="allows_move"
              value="4096"
              c:identifier="META_FRAME_ALLOWS_MOVE"
              glib:nick="allows-move">
        <doc xml:space="preserve">frame allows move</doc>
      </member>
      <member name="fullscreen"
              value="8192"
              c:identifier="META_FRAME_FULLSCREEN"
              glib:nick="fullscreen">
        <doc xml:space="preserve">frame allows fullscreen</doc>
      </member>
      <member name="is_flashing"
              value="16384"
              c:identifier="META_FRAME_IS_FLASHING"
              glib:nick="is-flashing">
        <doc xml:space="preserve">frame is flashing</doc>
      </member>
      <member name="above"
              value="32768"
              c:identifier="META_FRAME_ABOVE"
              glib:nick="above">
        <doc xml:space="preserve">frame is above</doc>
      </member>
      <member name="tiled_left"
              value="65536"
              c:identifier="META_FRAME_TILED_LEFT"
              glib:nick="tiled-left">
        <doc xml:space="preserve">frame is tiled to the left</doc>
      </member>
      <member name="tiled_right"
              value="131072"
              c:identifier="META_FRAME_TILED_RIGHT"
              glib:nick="tiled-right">
        <doc xml:space="preserve">frame is tiled to the right</doc>
      </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">
        <doc xml:space="preserve">Normal frame</doc>
      </member>
      <member name="dialog"
              value="1"
              c:identifier="META_FRAME_TYPE_DIALOG"
              glib:nick="dialog">
        <doc xml:space="preserve">Dialog frame</doc>
      </member>
      <member name="modal_dialog"
              value="2"
              c:identifier="META_FRAME_TYPE_MODAL_DIALOG"
              glib:nick="modal-dialog">
        <doc xml:space="preserve">Modal dialog frame</doc>
      </member>
      <member name="utility"
              value="3"
              c:identifier="META_FRAME_TYPE_UTILITY"
              glib:nick="utility">
        <doc xml:space="preserve">Utility frame</doc>
      </member>
      <member name="menu"
              value="4"
              c:identifier="META_FRAME_TYPE_MENU"
              glib:nick="menu">
        <doc xml:space="preserve">Menu frame</doc>
      </member>
      <member name="border"
              value="5"
              c:identifier="META_FRAME_TYPE_BORDER"
              glib:nick="border">
        <doc xml:space="preserve">Border frame</doc>
      </member>
      <member name="attached"
              value="6"
              c:identifier="META_FRAME_TYPE_ATTACHED"
              glib:nick="attached">
        <doc xml:space="preserve">Attached frame</doc>
      </member>
      <member name="last"
              value="7"
              c:identifier="META_FRAME_TYPE_LAST"
              glib:nick="last">
        <doc xml:space="preserve">Marks the end of the #MetaFrameType enumeration</doc>
      </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">
            <doc xml:space="preserve">a #MetaFrameType</doc>
            <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">
        <doc xml:space="preserve">None</doc>
      </member>
      <member name="window_base"
              value="1"
              c:identifier="META_GRAB_OP_WINDOW_BASE"
              glib:nick="window-base">
      </member>
      <member name="compositor"
              value="2"
              c:identifier="META_GRAB_OP_COMPOSITOR"
              glib:nick="compositor">
        <doc xml:space="preserve">Compositor asked for grab</doc>
      </member>
      <member name="wayland_popup"
              value="3"
              c:identifier="META_GRAB_OP_WAYLAND_POPUP"
              glib:nick="wayland-popup">
      </member>
      <member name="frame_button"
              value="4"
              c:identifier="META_GRAB_OP_FRAME_BUTTON"
              glib:nick="frame-button">
      </member>
      <member name="moving"
              value="1"
              c:identifier="META_GRAB_OP_MOVING"
              glib:nick="moving">
        <doc xml:space="preserve">Moving with pointer</doc>
      </member>
      <member name="resizing_nw"
              value="36865"
              c:identifier="META_GRAB_OP_RESIZING_NW"
              glib:nick="resizing-nw">
        <doc xml:space="preserve">Resizing NW with pointer</doc>
      </member>
      <member name="resizing_n"
              value="32769"
              c:identifier="META_GRAB_OP_RESIZING_N"
              glib:nick="resizing-n">
        <doc xml:space="preserve">Resizing N with pointer</doc>
      </member>
      <member name="resizing_ne"
              value="40961"
              c:identifier="META_GRAB_OP_RESIZING_NE"
              glib:nick="resizing-ne">
        <doc xml:space="preserve">Resizing NE with pointer</doc>
      </member>
      <member name="resizing_e"
              value="8193"
              c:identifier="META_GRAB_OP_RESIZING_E"
              glib:nick="resizing-e">
        <doc xml:space="preserve">Resizing E with pointer</doc>
      </member>
      <member name="resizing_sw"
              value="20481"
              c:identifier="META_GRAB_OP_RESIZING_SW"
              glib:nick="resizing-sw">
        <doc xml:space="preserve">Resizing SW with pointer</doc>
      </member>
      <member name="resizing_s"
              value="16385"
              c:identifier="META_GRAB_OP_RESIZING_S"
              glib:nick="resizing-s">
        <doc xml:space="preserve">Resizing S with pointer</doc>
      </member>
      <member name="resizing_se"
              value="24577"
              c:identifier="META_GRAB_OP_RESIZING_SE"
              glib:nick="resizing-se">
        <doc xml:space="preserve">Resizing SE with pointer</doc>
      </member>
      <member name="resizing_w"
              value="4097"
              c:identifier="META_GRAB_OP_RESIZING_W"
              glib:nick="resizing-w">
        <doc xml:space="preserve">Resizing W with pointer</doc>
      </member>
      <member name="keyboard_moving"
              value="257"
              c:identifier="META_GRAB_OP_KEYBOARD_MOVING"
              glib:nick="keyboard-moving">
        <doc xml:space="preserve">Moving with keyboard</doc>
      </member>
      <member name="keyboard_resizing_unknown"
              value="769"
              c:identifier="META_GRAB_OP_KEYBOARD_RESIZING_UNKNOWN"
              glib:nick="keyboard-resizing-unknown">
        <doc xml:space="preserve">Resizing with keyboard</doc>
      </member>
      <member name="keyboard_resizing_nw"
              value="37121"
              c:identifier="META_GRAB_OP_KEYBOARD_RESIZING_NW"
              glib:nick="keyboard-resizing-nw">
        <doc xml:space="preserve">Resizing NS with keyboard</doc>
      </member>
      <member name="keyboard_resizing_n"
              value="33025"
              c:identifier="META_GRAB_OP_KEYBOARD_RESIZING_N"
              glib:nick="keyboard-resizing-n">
        <doc xml:space="preserve">Resizing N with keyboard</doc>
      </member>
      <member name="keyboard_resizing_ne"
              value="41217"
              c:identifier="META_GRAB_OP_KEYBOARD_RESIZING_NE"
              glib:nick="keyboard-resizing-ne">
        <doc xml:space="preserve">Resizing NE with keyboard</doc>
      </member>
      <member name="keyboard_resizing_e"
              value="8449"
              c:identifier="META_GRAB_OP_KEYBOARD_RESIZING_E"
              glib:nick="keyboard-resizing-e">
        <doc xml:space="preserve">Resizing E with keyboard</doc>
      </member>
      <member name="keyboard_resizing_sw"
              value="20737"
              c:identifier="META_GRAB_OP_KEYBOARD_RESIZING_SW"
              glib:nick="keyboard-resizing-sw">
        <doc xml:space="preserve">Resizing SW with keyboard</doc>
      </member>
      <member name="keyboard_resizing_s"
              value="16641"
              c:identifier="META_GRAB_OP_KEYBOARD_RESIZING_S"
              glib:nick="keyboard-resizing-s">
        <doc xml:space="preserve">Resizing S with keyboard</doc>
      </member>
      <member name="keyboard_resizing_se"
              value="24833"
              c:identifier="META_GRAB_OP_KEYBOARD_RESIZING_SE"
              glib:nick="keyboard-resizing-se">
        <doc xml:space="preserve">Resizing SE with keyboard</doc>
      </member>
      <member name="keyboard_resizing_w"
              value="4353"
              c:identifier="META_GRAB_OP_KEYBOARD_RESIZING_W"
              glib:nick="keyboard-resizing-w">
        <doc xml:space="preserve">Resizing W with keyboard</doc>
      </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">
            <doc xml:space="preserve">a #MetaGroup</doc>
            <type name="Group" c:type="MetaGroup*"/>
          </instance-parameter>
          <parameter name="event" transfer-ownership="none">
            <doc xml:space="preserve">a X event</doc>
            <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="96" c:type="META_ICON_HEIGHT">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="ICON_WIDTH" value="96" c:type="META_ICON_WIDTH">
      <type name="gint" c:type="gint"/>
    </constant>
    <class name="IdleMonitor"
           c:symbol-prefix="idle_monitor"
           c:type="MetaIdleMonitor"
           parent="GObject.Object"
           glib:type-name="MetaIdleMonitor"
           glib:get-type="meta_idle_monitor_get_type"
           glib:type-struct="IdleMonitorClass">
      <function name="get_core" c:identifier="meta_idle_monitor_get_core">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the #MetaIdleMonitor that tracks the server-global
idletime for all devices. To track device-specific idletime,
use meta_idle_monitor_get_for_device().</doc>
          <type name="IdleMonitor" c:type="MetaIdleMonitor*"/>
        </return-value>
      </function>
      <function name="get_for_device"
                c:identifier="meta_idle_monitor_get_for_device">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a new #MetaIdleMonitor that tracks the
device-specific idletime for @device. To track server-global idletime
for all devices, use meta_idle_monitor_get_core().</doc>
          <type name="IdleMonitor" c:type="MetaIdleMonitor*"/>
        </return-value>
        <parameters>
          <parameter name="device_id" transfer-ownership="none">
            <doc xml:space="preserve">the device to get the idle time for.</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </function>
      <method name="add_idle_watch"
              c:identifier="meta_idle_monitor_add_idle_watch">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a watch id

Adds a watch for a specific idle time. The callback will be called
when the user has accumulated @interval_msec milliseconds of idle time.
This function will return an ID that can either be passed to
meta_idle_monitor_remove_watch(), or can be used to tell idle time
watches apart if you have more than one.

Also note that this function will only care about positive transitions
(user's idle time exceeding a certain time). If you want to know about
when the user has become active, use
meta_idle_monitor_add_user_active_watch().</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="monitor" transfer-ownership="none">
            <doc xml:space="preserve">A #MetaIdleMonitor</doc>
            <type name="IdleMonitor" c:type="MetaIdleMonitor*"/>
          </instance-parameter>
          <parameter name="interval_msec" transfer-ownership="none">
            <doc xml:space="preserve">The idletime interval, in milliseconds</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="notified"
                     closure="2"
                     destroy="3">
            <doc xml:space="preserve">The callback to call when the user has
    accumulated @interval_msec milliseconds of idle time.</doc>
            <type name="IdleMonitorWatchFunc"
                  c:type="MetaIdleMonitorWatchFunc"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">The user 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">A #GDestroyNotify</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_user_active_watch"
              c:identifier="meta_idle_monitor_add_user_active_watch">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a watch id

Add a one-time watch to know when the user is active again.
Note that this watch is one-time and will de-activate after the
function is called, for efficiency purposes. It's most convenient
to call this when an idle watch, as added by
meta_idle_monitor_add_idle_watch(), has triggered.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="monitor" transfer-ownership="none">
            <doc xml:space="preserve">A #MetaIdleMonitor</doc>
            <type name="IdleMonitor" c:type="MetaIdleMonitor*"/>
          </instance-parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="notified"
                     closure="1"
                     destroy="2">
            <doc xml:space="preserve">The callback to call when the user is
    active again.</doc>
            <type name="IdleMonitorWatchFunc"
                  c:type="MetaIdleMonitorWatchFunc"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">The user 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">A #GDestroyNotify</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_idletime"
              c:identifier="meta_idle_monitor_get_idletime">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The current idle time, in milliseconds, or -1 for not supported</doc>
          <type name="gint64" c:type="gint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="monitor" transfer-ownership="none">
            <doc xml:space="preserve">A #MetaIdleMonitor</doc>
            <type name="IdleMonitor" c:type="MetaIdleMonitor*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="remove_watch"
              c:identifier="meta_idle_monitor_remove_watch">
        <doc xml:space="preserve">Removes an idle time watcher, previously added by
meta_idle_monitor_add_idle_watch() or
meta_idle_monitor_add_user_active_watch().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="monitor" transfer-ownership="none">
            <doc xml:space="preserve">A #MetaIdleMonitor</doc>
            <type name="IdleMonitor" c:type="MetaIdleMonitor*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve">A watch ID</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <property name="device-id"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="gint" c:type="gint"/>
      </property>
    </class>
    <record name="IdleMonitorClass"
            c:type="MetaIdleMonitorClass"
            disguised="1"
            glib:is-gtype-struct-for="IdleMonitor">
    </record>
    <callback name="IdleMonitorWatchFunc" c:type="MetaIdleMonitorWatchFunc">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="monitor" transfer-ownership="none">
          <type name="IdleMonitor" c:type="MetaIdleMonitor*"/>
        </parameter>
        <parameter name="watch_id" transfer-ownership="none">
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="2">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <interface name="InhibitShortcutsDialog"
               c:symbol-prefix="inhibit_shortcuts_dialog"
               c:type="MetaInhibitShortcutsDialog"
               glib:type-name="MetaInhibitShortcutsDialog"
               glib:get-type="meta_inhibit_shortcuts_dialog_get_type"
               glib:type-struct="InhibitShortcutsDialogInterface">
      <virtual-method name="hide" invoker="hide">
        <doc xml:space="preserve">Hides the inhibit shortcuts dialog.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="dialog" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaInhibitShortcutsDialog</doc>
            <type name="InhibitShortcutsDialog"
                  c:type="MetaInhibitShortcutsDialog*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="show" invoker="show">
        <doc xml:space="preserve">Shows the inhibit shortcuts dialog.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="dialog" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaInhibitShortcutsDialog</doc>
            <type name="InhibitShortcutsDialog"
                  c:type="MetaInhibitShortcutsDialog*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <method name="hide" c:identifier="meta_inhibit_shortcuts_dialog_hide">
        <doc xml:space="preserve">Hides the inhibit shortcuts dialog.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="dialog" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaInhibitShortcutsDialog</doc>
            <type name="InhibitShortcutsDialog"
                  c:type="MetaInhibitShortcutsDialog*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="response"
              c:identifier="meta_inhibit_shortcuts_dialog_response">
        <doc xml:space="preserve">Responds and closes the dialog. To be called by #MetaInhibitShortcutsDialog
implementations.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="dialog" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaInhibitShortcutsDialog</doc>
            <type name="InhibitShortcutsDialog"
                  c:type="MetaInhibitShortcutsDialog*"/>
          </instance-parameter>
          <parameter name="response" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaInhibitShortcutsDialogResponse</doc>
            <type name="InhibitShortcutsDialogResponse"
                  c:type="MetaInhibitShortcutsDialogResponse"/>
          </parameter>
        </parameters>
      </method>
      <method name="show" c:identifier="meta_inhibit_shortcuts_dialog_show">
        <doc xml:space="preserve">Shows the inhibit shortcuts dialog.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="dialog" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaInhibitShortcutsDialog</doc>
            <type name="InhibitShortcutsDialog"
                  c:type="MetaInhibitShortcutsDialog*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="window"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="Window"/>
      </property>
      <glib:signal name="response" when="last" action="1">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="InhibitShortcutsDialogResponse"/>
          </parameter>
        </parameters>
      </glib:signal>
    </interface>
    <record name="InhibitShortcutsDialogInterface"
            c:type="MetaInhibitShortcutsDialogInterface"
            glib:is-gtype-struct-for="InhibitShortcutsDialog">
      <field name="parent_iface">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="show">
        <callback name="show">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="dialog" transfer-ownership="none">
              <doc xml:space="preserve">a #MetaInhibitShortcutsDialog</doc>
              <type name="InhibitShortcutsDialog"
                    c:type="MetaInhibitShortcutsDialog*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="hide">
        <callback name="hide">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="dialog" transfer-ownership="none">
              <doc xml:space="preserve">a #MetaInhibitShortcutsDialog</doc>
              <type name="InhibitShortcutsDialog"
                    c:type="MetaInhibitShortcutsDialog*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <enumeration name="InhibitShortcutsDialogResponse"
                 glib:type-name="MetaInhibitShortcutsDialogResponse"
                 glib:get-type="meta_inhibit_shortcuts_dialog_response_get_type"
                 c:type="MetaInhibitShortcutsDialogResponse">
      <member name="allow"
              value="0"
              c:identifier="META_INHIBIT_SHORTCUTS_DIALOG_RESPONSE_ALLOW"
              glib:nick="allow">
      </member>
      <member name="deny"
              value="1"
              c:identifier="META_INHIBIT_SHORTCUTS_DIALOG_RESPONSE_DENY"
              glib:nick="deny">
      </member>
    </enumeration>
    <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>
      <method name="is_builtin" c:identifier="meta_key_binding_is_builtin">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="binding" transfer-ownership="none">
            <type name="KeyBinding" c:type="MetaKeyBinding*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_reversed" c:identifier="meta_key_binding_is_reversed">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </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="0"
              c:identifier="META_KEYBINDING_ACTION_NONE"
              glib:nick="none">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="workspace_1"
              value="1"
              c:identifier="META_KEYBINDING_ACTION_WORKSPACE_1"
              glib:nick="workspace-1">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="workspace_2"
              value="2"
              c:identifier="META_KEYBINDING_ACTION_WORKSPACE_2"
              glib:nick="workspace-2">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="workspace_3"
              value="3"
              c:identifier="META_KEYBINDING_ACTION_WORKSPACE_3"
              glib:nick="workspace-3">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="workspace_4"
              value="4"
              c:identifier="META_KEYBINDING_ACTION_WORKSPACE_4"
              glib:nick="workspace-4">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="workspace_5"
              value="5"
              c:identifier="META_KEYBINDING_ACTION_WORKSPACE_5"
              glib:nick="workspace-5">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="workspace_6"
              value="6"
              c:identifier="META_KEYBINDING_ACTION_WORKSPACE_6"
              glib:nick="workspace-6">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="workspace_7"
              value="7"
              c:identifier="META_KEYBINDING_ACTION_WORKSPACE_7"
              glib:nick="workspace-7">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="workspace_8"
              value="8"
              c:identifier="META_KEYBINDING_ACTION_WORKSPACE_8"
              glib:nick="workspace-8">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="workspace_9"
              value="9"
              c:identifier="META_KEYBINDING_ACTION_WORKSPACE_9"
              glib:nick="workspace-9">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="workspace_10"
              value="10"
              c:identifier="META_KEYBINDING_ACTION_WORKSPACE_10"
              glib:nick="workspace-10">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="workspace_11"
              value="11"
              c:identifier="META_KEYBINDING_ACTION_WORKSPACE_11"
              glib:nick="workspace-11">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="workspace_12"
              value="12"
              c:identifier="META_KEYBINDING_ACTION_WORKSPACE_12"
              glib:nick="workspace-12">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="workspace_left"
              value="13"
              c:identifier="META_KEYBINDING_ACTION_WORKSPACE_LEFT"
              glib:nick="workspace-left">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="workspace_right"
              value="14"
              c:identifier="META_KEYBINDING_ACTION_WORKSPACE_RIGHT"
              glib:nick="workspace-right">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="workspace_up"
              value="15"
              c:identifier="META_KEYBINDING_ACTION_WORKSPACE_UP"
              glib:nick="workspace-up">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="workspace_down"
              value="16"
              c:identifier="META_KEYBINDING_ACTION_WORKSPACE_DOWN"
              glib:nick="workspace-down">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="workspace_last"
              value="17"
              c:identifier="META_KEYBINDING_ACTION_WORKSPACE_LAST"
              glib:nick="workspace-last">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="switch_applications"
              value="18"
              c:identifier="META_KEYBINDING_ACTION_SWITCH_APPLICATIONS"
              glib:nick="switch-applications">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="switch_applications_backward"
              value="19"
              c:identifier="META_KEYBINDING_ACTION_SWITCH_APPLICATIONS_BACKWARD"
              glib:nick="switch-applications-backward">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="switch_group"
              value="20"
              c:identifier="META_KEYBINDING_ACTION_SWITCH_GROUP"
              glib:nick="switch-group">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="switch_group_backward"
              value="21"
              c:identifier="META_KEYBINDING_ACTION_SWITCH_GROUP_BACKWARD"
              glib:nick="switch-group-backward">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="switch_windows"
              value="22"
              c:identifier="META_KEYBINDING_ACTION_SWITCH_WINDOWS"
              glib:nick="switch-windows">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="switch_windows_backward"
              value="23"
              c:identifier="META_KEYBINDING_ACTION_SWITCH_WINDOWS_BACKWARD"
              glib:nick="switch-windows-backward">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="switch_panels"
              value="24"
              c:identifier="META_KEYBINDING_ACTION_SWITCH_PANELS"
              glib:nick="switch-panels">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="switch_panels_backward"
              value="25"
              c:identifier="META_KEYBINDING_ACTION_SWITCH_PANELS_BACKWARD"
              glib:nick="switch-panels-backward">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="cycle_group"
              value="26"
              c:identifier="META_KEYBINDING_ACTION_CYCLE_GROUP"
              glib:nick="cycle-group">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="cycle_group_backward"
              value="27"
              c:identifier="META_KEYBINDING_ACTION_CYCLE_GROUP_BACKWARD"
              glib:nick="cycle-group-backward">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="cycle_windows"
              value="28"
              c:identifier="META_KEYBINDING_ACTION_CYCLE_WINDOWS"
              glib:nick="cycle-windows">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="cycle_windows_backward"
              value="29"
              c:identifier="META_KEYBINDING_ACTION_CYCLE_WINDOWS_BACKWARD"
              glib:nick="cycle-windows-backward">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="cycle_panels"
              value="30"
              c:identifier="META_KEYBINDING_ACTION_CYCLE_PANELS"
              glib:nick="cycle-panels">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="cycle_panels_backward"
              value="31"
              c:identifier="META_KEYBINDING_ACTION_CYCLE_PANELS_BACKWARD"
              glib:nick="cycle-panels-backward">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="show_desktop"
              value="32"
              c:identifier="META_KEYBINDING_ACTION_SHOW_DESKTOP"
              glib:nick="show-desktop">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="panel_main_menu"
              value="33"
              c:identifier="META_KEYBINDING_ACTION_PANEL_MAIN_MENU"
              glib:nick="panel-main-menu">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="panel_run_dialog"
              value="34"
              c:identifier="META_KEYBINDING_ACTION_PANEL_RUN_DIALOG"
              glib:nick="panel-run-dialog">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="toggle_recording"
              value="35"
              c:identifier="META_KEYBINDING_ACTION_TOGGLE_RECORDING"
              glib:nick="toggle-recording">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="set_spew_mark"
              value="36"
              c:identifier="META_KEYBINDING_ACTION_SET_SPEW_MARK"
              glib:nick="set-spew-mark">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="activate_window_menu"
              value="37"
              c:identifier="META_KEYBINDING_ACTION_ACTIVATE_WINDOW_MENU"
              glib:nick="activate-window-menu">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="toggle_fullscreen"
              value="38"
              c:identifier="META_KEYBINDING_ACTION_TOGGLE_FULLSCREEN"
              glib:nick="toggle-fullscreen">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="toggle_maximized"
              value="39"
              c:identifier="META_KEYBINDING_ACTION_TOGGLE_MAXIMIZED"
              glib:nick="toggle-maximized">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="toggle_tiled_left"
              value="40"
              c:identifier="META_KEYBINDING_ACTION_TOGGLE_TILED_LEFT"
              glib:nick="toggle-tiled-left">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="toggle_tiled_right"
              value="41"
              c:identifier="META_KEYBINDING_ACTION_TOGGLE_TILED_RIGHT"
              glib:nick="toggle-tiled-right">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="toggle_above"
              value="42"
              c:identifier="META_KEYBINDING_ACTION_TOGGLE_ABOVE"
              glib:nick="toggle-above">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="maximize"
              value="43"
              c:identifier="META_KEYBINDING_ACTION_MAXIMIZE"
              glib:nick="maximize">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="unmaximize"
              value="44"
              c:identifier="META_KEYBINDING_ACTION_UNMAXIMIZE"
              glib:nick="unmaximize">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="toggle_shaded"
              value="45"
              c:identifier="META_KEYBINDING_ACTION_TOGGLE_SHADED"
              glib:nick="toggle-shaded">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="minimize"
              value="46"
              c:identifier="META_KEYBINDING_ACTION_MINIMIZE"
              glib:nick="minimize">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="close"
              value="47"
              c:identifier="META_KEYBINDING_ACTION_CLOSE"
              glib:nick="close">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="begin_move"
              value="48"
              c:identifier="META_KEYBINDING_ACTION_BEGIN_MOVE"
              glib:nick="begin-move">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="begin_resize"
              value="49"
              c:identifier="META_KEYBINDING_ACTION_BEGIN_RESIZE"
              glib:nick="begin-resize">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="toggle_on_all_workspaces"
              value="50"
              c:identifier="META_KEYBINDING_ACTION_TOGGLE_ON_ALL_WORKSPACES"
              glib:nick="toggle-on-all-workspaces">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="move_to_workspace_1"
              value="51"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_1"
              glib:nick="move-to-workspace-1">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="move_to_workspace_2"
              value="52"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_2"
              glib:nick="move-to-workspace-2">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="move_to_workspace_3"
              value="53"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_3"
              glib:nick="move-to-workspace-3">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="move_to_workspace_4"
              value="54"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_4"
              glib:nick="move-to-workspace-4">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="move_to_workspace_5"
              value="55"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_5"
              glib:nick="move-to-workspace-5">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="move_to_workspace_6"
              value="56"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_6"
              glib:nick="move-to-workspace-6">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="move_to_workspace_7"
              value="57"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_7"
              glib:nick="move-to-workspace-7">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="move_to_workspace_8"
              value="58"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_8"
              glib:nick="move-to-workspace-8">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="move_to_workspace_9"
              value="59"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_9"
              glib:nick="move-to-workspace-9">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="move_to_workspace_10"
              value="60"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_10"
              glib:nick="move-to-workspace-10">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="move_to_workspace_11"
              value="61"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_11"
              glib:nick="move-to-workspace-11">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="move_to_workspace_12"
              value="62"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_12"
              glib:nick="move-to-workspace-12">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="move_to_workspace_left"
              value="63"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_LEFT"
              glib:nick="move-to-workspace-left">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="move_to_workspace_right"
              value="64"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_RIGHT"
              glib:nick="move-to-workspace-right">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="move_to_workspace_up"
              value="65"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_UP"
              glib:nick="move-to-workspace-up">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="move_to_workspace_down"
              value="66"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_DOWN"
              glib:nick="move-to-workspace-down">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="move_to_workspace_last"
              value="67"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_LAST"
              glib:nick="move-to-workspace-last">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="move_to_monitor_left"
              value="68"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_MONITOR_LEFT"
              glib:nick="move-to-monitor-left">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="move_to_monitor_right"
              value="69"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_MONITOR_RIGHT"
              glib:nick="move-to-monitor-right">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="move_to_monitor_up"
              value="70"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_MONITOR_UP"
              glib:nick="move-to-monitor-up">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="move_to_monitor_down"
              value="71"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_MONITOR_DOWN"
              glib:nick="move-to-monitor-down">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="raise_or_lower"
              value="72"
              c:identifier="META_KEYBINDING_ACTION_RAISE_OR_LOWER"
              glib:nick="raise-or-lower">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="raise"
              value="73"
              c:identifier="META_KEYBINDING_ACTION_RAISE"
              glib:nick="raise">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="lower"
              value="74"
              c:identifier="META_KEYBINDING_ACTION_LOWER"
              glib:nick="lower">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="maximize_vertically"
              value="75"
              c:identifier="META_KEYBINDING_ACTION_MAXIMIZE_VERTICALLY"
              glib:nick="maximize-vertically">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="maximize_horizontally"
              value="76"
              c:identifier="META_KEYBINDING_ACTION_MAXIMIZE_HORIZONTALLY"
              glib:nick="maximize-horizontally">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="move_to_corner_nw"
              value="77"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_CORNER_NW"
              glib:nick="move-to-corner-nw">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="move_to_corner_ne"
              value="78"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_CORNER_NE"
              glib:nick="move-to-corner-ne">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="move_to_corner_sw"
              value="79"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_CORNER_SW"
              glib:nick="move-to-corner-sw">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="move_to_corner_se"
              value="80"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_CORNER_SE"
              glib:nick="move-to-corner-se">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="move_to_side_n"
              value="81"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_SIDE_N"
              glib:nick="move-to-side-n">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="move_to_side_s"
              value="82"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_SIDE_S"
              glib:nick="move-to-side-s">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="move_to_side_e"
              value="83"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_SIDE_E"
              glib:nick="move-to-side-e">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="move_to_side_w"
              value="84"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_SIDE_W"
              glib:nick="move-to-side-w">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="move_to_center"
              value="85"
              c:identifier="META_KEYBINDING_ACTION_MOVE_TO_CENTER"
              glib:nick="move-to-center">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="overlay_key"
              value="86"
              c:identifier="META_KEYBINDING_ACTION_OVERLAY_KEY"
              glib:nick="overlay-key">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="iso_next_group"
              value="87"
              c:identifier="META_KEYBINDING_ACTION_ISO_NEXT_GROUP"
              glib:nick="iso-next-group">
      </member>
      <member name="always_on_top"
              value="88"
              c:identifier="META_KEYBINDING_ACTION_ALWAYS_ON_TOP"
              glib:nick="always-on-top">
        <doc xml:space="preserve">FILLME</doc>
      </member>
      <member name="switch_monitor"
              value="89"
              c:identifier="META_KEYBINDING_ACTION_SWITCH_MONITOR"
              glib:nick="switch-monitor">
      </member>
      <member name="rotate_monitor"
              value="90"
              c:identifier="META_KEYBINDING_ACTION_ROTATE_MONITOR"
              glib:nick="rotate-monitor">
      </member>
      <member name="last"
              value="91"
              c:identifier="META_KEYBINDING_ACTION_LAST"
              glib:nick="last">
        <doc xml:space="preserve">FILLME</doc>
      </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">
        <doc xml:space="preserve">none</doc>
      </member>
      <member name="per_window"
              value="1"
              c:identifier="META_KEY_BINDING_PER_WINDOW"
              glib:nick="per-window">
        <doc xml:space="preserve">per-window</doc>
      </member>
      <member name="builtin"
              value="2"
              c:identifier="META_KEY_BINDING_BUILTIN"
              glib:nick="builtin">
        <doc xml:space="preserve">built-in</doc>
      </member>
      <member name="is_reversed"
              value="4"
              c:identifier="META_KEY_BINDING_IS_REVERSED"
              glib:nick="is-reversed">
        <doc xml:space="preserve">is reversed</doc>
      </member>
      <member name="non_maskable"
              value="8"
              c:identifier="META_KEY_BINDING_NON_MASKABLE"
              glib:nick="non-maskable">
        <doc xml:space="preserve">always active</doc>
      </member>
      <member name="ignore_autorepeat"
              value="16"
              c:identifier="META_KEY_BINDING_IGNORE_AUTOREPEAT"
              glib:nick="ignore-autorepeat">
      </member>
    </bitfield>
    <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">
          <doc xml:space="preserve">a #MetaDisplay</doc>
          <type name="Display" c:type="MetaDisplay*"/>
        </parameter>
        <parameter name="window" transfer-ownership="none">
          <doc xml:space="preserve">a #MetaWindow</doc>
          <type name="Window" c:type="MetaWindow*"/>
        </parameter>
        <parameter name="event"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">a #ClutterKeyEvent</doc>
          <type name="gpointer" c:type="ClutterKeyEvent*"/>
        </parameter>
        <parameter name="binding" transfer-ownership="none">
          <doc xml:space="preserve">a #MetaKeyBinding</doc>
          <type name="KeyBinding" c:type="MetaKeyBinding*"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="4">
          <doc xml:space="preserve">data passed to the function</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <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="calc_showing"
              value="1"
              c:identifier="META_LATER_CALC_SHOWING"
              glib:nick="calc-showing">
        <doc xml:space="preserve">used by Mutter to compute which windows should be mapped</doc>
      </member>
      <member name="check_fullscreen"
              value="2"
              c:identifier="META_LATER_CHECK_FULLSCREEN"
              glib:nick="check-fullscreen">
        <doc xml:space="preserve">used by Mutter to see if there's a fullscreen window</doc>
      </member>
      <member name="sync_stack"
              value="3"
              c:identifier="META_LATER_SYNC_STACK"
              glib:nick="sync-stack">
        <doc xml:space="preserve">used by Mutter to send it's idea of the stacking order to the server</doc>
      </member>
      <member name="before_redraw"
              value="4"
              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="5"
              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>
    <enumeration name="LocaleDirection"
                 glib:type-name="MetaLocaleDirection"
                 glib:get-type="meta_locale_direction_get_type"
                 c:type="MetaLocaleDirection">
      <member name="ltr"
              value="0"
              c:identifier="META_LOCALE_DIRECTION_LTR"
              glib:nick="ltr">
      </member>
      <member name="rtl"
              value="1"
              c:identifier="META_LOCALE_DIRECTION_RTL"
              glib:nick="rtl">
      </member>
    </enumeration>
    <constant name="MAJOR_VERSION" value="3" c:type="META_MAJOR_VERSION">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="MICRO_VERSION" value="2" c:type="META_MICRO_VERSION">
      <type name="gint" c:type="gint"/>
    </constant>
    <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>
    <constant name="MINOR_VERSION" value="30" c:type="META_MINOR_VERSION">
      <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">
        <doc xml:space="preserve">Horizontal</doc>
      </member>
      <member name="vertical"
              value="2"
              c:identifier="META_MAXIMIZE_VERTICAL"
              glib:nick="vertical">
        <doc xml:space="preserve">Vertical</doc>
      </member>
      <member name="both"
              value="3"
              c:identifier="META_MAXIMIZE_BOTH"
              glib:nick="both">
        <doc xml:space="preserve">Both</doc>
      </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>
    <class name="MonitorManager"
           c:symbol-prefix="monitor_manager"
           c:type="MetaMonitorManager"
           parent="DBusDisplayConfigSkeleton"
           abstract="1"
           glib:type-name="MetaMonitorManager"
           glib:get-type="meta_monitor_manager_get_type"
           glib:type-struct="MonitorManagerClass">
      <implements name="Gio.DBusInterface"/>
      <function name="get" c:identifier="meta_monitor_manager_get">
        <doc xml:space="preserve">Accessor for the singleton MetaMonitorManager.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The only #MetaMonitorManager there is.</doc>
          <type name="MonitorManager" c:type="MetaMonitorManager*"/>
        </return-value>
      </function>
      <function name="get_display_configuration_timeout"
                c:identifier="meta_monitor_manager_get_display_configuration_timeout">
        <return-value transfer-ownership="none">
          <type name="gint" c:type="gint"/>
        </return-value>
      </function>
      <method name="can_switch_config"
              c:identifier="meta_monitor_manager_can_switch_config">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <type name="MonitorManager" c:type="MetaMonitorManager*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_is_builtin_display_on"
              c:identifier="meta_monitor_manager_get_is_builtin_display_on">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <type name="MonitorManager" c:type="MetaMonitorManager*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_monitor_for_connector"
              c:identifier="meta_monitor_manager_get_monitor_for_connector">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The monitor index or -1 if @id isn't valid or the connector
isn't associated with a logical monitor.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <doc xml:space="preserve">A #MetaMonitorManager</doc>
            <type name="MonitorManager" c:type="MetaMonitorManager*"/>
          </instance-parameter>
          <parameter name="connector" transfer-ownership="none">
            <doc xml:space="preserve">A valid connector name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_switch_config"
              c:identifier="meta_monitor_manager_get_switch_config">
        <return-value transfer-ownership="none">
          <type name="MonitorSwitchConfigType"
                c:type="MetaMonitorSwitchConfigType"/>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <type name="MonitorManager" c:type="MetaMonitorManager*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="switch_config"
              c:identifier="meta_monitor_manager_switch_config">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <type name="MonitorManager" c:type="MetaMonitorManager*"/>
          </instance-parameter>
          <parameter name="config_type" transfer-ownership="none">
            <type name="MonitorSwitchConfigType"
                  c:type="MetaMonitorSwitchConfigType"/>
          </parameter>
        </parameters>
      </method>
      <property name="backend"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="Backend"/>
      </property>
      <glib:signal name="confirm-display-change" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="monitors-changed-internal" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="MonitorManagerClass"
            c:type="MetaMonitorManagerClass"
            disguised="1"
            glib:is-gtype-struct-for="MonitorManager">
    </record>
    <enumeration name="MonitorSwitchConfigType"
                 glib:type-name="MetaMonitorSwitchConfigType"
                 glib:get-type="meta_monitor_switch_config_type_get_type"
                 c:type="MetaMonitorSwitchConfigType">
      <member name="all_mirror"
              value="0"
              c:identifier="META_MONITOR_SWITCH_CONFIG_ALL_MIRROR"
              glib:nick="all-mirror">
      </member>
      <member name="all_linear"
              value="1"
              c:identifier="META_MONITOR_SWITCH_CONFIG_ALL_LINEAR"
              glib:nick="all-linear">
      </member>
      <member name="external"
              value="2"
              c:identifier="META_MONITOR_SWITCH_CONFIG_EXTERNAL"
              glib:nick="external">
      </member>
      <member name="builtin"
              value="3"
              c:identifier="META_MONITOR_SWITCH_CONFIG_BUILTIN"
              glib:nick="builtin">
      </member>
      <member name="unknown"
              value="4"
              c:identifier="META_MONITOR_SWITCH_CONFIG_UNKNOWN"
              glib:nick="unknown">
      </member>
    </enumeration>
    <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">
        <doc xml:space="preserve">Upwards motion</doc>
      </member>
      <member name="down"
              value="-2"
              c:identifier="META_MOTION_DOWN"
              glib:nick="down">
        <doc xml:space="preserve">Downwards motion</doc>
      </member>
      <member name="left"
              value="-3"
              c:identifier="META_MOTION_LEFT"
              glib:nick="left">
        <doc xml:space="preserve">Motion to the left</doc>
      </member>
      <member name="right"
              value="-4"
              c:identifier="META_MOTION_RIGHT"
              glib:nick="right">
        <doc xml:space="preserve">Motion to the right</doc>
      </member>
      <member name="up_left"
              value="-5"
              c:identifier="META_MOTION_UP_LEFT"
              glib:nick="up-left">
        <doc xml:space="preserve">Motion up and to the left</doc>
      </member>
      <member name="up_right"
              value="-6"
              c:identifier="META_MOTION_UP_RIGHT"
              glib:nick="up-right">
        <doc xml:space="preserve">Motion up and to the right</doc>
      </member>
      <member name="down_left"
              value="-7"
              c:identifier="META_MOTION_DOWN_LEFT"
              glib:nick="down-left">
        <doc xml:space="preserve">Motion down and to the left</doc>
      </member>
      <member name="down_right"
              value="-8"
              c:identifier="META_MOTION_DOWN_RIGHT"
              glib:nick="down-right">
        <doc xml:space="preserve">Motion down and to the right</doc>
      </member>
    </enumeration>
    <constant name="PLUGIN_API_VERSION"
              value="3"
              c:type="META_PLUGIN_API_VERSION">
      <type name="gint" c:type="gint"/>
    </constant>
    <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="PadActionType"
                 glib:type-name="MetaPadActionType"
                 glib:get-type="meta_pad_action_type_get_type"
                 c:type="MetaPadActionType">
      <member name="button"
              value="0"
              c:identifier="META_PAD_ACTION_BUTTON"
              glib:nick="button">
      </member>
      <member name="ring"
              value="1"
              c:identifier="META_PAD_ACTION_RING"
              glib:nick="ring">
      </member>
      <member name="strip"
              value="2"
              c:identifier="META_PAD_ACTION_STRIP"
              glib:nick="strip">
      </member>
    </enumeration>
    <class name="Plugin"
           c:symbol-prefix="plugin"
           c:type="MetaPlugin"
           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="confirm_display_change">
        <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="create_close_dialog" introspectable="0">
        <doc xml:space="preserve">Virtual function called to create a "force quit" dialog
on non-responsive clients.</doc>
        <return-value>
          <type name="CloseDialog" c:type="MetaCloseDialog*"/>
        </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="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="create_inhibit_shortcuts_dialog"
                      introspectable="0">
        <doc xml:space="preserve">Virtual function called to create a "inhibit shortcuts" dialog
when a client requests compositor shortcuts to be inhibited.</doc>
        <return-value>
          <type name="InhibitShortcutsDialog"
                c:type="MetaInhibitShortcutsDialog*"/>
        </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="window" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="destroy">
        <doc xml:space="preserve">Virtual function called when the window represented by @actor is destroyed.</doc>
        <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">
            <doc xml:space="preserve">a #MetaWindowActor</doc>
            <type name="WindowActor" c:type="MetaWindowActor*"/>
          </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="keybinding_filter">
        <doc xml:space="preserve">Virtual function called when handling each keybinding.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the plugin handled the keybinding.</doc>
          <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="binding" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaKeyBinding</doc>
            <type name="KeyBinding" c:type="MetaKeyBinding*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="kill_switch_workspace">
        <doc xml:space="preserve">Virtual function called when the workspace-switching effect needs to be
killed prematurely.</doc>
        <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">
        <doc xml:space="preserve">Virtual function called when the effects on @actor need to be killed
prematurely; the plugin must call the completed() callback as if the effect
terminated naturally.</doc>
        <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">
            <doc xml:space="preserve">a #MetaWindowActor</doc>
            <type name="WindowActor" c:type="MetaWindowActor*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="map">
        <doc xml:space="preserve">Virtual function called when the window represented by @actor is mapped.</doc>
        <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">
            <doc xml:space="preserve">a #MetaWindowActor</doc>
            <type name="WindowActor" c:type="MetaWindowActor*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="minimize">
        <doc xml:space="preserve">Virtual function called when the window represented by @actor is minimized.</doc>
        <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">
            <doc xml:space="preserve">a #MetaWindowActor</doc>
            <type name="WindowActor" c:type="MetaWindowActor*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="plugin_info">
        <doc xml:space="preserve">Virtual function that returns information about the #MetaPlugin.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #MetaPluginInfo.</doc>
          <type name="PluginInfo" c:type="const MetaPluginInfo*"/>
        </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>
      </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>
        </parameters>
      </virtual-method>
      <virtual-method name="show_window_menu">
        <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="menu" transfer-ownership="none">
            <type name="WindowMenuType" c:type="MetaWindowMenuType"/>
          </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>
        </parameters>
      </virtual-method>
      <virtual-method name="show_window_menu_for_rect">
        <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="menu" transfer-ownership="none">
            <type name="WindowMenuType" c:type="MetaWindowMenuType"/>
          </parameter>
          <parameter name="rect" transfer-ownership="none">
            <type name="Rectangle" c:type="MetaRectangle*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="size_change">
        <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="which_change" transfer-ownership="none">
            <type name="SizeChange" c:type="MetaSizeChange"/>
          </parameter>
          <parameter name="old_frame_rect" transfer-ownership="none">
            <type name="Rectangle" c:type="MetaRectangle*"/>
          </parameter>
          <parameter name="old_buffer_rect" transfer-ownership="none">
            <type name="Rectangle" c:type="MetaRectangle*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="size_changed">
        <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="start">
        <doc xml:space="preserve">Virtual function called when the compositor starts managing a screen</doc>
        <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">
        <doc xml:space="preserve">Virtual function called when the window represented by @actor is destroyed.</doc>
        <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">
            <doc xml:space="preserve">origin workspace</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="to" transfer-ownership="none">
            <doc xml:space="preserve">destination workspace</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="direction" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaMotionDirection</doc>
            <type name="MotionDirection" c:type="MetaMotionDirection"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="unminimize">
        <doc xml:space="preserve">Virtual function called when the window represented by @actor is unminimized.</doc>
        <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">
            <doc xml:space="preserve">a #MetaWindowActor</doc>
            <type name="WindowActor" c:type="MetaWindowActor*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="xevent_filter">
        <doc xml:space="preserve">Virtual function called when handling each event.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the plugin handled the event type (i.e., if the return
value is %FALSE, there will be no subsequent call to the manager
completed() callback, and the compositor must ensure that any appropriate
post-effect cleanup is carried out.</doc>
          <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 name="xlib.XEvent" 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="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="complete_display_change"
              c:identifier="meta_plugin_complete_display_change">
        <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="ok" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </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_display" c:identifier="meta_plugin_get_display">
        <doc xml:space="preserve">Gets the #MetaDisplay corresponding to a plugin.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the #MetaDisplay for the plugin</doc>
          <type name="Display" c:type="MetaDisplay*"/>
        </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="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="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="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="size_change_completed"
              c:identifier="meta_plugin_size_change_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="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="unminimize_completed"
              c:identifier="meta_plugin_unminimize_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>
      <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">
      <field name="parent_class" readable="0" private="1">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="start">
        <callback name="start">
          <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">
          <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">
              <doc xml:space="preserve">a #MetaWindowActor</doc>
              <type name="WindowActor" c:type="MetaWindowActor*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="unminimize">
        <callback name="unminimize">
          <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">
              <doc xml:space="preserve">a #MetaWindowActor</doc>
              <type name="WindowActor" c:type="MetaWindowActor*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="size_changed">
        <callback name="size_changed">
          <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="size_change">
        <callback name="size_change">
          <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="which_change" transfer-ownership="none">
              <type name="SizeChange" c:type="MetaSizeChange"/>
            </parameter>
            <parameter name="old_frame_rect" transfer-ownership="none">
              <type name="Rectangle" c:type="MetaRectangle*"/>
            </parameter>
            <parameter name="old_buffer_rect" transfer-ownership="none">
              <type name="Rectangle" c:type="MetaRectangle*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="map">
        <callback name="map">
          <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">
              <doc xml:space="preserve">a #MetaWindowActor</doc>
              <type name="WindowActor" c:type="MetaWindowActor*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="destroy">
        <callback name="destroy">
          <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">
              <doc xml:space="preserve">a #MetaWindowActor</doc>
              <type name="WindowActor" c:type="MetaWindowActor*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="switch_workspace">
        <callback name="switch_workspace">
          <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">
              <doc xml:space="preserve">origin workspace</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="to" transfer-ownership="none">
              <doc xml:space="preserve">destination workspace</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="direction" transfer-ownership="none">
              <doc xml:space="preserve">a #MetaMotionDirection</doc>
              <type name="MotionDirection" c:type="MetaMotionDirection"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="show_tile_preview">
        <callback name="show_tile_preview">
          <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>
          </parameters>
        </callback>
      </field>
      <field name="hide_tile_preview">
        <callback name="hide_tile_preview">
          <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_window_menu">
        <callback name="show_window_menu">
          <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="menu" transfer-ownership="none">
              <type name="WindowMenuType" c:type="MetaWindowMenuType"/>
            </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>
          </parameters>
        </callback>
      </field>
      <field name="show_window_menu_for_rect">
        <callback name="show_window_menu_for_rect">
          <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="menu" transfer-ownership="none">
              <type name="WindowMenuType" c:type="MetaWindowMenuType"/>
            </parameter>
            <parameter name="rect" transfer-ownership="none">
              <type name="Rectangle" c:type="MetaRectangle*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="kill_window_effects">
        <callback name="kill_window_effects">
          <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">
              <doc xml:space="preserve">a #MetaWindowActor</doc>
              <type name="WindowActor" c:type="MetaWindowActor*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="kill_switch_workspace">
        <callback name="kill_switch_workspace">
          <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="xevent_filter">
        <callback name="xevent_filter">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if the plugin handled the event type (i.e., if the return
value is %FALSE, there will be no subsequent call to the manager
completed() callback, and the compositor must ensure that any appropriate
post-effect cleanup is carried out.</doc>
            <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 name="xlib.XEvent" c:type="XEvent*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="keybinding_filter">
        <callback name="keybinding_filter">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if the plugin handled the keybinding.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="plugin" transfer-ownership="none">
              <type name="Plugin" c:type="MetaPlugin*"/>
            </parameter>
            <parameter name="binding" transfer-ownership="none">
              <doc xml:space="preserve">a #MetaKeyBinding</doc>
              <type name="KeyBinding" c:type="MetaKeyBinding*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="confirm_display_change">
        <callback name="confirm_display_change">
          <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="plugin_info">
        <callback name="plugin_info">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">a #MetaPluginInfo.</doc>
            <type name="PluginInfo" c:type="const MetaPluginInfo*"/>
          </return-value>
          <parameters>
            <parameter name="plugin" transfer-ownership="none">
              <doc xml:space="preserve">a #MetaPlugin</doc>
              <type name="Plugin" c:type="MetaPlugin*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="create_close_dialog" introspectable="0">
        <callback name="create_close_dialog" introspectable="0">
          <return-value>
            <type name="CloseDialog" c:type="MetaCloseDialog*"/>
          </return-value>
          <parameters>
            <parameter name="plugin" transfer-ownership="none">
              <doc xml:space="preserve">a #MetaPlugin</doc>
              <type name="Plugin" c:type="MetaPlugin*"/>
            </parameter>
            <parameter name="window" transfer-ownership="none">
              <doc xml:space="preserve">a #MetaWindow</doc>
              <type name="Window" c:type="MetaWindow*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="create_inhibit_shortcuts_dialog" introspectable="0">
        <callback name="create_inhibit_shortcuts_dialog" introspectable="0">
          <return-value>
            <type name="InhibitShortcutsDialog"
                  c:type="MetaInhibitShortcutsDialog*"/>
          </return-value>
          <parameters>
            <parameter name="plugin" transfer-ownership="none">
              <doc xml:space="preserve">a #MetaPlugin</doc>
              <type name="Plugin" c:type="MetaPlugin*"/>
            </parameter>
            <parameter name="window" transfer-ownership="none">
              <doc xml:space="preserve">a #MetaWindow</doc>
              <type name="Window" c:type="MetaWindow*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <record name="PluginInfo" c:type="MetaPluginInfo">
      <field name="name" writable="1">
        <doc xml:space="preserve">name of the plugin</doc>
        <type name="utf8" c:type="const gchar*"/>
      </field>
      <field name="version" writable="1">
        <doc xml:space="preserve">version of the plugin</doc>
        <type name="utf8" c:type="const gchar*"/>
      </field>
      <field name="author" writable="1">
        <doc xml:space="preserve">author of the plugin</doc>
        <type name="utf8" c:type="const gchar*"/>
      </field>
      <field name="license" writable="1">
        <doc xml:space="preserve">license of the plugin</doc>
        <type name="utf8" c:type="const gchar*"/>
      </field>
      <field name="description" writable="1">
        <doc xml:space="preserve">description of the plugin</doc>
        <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">
        <doc xml:space="preserve">major component of the version number of Meta with which the plugin was compiled</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="version_minor" writable="1">
        <doc xml:space="preserve">minor component of the version number of Meta with which the plugin was compiled</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="version_micro" writable="1">
        <doc xml:space="preserve">micro component of the version number of Meta with which the plugin was compiled</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="version_api" writable="1">
        <doc xml:space="preserve">version of the plugin API</doc>
        <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">
        <doc xml:space="preserve">mouse button modifiers</doc>
      </member>
      <member name="focus_mode"
              value="1"
              c:identifier="META_PREF_FOCUS_MODE"
              glib:nick="focus-mode">
        <doc xml:space="preserve">focus mode</doc>
      </member>
      <member name="focus_new_windows"
              value="2"
              c:identifier="META_PREF_FOCUS_NEW_WINDOWS"
              glib:nick="focus-new-windows">
        <doc xml:space="preserve">focus new windows</doc>
      </member>
      <member name="attach_modal_dialogs"
              value="3"
              c:identifier="META_PREF_ATTACH_MODAL_DIALOGS"
              glib:nick="attach-modal-dialogs">
        <doc xml:space="preserve">attach modal dialogs</doc>
      </member>
      <member name="raise_on_click"
              value="4"
              c:identifier="META_PREF_RAISE_ON_CLICK"
              glib:nick="raise-on-click">
        <doc xml:space="preserve">raise on click</doc>
      </member>
      <member name="action_double_click_titlebar"
              value="5"
              c:identifier="META_PREF_ACTION_DOUBLE_CLICK_TITLEBAR"
              glib:nick="action-double-click-titlebar">
        <doc xml:space="preserve">action double click titlebar</doc>
      </member>
      <member name="action_middle_click_titlebar"
              value="6"
              c:identifier="META_PREF_ACTION_MIDDLE_CLICK_TITLEBAR"
              glib:nick="action-middle-click-titlebar">
        <doc xml:space="preserve">action middle click titlebar</doc>
      </member>
      <member name="action_right_click_titlebar"
              value="7"
              c:identifier="META_PREF_ACTION_RIGHT_CLICK_TITLEBAR"
              glib:nick="action-right-click-titlebar">
        <doc xml:space="preserve">action right click titlebar</doc>
      </member>
      <member name="auto_raise"
              value="8"
              c:identifier="META_PREF_AUTO_RAISE"
              glib:nick="auto-raise">
        <doc xml:space="preserve">auto-raise</doc>
      </member>
      <member name="auto_raise_delay"
              value="9"
              c:identifier="META_PREF_AUTO_RAISE_DELAY"
              glib:nick="auto-raise-delay">
        <doc xml:space="preserve">auto-raise delay</doc>
      </member>
      <member name="focus_change_on_pointer_rest"
              value="10"
              c:identifier="META_PREF_FOCUS_CHANGE_ON_POINTER_REST"
              glib:nick="focus-change-on-pointer-rest">
        <doc xml:space="preserve">focus change on pointer rest</doc>
      </member>
      <member name="titlebar_font"
              value="11"
              c:identifier="META_PREF_TITLEBAR_FONT"
              glib:nick="titlebar-font">
        <doc xml:space="preserve">title-bar font</doc>
      </member>
      <member name="num_workspaces"
              value="12"
              c:identifier="META_PREF_NUM_WORKSPACES"
              glib:nick="num-workspaces">
        <doc xml:space="preserve">number of workspaces</doc>
      </member>
      <member name="dynamic_workspaces"
              value="13"
              c:identifier="META_PREF_DYNAMIC_WORKSPACES"
              glib:nick="dynamic-workspaces">
        <doc xml:space="preserve">dynamic workspaces</doc>
      </member>
      <member name="keybindings"
              value="14"
              c:identifier="META_PREF_KEYBINDINGS"
              glib:nick="keybindings">
        <doc xml:space="preserve">keybindings</doc>
      </member>
      <member name="disable_workarounds"
              value="15"
              c:identifier="META_PREF_DISABLE_WORKAROUNDS"
              glib:nick="disable-workarounds">
        <doc xml:space="preserve">disable workarounds</doc>
      </member>
      <member name="button_layout"
              value="16"
              c:identifier="META_PREF_BUTTON_LAYOUT"
              glib:nick="button-layout">
        <doc xml:space="preserve">button layout</doc>
      </member>
      <member name="workspace_names"
              value="17"
              c:identifier="META_PREF_WORKSPACE_NAMES"
              glib:nick="workspace-names">
        <doc xml:space="preserve">workspace names</doc>
      </member>
      <member name="visual_bell"
              value="18"
              c:identifier="META_PREF_VISUAL_BELL"
              glib:nick="visual-bell">
        <doc xml:space="preserve">visual bell</doc>
      </member>
      <member name="audible_bell"
              value="19"
              c:identifier="META_PREF_AUDIBLE_BELL"
              glib:nick="audible-bell">
        <doc xml:space="preserve">audible bell</doc>
      </member>
      <member name="visual_bell_type"
              value="20"
              c:identifier="META_PREF_VISUAL_BELL_TYPE"
              glib:nick="visual-bell-type">
        <doc xml:space="preserve">visual bell type</doc>
      </member>
      <member name="gnome_accessibility"
              value="21"
              c:identifier="META_PREF_GNOME_ACCESSIBILITY"
              glib:nick="gnome-accessibility">
        <doc xml:space="preserve">GNOME accessibility</doc>
      </member>
      <member name="gnome_animations"
              value="22"
              c:identifier="META_PREF_GNOME_ANIMATIONS"
              glib:nick="gnome-animations">
        <doc xml:space="preserve">GNOME animations</doc>
      </member>
      <member name="cursor_theme"
              value="23"
              c:identifier="META_PREF_CURSOR_THEME"
              glib:nick="cursor-theme">
        <doc xml:space="preserve">cursor theme</doc>
      </member>
      <member name="cursor_size"
              value="24"
              c:identifier="META_PREF_CURSOR_SIZE"
              glib:nick="cursor-size">
        <doc xml:space="preserve">cursor size</doc>
      </member>
      <member name="resize_with_right_button"
              value="25"
              c:identifier="META_PREF_RESIZE_WITH_RIGHT_BUTTON"
              glib:nick="resize-with-right-button">
        <doc xml:space="preserve">resize with right button</doc>
      </member>
      <member name="edge_tiling"
              value="26"
              c:identifier="META_PREF_EDGE_TILING"
              glib:nick="edge-tiling">
        <doc xml:space="preserve">edge tiling</doc>
      </member>
      <member name="force_fullscreen"
              value="27"
              c:identifier="META_PREF_FORCE_FULLSCREEN"
              glib:nick="force-fullscreen">
        <doc xml:space="preserve">force fullscreen</doc>
      </member>
      <member name="workspaces_only_on_primary"
              value="28"
              c:identifier="META_PREF_WORKSPACES_ONLY_ON_PRIMARY"
              glib:nick="workspaces-only-on-primary">
        <doc xml:space="preserve">workspaces only on primary</doc>
      </member>
      <member name="draggable_border_width"
              value="29"
              c:identifier="META_PREF_DRAGGABLE_BORDER_WIDTH"
              glib:nick="draggable-border-width">
        <doc xml:space="preserve">draggable border width</doc>
      </member>
      <member name="auto_maximize"
              value="30"
              c:identifier="META_PREF_AUTO_MAXIMIZE"
              glib:nick="auto-maximize">
        <doc xml:space="preserve">auto-maximize</doc>
      </member>
      <member name="center_new_windows"
              value="31"
              c:identifier="META_PREF_CENTER_NEW_WINDOWS"
              glib:nick="center-new-windows">
        <doc xml:space="preserve">center new windows</doc>
      </member>
      <member name="drag_threshold"
              value="32"
              c:identifier="META_PREF_DRAG_THRESHOLD"
              glib:nick="drag-threshold">
        <doc xml:space="preserve">drag threshold</doc>
      </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="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="1">
          <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">
        <doc xml:space="preserve">X coordinate of the top-left corner</doc>
        <type name="gint" c:type="int"/>
      </field>
      <field name="y" writable="1">
        <doc xml:space="preserve">Y coordinate of the top-left corner</doc>
        <type name="gint" c:type="int"/>
      </field>
      <field name="width" writable="1">
        <doc xml:space="preserve">Width of the rectangle</doc>
        <type name="gint" c:type="int"/>
      </field>
      <field name="height" writable="1">
        <doc xml:space="preserve">Height of the rectangle</doc>
        <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>
    <class name="RemoteAccessController"
           c:symbol-prefix="remote_access_controller"
           c:type="MetaRemoteAccessController"
           parent="GObject.Object"
           glib:type-name="MetaRemoteAccessController"
           glib:get-type="meta_remote_access_controller_get_type"
           glib:type-struct="RemoteAccessControllerClass">
      <glib:signal name="new-handle" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="RemoteAccessHandle"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="RemoteAccessControllerClass"
            c:type="MetaRemoteAccessControllerClass"
            glib:is-gtype-struct-for="RemoteAccessController">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <class name="RemoteAccessHandle"
           c:symbol-prefix="remote_access_handle"
           c:type="MetaRemoteAccessHandle"
           parent="GObject.Object"
           glib:type-name="MetaRemoteAccessHandle"
           glib:get-type="meta_remote_access_handle_get_type"
           glib:type-struct="RemoteAccessHandleClass">
      <virtual-method name="stop" invoker="stop">
        <doc xml:space="preserve">Stop the associated remote access session.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="handle" transfer-ownership="none">
            <doc xml:space="preserve">A #MetaRemoteAccessHandle</doc>
            <type name="RemoteAccessHandle" c:type="MetaRemoteAccessHandle*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <method name="stop" c:identifier="meta_remote_access_handle_stop">
        <doc xml:space="preserve">Stop the associated remote access session.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="handle" transfer-ownership="none">
            <doc xml:space="preserve">A #MetaRemoteAccessHandle</doc>
            <type name="RemoteAccessHandle" c:type="MetaRemoteAccessHandle*"/>
          </instance-parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <glib:signal name="stopped" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="RemoteAccessHandleClass"
            c:type="MetaRemoteAccessHandleClass"
            glib:is-gtype-struct-for="RemoteAccessHandle">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="stop">
        <callback name="stop">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="handle" transfer-ownership="none">
              <doc xml:space="preserve">A #MetaRemoteAccessHandle</doc>
              <type name="RemoteAccessHandle"
                    c:type="MetaRemoteAccessHandle*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <record name="Settings" c:type="MetaSettings" disguised="1">
      <method name="get_font_dpi" c:identifier="meta_settings_get_font_dpi">
        <return-value transfer-ownership="none">
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="settings" transfer-ownership="none">
            <type name="Settings" c:type="MetaSettings*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_ui_scaling_factor"
              c:identifier="meta_settings_get_ui_scaling_factor">
        <return-value transfer-ownership="none">
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="settings" transfer-ownership="none">
            <type name="Settings" c:type="MetaSettings*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="Shadow"
            c:type="MetaShadow"
            glib:type-name="MetaShadow"
            glib:get-type="meta_shadow_get_type"
            c:symbol-prefix="shadow">
      <doc xml:space="preserve">#MetaShadow holds a shadow texture along with information about how to
apply that texture to draw a window texture. (E.g., it knows how big the
unscaled borders are on each side of the shadow texture.)</doc>
      <method name="get_bounds" c:identifier="meta_shadow_get_bounds">
        <doc xml:space="preserve">Computes the bounds of the pixels that will be affected by
meta_shadow_paint()</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="shadow" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaShadow</doc>
            <type name="Shadow" c:type="MetaShadow*"/>
          </instance-parameter>
          <parameter name="window_x" transfer-ownership="none">
            <doc xml:space="preserve">x position of the region to paint a shadow for</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="window_y" transfer-ownership="none">
            <doc xml:space="preserve">y position of the region to paint a shadow for</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="window_width" transfer-ownership="none">
            <doc xml:space="preserve">actual width of the region to paint a shadow for</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="window_height" transfer-ownership="none">
            <doc xml:space="preserve">actual height of the region to paint a shadow for</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="bounds" transfer-ownership="none">
            <type name="cairo.RectangleInt" c:type="cairo_rectangle_int_t*"/>
          </parameter>
        </parameters>
      </method>
      <method name="paint" c:identifier="meta_shadow_paint">
        <doc xml:space="preserve">Paints the shadow at the given position, for the specified actual
size of the region. (Since a #MetaShadow can be shared between
different sizes with the same extracted #MetaWindowShape the
size needs to be passed in here.)</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="shadow" transfer-ownership="none">
            <type name="Shadow" c:type="MetaShadow*"/>
          </instance-parameter>
          <parameter name="window_x" transfer-ownership="none">
            <doc xml:space="preserve">x position of the region to paint a shadow for</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="window_y" transfer-ownership="none">
            <doc xml:space="preserve">y position of the region to paint a shadow for</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="window_width" transfer-ownership="none">
            <doc xml:space="preserve">actual width of the region to paint a shadow for</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="window_height" transfer-ownership="none">
            <doc xml:space="preserve">actual height of the region to paint a shadow for</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="opacity" transfer-ownership="none">
            <type name="guint8" c:type="guint8"/>
          </parameter>
          <parameter name="clip"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">if non-%NULL specifies the visible portion
  of the shadow.</doc>
            <type name="cairo.Region" c:type="cairo_region_t*"/>
          </parameter>
          <parameter name="clip_strictly" transfer-ownership="none">
            <doc xml:space="preserve">if %TRUE, drawing will be clipped strictly
  to @clip, otherwise, it will be only used to optimize
  drawing.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="meta_shadow_ref">
        <return-value transfer-ownership="full">
          <type name="Shadow" c:type="MetaShadow*"/>
        </return-value>
        <parameters>
          <instance-parameter name="shadow" transfer-ownership="none">
            <type name="Shadow" c:type="MetaShadow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="meta_shadow_unref">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="shadow" transfer-ownership="none">
            <type name="Shadow" c:type="MetaShadow*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <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>
      <constructor name="new" c:identifier="meta_shadow_factory_new">
        <return-value transfer-ownership="full">
          <type name="ShadowFactory" c:type="MetaShadowFactory*"/>
        </return-value>
      </constructor>
      <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="get_shadow" c:identifier="meta_shadow_factory_get_shadow">
        <doc xml:space="preserve">Gets the appropriate shadow object for drawing shadows for the
specified window shape. The region that we are shadowing is specified
as a combination of a size-invariant extracted shape and the size.
In some cases, the same shadow object can be shared between sizes;
in other cases a different shadow object is used for each size.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly referenced #MetaShadow; unref with
 meta_shadow_unref()</doc>
          <type name="Shadow" c:type="MetaShadow*"/>
        </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="shape" transfer-ownership="none">
            <doc xml:space="preserve">the size-invariant shape of the window's region</doc>
            <type name="WindowShape" c:type="MetaWindowShape*"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve">the actual width of the window's region</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve">the actual height of the window's region</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="class_name" transfer-ownership="none">
            <doc xml:space="preserve">name of the class of window shadows</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>
        </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>
    <enumeration name="ShadowMode"
                 glib:type-name="MetaShadowMode"
                 glib:get-type="meta_shadow_mode_get_type"
                 c:type="MetaShadowMode">
      <member name="auto"
              value="0"
              c:identifier="META_SHADOW_MODE_AUTO"
              glib:nick="auto">
      </member>
      <member name="forced_off"
              value="1"
              c:identifier="META_SHADOW_MODE_FORCED_OFF"
              glib:nick="forced-off">
      </member>
      <member name="forced_on"
              value="2"
              c:identifier="META_SHADOW_MODE_FORCED_ON"
              glib:nick="forced-on">
      </member>
    </enumeration>
    <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">
      <doc xml:space="preserve">The &lt;structname&gt;MetaShapedTexture&lt;/structname&gt; structure contains
only private data and should be accessed using the provided API</doc>
      <implements name="Atk.ImplementorIface"/>
      <implements name="Clutter.Animatable"/>
      <implements name="Clutter.Container"/>
      <implements name="Clutter.Scriptable"/>
      <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.Texture" c:type="CoglTexture*"/>
        </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_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_mask_texture"
              c:identifier="meta_shaped_texture_set_mask_texture">
        <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="mask_texture" transfer-ownership="none">
            <type name="Cogl.Texture" c:type="CoglTexture*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_opaque_region"
              c:identifier="meta_shaped_texture_set_opaque_region">
        <doc xml:space="preserve">As most windows have a large portion that does not require blending,
we can easily turn off blending if we know the areas that do not
require blending. This sets the region where we will not blend for
optimization purposes.</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="opaque_region" transfer-ownership="full">
            <doc xml:space="preserve">the region of the texture that
  can have blending turned off.</doc>
            <type name="cairo.Region" c:type="cairo_region_t*"/>
          </parameter>
        </parameters>
      </method>
      <method name="update_area"
              c:identifier="meta_shaped_texture_update_area">
        <doc xml:space="preserve">Repairs the damaged area indicated by @x, @y, @width and @height
and potentially queues a redraw.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Whether a redraw have been queued or not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="stex" transfer-ownership="none">
            <doc xml:space="preserve">#MetaShapedTexture</doc>
            <type name="ShapedTexture" c:type="MetaShapedTexture*"/>
          </instance-parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve">the x coordinate of the damaged area</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve">the y coordinate of the damaged area</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve">the width of the damaged area</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve">the height of the damaged area</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent" readable="0" private="1">
        <type name="Clutter.Actor" c:type="ClutterActor"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="ShapedTexturePrivate" c:type="MetaShapedTexturePrivate*"/>
      </field>
      <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="ShapedTextureClass"
            c:type="MetaShapedTextureClass"
            glib:is-gtype-struct-for="ShapedTexture">
      <field name="parent_class" readable="0" private="1">
        <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">
        <doc xml:space="preserve">Left side</doc>
      </member>
      <member name="right"
              value="2"
              c:identifier="META_SIDE_RIGHT"
              glib:nick="right">
        <doc xml:space="preserve">Right side</doc>
      </member>
      <member name="top"
              value="4"
              c:identifier="META_SIDE_TOP"
              glib:nick="top">
        <doc xml:space="preserve">Top side</doc>
      </member>
      <member name="bottom"
              value="8"
              c:identifier="META_SIDE_BOTTOM"
              glib:nick="bottom">
        <doc xml:space="preserve">Bottom side</doc>
      </member>
    </enumeration>
    <enumeration name="SizeChange"
                 glib:type-name="MetaSizeChange"
                 glib:get-type="meta_size_change_get_type"
                 c:type="MetaSizeChange">
      <member name="maximize"
              value="0"
              c:identifier="META_SIZE_CHANGE_MAXIMIZE"
              glib:nick="maximize">
      </member>
      <member name="unmaximize"
              value="1"
              c:identifier="META_SIZE_CHANGE_UNMAXIMIZE"
              glib:nick="unmaximize">
      </member>
      <member name="fullscreen"
              value="2"
              c:identifier="META_SIZE_CHANGE_FULLSCREEN"
              glib:nick="fullscreen">
      </member>
      <member name="unfullscreen"
              value="3"
              c:identifier="META_SIZE_CHANGE_UNFULLSCREEN"
              glib:nick="unfullscreen">
      </member>
    </enumeration>
    <enumeration name="StackLayer"
                 glib:type-name="MetaStackLayer"
                 glib:get-type="meta_stack_layer_get_type"
                 c:type="MetaStackLayer">
      <doc xml:space="preserve">Layers a window can be in.
These MUST be in the order of stacking.</doc>
      <member name="desktop"
              value="0"
              c:identifier="META_LAYER_DESKTOP"
              glib:nick="desktop">
        <doc xml:space="preserve">Desktop layer</doc>
      </member>
      <member name="bottom"
              value="1"
              c:identifier="META_LAYER_BOTTOM"
              glib:nick="bottom">
        <doc xml:space="preserve">Bottom layer</doc>
      </member>
      <member name="normal"
              value="2"
              c:identifier="META_LAYER_NORMAL"
              glib:nick="normal">
        <doc xml:space="preserve">Normal layer</doc>
      </member>
      <member name="top"
              value="4"
              c:identifier="META_LAYER_TOP"
              glib:nick="top">
        <doc xml:space="preserve">Top layer</doc>
      </member>
      <member name="dock"
              value="4"
              c:identifier="META_LAYER_DOCK"
              glib:nick="dock">
        <doc xml:space="preserve">Dock layer</doc>
      </member>
      <member name="override_redirect"
              value="7"
              c:identifier="META_LAYER_OVERRIDE_REDIRECT"
              glib:nick="override-redirect">
        <doc xml:space="preserve">Override-redirect layer</doc>
      </member>
      <member name="last"
              value="8"
              c:identifier="META_LAYER_LAST"
              glib:nick="last">
        <doc xml:space="preserve">Marks the end of the #MetaStackLayer enumeration</doc>
      </member>
    </enumeration>
    <class name="Stage"
           c:symbol-prefix="stage"
           c:type="MetaStage"
           parent="Clutter.Stage"
           glib:type-name="MetaStage"
           glib:get-type="meta_stage_get_type"
           glib:type-struct="StageClass">
      <implements name="Atk.ImplementorIface"/>
      <implements name="Clutter.Animatable"/>
      <implements name="Clutter.Container"/>
      <implements name="Clutter.Scriptable"/>
      <function name="is_focused" c:identifier="meta_stage_is_focused">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="display" transfer-ownership="none">
            <type name="Display" c:type="MetaDisplay*"/>
          </parameter>
        </parameters>
      </function>
    </class>
    <record name="StageClass"
            c:type="MetaStageClass"
            glib:is-gtype-struct-for="Stage">
      <field name="parent_class">
        <type name="Clutter.StageClass" c:type="ClutterStageClass"/>
      </field>
    </record>
    <record name="Strut" c:type="MetaStrut">
      <field name="rect" writable="1">
        <doc xml:space="preserve">#MetaRectangle the #MetaStrut is on</doc>
        <type name="Rectangle" c:type="MetaRectangle"/>
      </field>
      <field name="side" writable="1">
        <doc xml:space="preserve">#MetaSide the #MetaStrut is on</doc>
        <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">
        <doc xml:space="preserve">Normal windows</doc>
      </member>
      <member name="docks"
              value="1"
              c:identifier="META_TAB_LIST_DOCKS"
              glib:nick="docks">
        <doc xml:space="preserve">Dock windows</doc>
      </member>
      <member name="group"
              value="2"
              c:identifier="META_TAB_LIST_GROUP"
              glib:nick="group">
        <doc xml:space="preserve">Groups</doc>
      </member>
      <member name="normal_all"
              value="3"
              c:identifier="META_TAB_LIST_NORMAL_ALL"
              glib:nick="normal-all">
        <doc xml:space="preserve">All windows</doc>
      </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">
        <doc xml:space="preserve">Show icon (Alt-Tab mode)</doc>
      </member>
      <member name="instantly"
              value="1"
              c:identifier="META_TAB_SHOW_INSTANTLY"
              glib:nick="instantly">
        <doc xml:space="preserve">Show instantly (Alt-Esc mode)</doc>
      </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>
      <function name="get_default"
                c:identifier="meta_theme_get_default"
                introspectable="0">
        <return-value>
          <type name="Theme" c:type="MetaTheme*"/>
        </return-value>
      </function>
      <function name="new" c:identifier="meta_theme_new" introspectable="0">
        <return-value>
          <type name="Theme" c:type="MetaTheme*"/>
        </return-value>
      </function>
    </record>
    <constant name="VIRTUAL_CORE_KEYBOARD_ID"
              value="3"
              c:type="META_VIRTUAL_CORE_KEYBOARD_ID">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="VIRTUAL_CORE_POINTER_ID"
              value="2"
              c:type="META_VIRTUAL_CORE_POINTER_ID">
      <type name="gint" c:type="gint"/>
    </constant>
    <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">
        <doc xml:space="preserve">Shift mask</doc>
      </member>
      <member name="control_mask"
              value="64"
              c:identifier="META_VIRTUAL_CONTROL_MASK"
              glib:nick="control-mask">
        <doc xml:space="preserve">Control mask</doc>
      </member>
      <member name="alt_mask"
              value="128"
              c:identifier="META_VIRTUAL_ALT_MASK"
              glib:nick="alt-mask">
        <doc xml:space="preserve">Alt mask</doc>
      </member>
      <member name="meta_mask"
              value="256"
              c:identifier="META_VIRTUAL_META_MASK"
              glib:nick="meta-mask">
        <doc xml:space="preserve">Meta mask</doc>
      </member>
      <member name="super_mask"
              value="512"
              c:identifier="META_VIRTUAL_SUPER_MASK"
              glib:nick="super-mask">
        <doc xml:space="preserve">Super mask</doc>
      </member>
      <member name="hyper_mask"
              value="1024"
              c:identifier="META_VIRTUAL_HYPER_MASK"
              glib:nick="hyper-mask">
        <doc xml:space="preserve">Hyper mask</doc>
      </member>
      <member name="mod2_mask"
              value="2048"
              c:identifier="META_VIRTUAL_MOD2_MASK"
              glib:nick="mod2-mask">
        <doc xml:space="preserve">Mod2 mask</doc>
      </member>
      <member name="mod3_mask"
              value="4096"
              c:identifier="META_VIRTUAL_MOD3_MASK"
              glib:nick="mod3-mask">
        <doc xml:space="preserve">Mod3 mask</doc>
      </member>
      <member name="mod4_mask"
              value="8192"
              c:identifier="META_VIRTUAL_MOD4_MASK"
              glib:nick="mod4-mask">
        <doc xml:space="preserve">Mod4 mask</doc>
      </member>
      <member name="mod5_mask"
              value="16384"
              c:identifier="META_VIRTUAL_MOD5_MASK"
              glib:nick="mod5-mask">
        <doc xml:space="preserve">Mod5 mask</doc>
      </member>
    </bitfield>
    <class name="Window"
           c:symbol-prefix="window"
           c:type="MetaWindow"
           parent="GObject.Object"
           abstract="1"
           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="allows_move" c:identifier="meta_window_allows_move">
        <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="allows_resize" c:identifier="meta_window_allows_resize">
        <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="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="begin_grab_op" c:identifier="meta_window_begin_grab_op">
        <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="op" transfer-ownership="none">
            <type name="GrabOp" c:type="MetaGrabOp"/>
          </parameter>
          <parameter name="frame_action" 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="can_close" c:identifier="meta_window_can_close">
        <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="can_maximize" c:identifier="meta_window_can_maximize">
        <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="can_minimize" c:identifier="meta_window_can_minimize">
        <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="can_shade" c:identifier="meta_window_can_shade">
        <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="change_workspace"
              c:identifier="meta_window_change_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="workspace" transfer-ownership="none">
            <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>
        </parameters>
      </method>
      <method name="check_alive" c:identifier="meta_window_check_alive">
        <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="client_rect_to_frame_rect"
              c:identifier="meta_window_client_rect_to_frame_rect">
        <doc xml:space="preserve">Converts a desired bounds of the client window into the corresponding bounds
of the window frame (excluding invisible borders and client side shadows.)</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="client_rect" transfer-ownership="none">
            <doc xml:space="preserve">client rectangle in root coordinates</doc>
            <type name="Rectangle" c:type="MetaRectangle*"/>
          </parameter>
          <parameter name="frame_rect"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve">location to store the computed corresponding frame bounds.</doc>
            <type name="Rectangle" c:type="MetaRectangle*"/>
          </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="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="focus" c:identifier="meta_window_focus">
        <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="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"
                     nullable="1"
                     allow-none="1">
            <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"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">User data</doc>
            <type name="gpointer" c:type="void*"/>
          </parameter>
        </parameters>
      </method>
      <method name="frame_rect_to_client_rect"
              c:identifier="meta_window_frame_rect_to_client_rect">
        <doc xml:space="preserve">Converts a desired frame bounds for a window into the bounds of the client
window.</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="frame_rect" transfer-ownership="none">
            <doc xml:space="preserve">desired frame bounds for the window</doc>
            <type name="Rectangle" c:type="MetaRectangle*"/>
          </parameter>
          <parameter name="client_rect"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve">location to store the computed corresponding client rectangle.</doc>
            <type name="Rectangle" c:type="MetaRectangle*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_buffer_rect"
              c:identifier="meta_window_get_buffer_rect">
        <doc xml:space="preserve">Gets the rectangle that the pixmap or buffer of @window occupies.

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

For Wayland windows, this is the bounding rectangle of the attached
buffer.</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_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">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <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" nullable="1">
          <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">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_frame_rect" c:identifier="meta_window_get_frame_rect">
        <doc xml:space="preserve">Gets the rectangle that bounds @window that is what the user thinks of
as the edge of the window. This doesn't include any extra reactive
area that we or the client adds to the window, or any area that the
client adds to draw a client-side shadow.</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_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">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <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_theme_variant"
              c:identifier="meta_window_get_gtk_theme_variant">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the theme variant or %NULL</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.</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"
                     direction="out"
                     caller-allocates="1"
                     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_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">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <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, or -1
if the window has been recently unmanaged and does not have a monitor.</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_mutter_hints"
              c:identifier="meta_window_get_mutter_hints">
        <doc xml:space="preserve">Gets the current value of the _MUTTER_HINTS property.

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

The property is a list of colon-separated key=value pairs. The key names for
any plugin-specific hints must be suitably namespaced to allow for shared
use; 'mutter-' key prefix is reserved for internal use, and must not be used
by plugins.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the _MUTTER_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_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_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_sandboxed_app_id"
              c:identifier="meta_window_get_sandboxed_app_id">
        <doc xml:space="preserve">Gets an unique id for a sandboxed app (currently flatpaks and snaps are
supported).</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the sandboxed application ID or %NULL</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_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 monitor as @window. This is
the topmost tiled window in a complementary tile mode that is:

 - on the same monitor;
 - on the same workspace;
 - spanning the remaining monitor width;
 - there is no 3rd window stacked between both tiled windows that's
   partially visible in the common edge.</doc>
        <return-value transfer-ownership="none" nullable="1">
          <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">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_title" c:identifier="meta_window_get_title">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the current title of the window.</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_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_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 Mutter initially upon window creation,
and updated thereafter on input events (key and button presses) seen by Mutter,
client updates to the _NET_WM_USER_TIME property (if later than the current time)
and when focusing the window.</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">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <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_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_work_area_all_monitors"
              c:identifier="meta_window_get_work_area_all_monitors">
        <doc xml:space="preserve">Get the work area for all monitors for @window.</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="area"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve">a location to store the work area</doc>
            <type name="Rectangle" c:type="MetaRectangle*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_work_area_current_monitor"
              c:identifier="meta_window_get_work_area_current_monitor">
        <doc xml:space="preserve">Get the work area for the monitor @window is currently on.</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="area"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve">a location to store the work area</doc>
            <type name="Rectangle" c:type="MetaRectangle*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_work_area_for_monitor"
              c:identifier="meta_window_get_work_area_for_monitor">
        <doc xml:space="preserve">Get the work area for @window, given the monitor index
@which_monitor.</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="which_monitor" transfer-ownership="none">
            <doc xml:space="preserve">a moniotr to get the work area for</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="area"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve">a location to store the work area</doc>
            <type name="Rectangle" c:type="MetaRectangle*"/>
          </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"
              introspectable="0">
        <return-value transfer-ownership="none">
          <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="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_above" c:identifier="meta_window_is_above">
        <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_always_on_all_workspaces"
              c:identifier="meta_window_is_always_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_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_client_decorated"
              c:identifier="meta_window_is_client_decorated">
        <doc xml:space="preserve">Check if if the window has decorations drawn by the client.
(window-&gt;decorated refers only to whether we should add decorations)</doc>
        <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_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">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <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_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">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <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">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_override_redirect"
              c:identifier="meta_window_is_override_redirect">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if this window isn't managed by mutter; it will
control its own positioning and mutter won't draw decorations
among other things.  In X terminology this is "override redirect".</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_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 mutter.</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_screen_sized"
              c:identifier="meta_window_is_screen_sized">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the window is occupies the
              the whole screen (all monitors).</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="kill" c:identifier="meta_window_kill">
        <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="located_on_workspace"
              c:identifier="meta_window_located_on_workspace">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether @window is displayed on @workspace, or whether it
will be displayed on all workspaces.</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="workspace" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWorkspace</doc>
            <type name="Workspace" c:type="MetaWorkspace*"/>
          </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="make_above" c:identifier="meta_window_make_above">
        <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="make_fullscreen"
              c:identifier="meta_window_make_fullscreen">
        <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_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">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <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">
            <doc xml:space="preserve">a #MetaWindow</doc>
            <type name="Window" c:type="MetaWindow*"/>
          </instance-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="set_icon_geometry"
              c:identifier="meta_window_set_icon_geometry">
        <doc xml:space="preserve">Sets or unsets the location of the icon corresponding to the window. If
set, the location should correspond to a dock, task bar or other user
interface element displaying the icon, and is relative to the root window.</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="rect"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">rectangle with the desired geometry or %NULL.</doc>
            <type name="Rectangle" c:type="MetaRectangle*"/>
          </parameter>
        </parameters>
      </method>
      <method name="shade" c:identifier="meta_window_shade">
        <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="shove_titlebar_onscreen"
              c:identifier="meta_window_shove_titlebar_onscreen">
        <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="titlebar_is_onscreen"
              c:identifier="meta_window_titlebar_is_onscreen">
        <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="unmake_above" c:identifier="meta_window_unmake_above">
        <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="unmake_fullscreen"
              c:identifier="meta_window_unmake_fullscreen">
        <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="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="unshade" c:identifier="meta_window_unshade">
        <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="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="gpointer" c:type="gpointer"/>
      </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="gpointer" c:type="gpointer"/>
      </property>
      <property name="minimized" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="mutter-hints" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="on-all-workspaces" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="resizeable" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="skip-taskbar" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </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="position-changed" when="last">
        <doc xml:space="preserve">This is emitted when the position of a window might
have changed. Specifically, this is emitted when the
position of the toplevel window has changed, or when
the position of the client window has changed.</doc>
        <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="shown" when="last">
        <doc xml:space="preserve">This is emitted after a window has been shown.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="size-changed" when="last">
        <doc xml:space="preserve">This is emitted when the position of a window might
have changed. Specifically, this is emitted when the
size of the toplevel window has changed, or when the
size of the client window has changed.</doc>
        <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>
      </glib:signal>
    </class>
    <class name="WindowActor"
           c:symbol-prefix="window_actor"
           c:type="MetaWindowActor"
           parent="Clutter.Actor"
           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_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">
            <doc xml:space="preserve">a #MetaWindowActor</doc>
            <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,
or NULL if no texture is shown yet, because the window is not mapped.</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">
            <doc xml:space="preserve">a #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">
        <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">
            <doc xml:space="preserve">a #MetaWindowActor</doc>
            <type name="WindowActor" c:type="MetaWindowActor*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="sync_visibility"
              c:identifier="meta_window_actor_sync_visibility">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="WindowActor" c:type="MetaWindowActor*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="meta-window"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="Window"/>
      </property>
      <property name="shadow-class" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="shadow-mode" writable="1" transfer-ownership="none">
        <type name="ShadowMode"/>
      </property>
      <field name="parent">
        <type name="Clutter.Actor" c:type="ClutterActor"/>
      </field>
      <field name="priv">
        <type name="WindowActorPrivate" c:type="MetaWindowActorPrivate*"/>
      </field>
      <glib:signal name="effects-completed" when="last">
        <doc xml:space="preserve">The ::effects-completed signal will be emitted once all pending compositor
effects are completed.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="first-frame" when="last">
        <doc xml:space="preserve">The ::first-frame signal will be emitted the first time a frame
of window contents has been drawn by the application and Mutter
has had the chance to drawn that frame to the screen. If the
window starts off initially hidden, obscured, or on on a
different workspace, the ::first-frame signal will be emitted
even though the user doesn't see the contents.

MetaDisplay::window-created is a good place to connect to this
signal - at that point, the MetaWindowActor for the window
exists, but the window has reliably not yet been drawn.
Connecting to an existing window that has already been drawn to
the screen is not useful.</doc>
        <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" readable="0" private="1">
        <type name="Clutter.ActorClass" c:type="ClutterActorClass"/>
      </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>
    <enumeration name="WindowClientType"
                 glib:type-name="MetaWindowClientType"
                 glib:get-type="meta_window_client_type_get_type"
                 c:type="MetaWindowClientType">
      <member name="wayland"
              value="0"
              c:identifier="META_WINDOW_CLIENT_TYPE_WAYLAND"
              glib:nick="wayland">
        <doc xml:space="preserve">A Wayland based window</doc>
      </member>
      <member name="x11"
              value="1"
              c:identifier="META_WINDOW_CLIENT_TYPE_X11"
              glib:nick="x11">
        <doc xml:space="preserve">An X11 based window</doc>
      </member>
    </enumeration>
    <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="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="1">
          <type name="gpointer" c:type="void*"/>
        </parameter>
      </parameters>
    </callback>
    <class name="WindowGroup"
           c:symbol-prefix="window_group"
           c:type="MetaWindowGroup"
           parent="Clutter.Actor"
           glib:type-name="MetaWindowGroup"
           glib:get-type="meta_window_group_get_type"
           glib:type-struct="WindowGroupClass">
      <implements name="Atk.ImplementorIface"/>
      <implements name="Clutter.Animatable"/>
      <implements name="Clutter.Container"/>
      <implements name="Clutter.Scriptable"/>
    </class>
    <record name="WindowGroupClass"
            c:type="MetaWindowGroupClass"
            glib:is-gtype-struct-for="WindowGroup">
      <field name="parent_class">
        <type name="Clutter.ActorClass" c:type="ClutterActorClass"/>
      </field>
    </record>
    <enumeration name="WindowMenuType"
                 glib:type-name="MetaWindowMenuType"
                 glib:get-type="meta_window_menu_type_get_type"
                 c:type="MetaWindowMenuType">
      <doc xml:space="preserve">Menu the compositor should display for a given window</doc>
      <member name="wm"
              value="0"
              c:identifier="META_WINDOW_MENU_WM"
              glib:nick="wm">
        <doc xml:space="preserve">the window manager menu</doc>
      </member>
      <member name="app"
              value="1"
              c:identifier="META_WINDOW_MENU_APP"
              glib:nick="app">
        <doc xml:space="preserve">the (fallback) app menu</doc>
      </member>
    </enumeration>
    <record name="WindowShape"
            c:type="MetaWindowShape"
            glib:type-name="MetaWindowShape"
            glib:get-type="meta_window_shape_get_type"
            c:symbol-prefix="window_shape">
      <doc xml:space="preserve">#MetaWindowShape represents a 9-sliced region with borders on all sides that
are unscaled, and a constant central region that is scaled. For example,
the regions representing two windows that are rounded rectangles,
with the same corner radius but different sizes, have the
same MetaWindowShape.
#MetaWindowShape is designed to be used as part of a hash table key, so has
efficient hash and equal functions.</doc>
      <constructor name="new" c:identifier="meta_window_shape_new">
        <return-value transfer-ownership="full">
          <type name="WindowShape" c:type="MetaWindowShape*"/>
        </return-value>
        <parameters>
          <parameter name="region" transfer-ownership="none">
            <type name="cairo.Region" c:type="cairo_region_t*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="equal" c:identifier="meta_window_shape_equal">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="shape_a" transfer-ownership="none">
            <type name="WindowShape" c:type="MetaWindowShape*"/>
          </instance-parameter>
          <parameter name="shape_b" transfer-ownership="none">
            <type name="WindowShape" c:type="MetaWindowShape*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_borders" c:identifier="meta_window_shape_get_borders">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="shape" transfer-ownership="none">
            <type name="WindowShape" c:type="MetaWindowShape*"/>
          </instance-parameter>
          <parameter name="border_top" transfer-ownership="none">
            <type name="gint" c:type="int*"/>
          </parameter>
          <parameter name="border_right" transfer-ownership="none">
            <type name="gint" c:type="int*"/>
          </parameter>
          <parameter name="border_bottom" transfer-ownership="none">
            <type name="gint" c:type="int*"/>
          </parameter>
          <parameter name="border_left" transfer-ownership="none">
            <type name="gint" c:type="int*"/>
          </parameter>
        </parameters>
      </method>
      <method name="hash" c:identifier="meta_window_shape_hash">
        <return-value transfer-ownership="none">
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="shape" transfer-ownership="none">
            <type name="WindowShape" c:type="MetaWindowShape*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="meta_window_shape_ref">
        <return-value transfer-ownership="full">
          <type name="WindowShape" c:type="MetaWindowShape*"/>
        </return-value>
        <parameters>
          <instance-parameter name="shape" transfer-ownership="none">
            <type name="WindowShape" c:type="MetaWindowShape*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="to_region" c:identifier="meta_window_shape_to_region">
        <doc xml:space="preserve">Converts the shape to to a cairo_region_t using the given width
and height for the central scaled region.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly created region</doc>
          <type name="cairo.Region" c:type="cairo_region_t*"/>
        </return-value>
        <parameters>
          <instance-parameter name="shape" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWindowShape</doc>
            <type name="WindowShape" c:type="MetaWindowShape*"/>
          </instance-parameter>
          <parameter name="center_width" transfer-ownership="none">
            <doc xml:space="preserve">size of the central region horizontally</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="center_height" transfer-ownership="none">
            <doc xml:space="preserve">size of the central region vertically</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="meta_window_shape_unref">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="shape" transfer-ownership="none">
            <type name="WindowShape" c:type="MetaWindowShape*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <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">
        <doc xml:space="preserve">Normal</doc>
      </member>
      <member name="desktop"
              value="1"
              c:identifier="META_WINDOW_DESKTOP"
              glib:nick="desktop">
        <doc xml:space="preserve">Desktop</doc>
      </member>
      <member name="dock"
              value="2"
              c:identifier="META_WINDOW_DOCK"
              glib:nick="dock">
        <doc xml:space="preserve">Dock</doc>
      </member>
      <member name="dialog"
              value="3"
              c:identifier="META_WINDOW_DIALOG"
              glib:nick="dialog">
        <doc xml:space="preserve">Dialog</doc>
      </member>
      <member name="modal_dialog"
              value="4"
              c:identifier="META_WINDOW_MODAL_DIALOG"
              glib:nick="modal-dialog">
        <doc xml:space="preserve">Modal dialog</doc>
      </member>
      <member name="toolbar"
              value="5"
              c:identifier="META_WINDOW_TOOLBAR"
              glib:nick="toolbar">
        <doc xml:space="preserve">Toolbar</doc>
      </member>
      <member name="menu"
              value="6"
              c:identifier="META_WINDOW_MENU"
              glib:nick="menu">
        <doc xml:space="preserve">Menu</doc>
      </member>
      <member name="utility"
              value="7"
              c:identifier="META_WINDOW_UTILITY"
              glib:nick="utility">
        <doc xml:space="preserve">Utility</doc>
      </member>
      <member name="splashscreen"
              value="8"
              c:identifier="META_WINDOW_SPLASHSCREEN"
              glib:nick="splashscreen">
        <doc xml:space="preserve">Splashcreen</doc>
      </member>
      <member name="dropdown_menu"
              value="9"
              c:identifier="META_WINDOW_DROPDOWN_MENU"
              glib:nick="dropdown-menu">
        <doc xml:space="preserve">Dropdown menu</doc>
      </member>
      <member name="popup_menu"
              value="10"
              c:identifier="META_WINDOW_POPUP_MENU"
              glib:nick="popup-menu">
        <doc xml:space="preserve">Popup menu</doc>
      </member>
      <member name="tooltip"
              value="11"
              c:identifier="META_WINDOW_TOOLTIP"
              glib:nick="tooltip">
        <doc xml:space="preserve">Tooltip</doc>
      </member>
      <member name="notification"
              value="12"
              c:identifier="META_WINDOW_NOTIFICATION"
              glib:nick="notification">
        <doc xml:space="preserve">Notification</doc>
      </member>
      <member name="combo"
              value="13"
              c:identifier="META_WINDOW_COMBO"
              glib:nick="combo">
        <doc xml:space="preserve">Combobox</doc>
      </member>
      <member name="dnd"
              value="14"
              c:identifier="META_WINDOW_DND"
              glib:nick="dnd">
        <doc xml:space="preserve">Drag and drop</doc>
      </member>
      <member name="override_other"
              value="15"
              c:identifier="META_WINDOW_OVERRIDE_OTHER"
              glib:nick="override-other">
        <doc xml:space="preserve">Other override-redirect window type</doc>
      </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_display" c:identifier="meta_workspace_get_display">
        <doc xml:space="preserve">Gets the #MetaDisplay that the workspace is part of.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the #MetaDisplay for the workspace</doc>
          <type name="Display" c:type="MetaDisplay*"/>
        </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="get_neighbor" c:identifier="meta_workspace_get_neighbor">
        <doc xml:space="preserve">Calculate and retrive the workspace that is next to @workspace,
according to @direction and the current workspace layout, as set
by meta_screen_override_workspace_layout().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the workspace next to @workspace, or
  @workspace itself if the neighbor would be outside the layout</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, relative to @workspace</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">
        <doc xml:space="preserve">Stores the work area in @area.</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="area"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve">location to store the work area</doc>
            <type name="Rectangle" c:type="MetaRectangle*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_work_area_for_monitor"
              c:identifier="meta_workspace_get_work_area_for_monitor">
        <doc xml:space="preserve">Stores the work area for @which_monitor on @workspace
in @area.</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="which_monitor" transfer-ownership="none">
            <doc xml:space="preserve">a monitor index</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="area"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve">location to store the work area</doc>
            <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>
      <property name="n-windows" transfer-ownership="none">
        <type name="guint" c:type="guint"/>
      </property>
      <property name="workspace-index" 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>
    <class name="WorkspaceManager"
           c:symbol-prefix="workspace_manager"
           c:type="MetaWorkspaceManager"
           parent="GObject.Object"
           glib:type-name="MetaWorkspaceManager"
           glib:get-type="meta_workspace_manager_get_type"
           glib:type-struct="WorkspaceManagerClass">
      <method name="append_new_workspace"
              c:identifier="meta_workspace_manager_append_new_workspace">
        <doc xml:space="preserve">Append a new workspace to the workspace manager and (optionally) switch to that
display.</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="workspace_manager"
                              transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWorkspaceManager</doc>
            <type name="WorkspaceManager" c:type="MetaWorkspaceManager*"/>
          </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_workspace_manager_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="workspace_manager"
                              transfer-ownership="none">
            <doc xml:space="preserve">A #MetaWorkspaceManager</doc>
            <type name="WorkspaceManager" c:type="MetaWorkspaceManager*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_active_workspace_index"
              c:identifier="meta_workspace_manager_get_active_workspace_index">
        <return-value transfer-ownership="none">
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="workspace_manager"
                              transfer-ownership="none">
            <type name="WorkspaceManager" c:type="MetaWorkspaceManager*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_n_workspaces"
              c:identifier="meta_workspace_manager_get_n_workspaces">
        <return-value transfer-ownership="none">
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="workspace_manager"
                              transfer-ownership="none">
            <type name="WorkspaceManager" c:type="MetaWorkspaceManager*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_workspace_by_index"
              c:identifier="meta_workspace_manager_get_workspace_by_index">
        <doc xml:space="preserve">Gets the workspace object for one of a workspace manager'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="workspace_manager"
                              transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWorkspaceManager</doc>
            <type name="WorkspaceManager" c:type="MetaWorkspaceManager*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve">index of one of the display's workspaces</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_workspaces"
              c:identifier="meta_workspace_manager_get_workspaces"
              introspectable="0">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The workspaces for @display</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="Workspace"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="workspace_manager"
                              transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWorkspaceManager</doc>
            <type name="WorkspaceManager" c:type="MetaWorkspaceManager*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="override_workspace_layout"
              c:identifier="meta_workspace_manager_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="workspace_manager"
                              transfer-ownership="none">
            <doc xml:space="preserve">a #MetaWorkspaceManager</doc>
            <type name="WorkspaceManager" c:type="MetaWorkspaceManager*"/>
          </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="DisplayCorner" c:type="MetaDisplayCorner"/>
          </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_workspace_manager_remove_workspace">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="workspace_manager"
                              transfer-ownership="none">
            <type name="WorkspaceManager" c:type="MetaWorkspaceManager*"/>
          </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>
      <property name="n-workspaces" transfer-ownership="none">
        <type name="gint" c:type="gint"/>
      </property>
      <glib:signal name="active-workspace-changed" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="showing-desktop-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="WorkspaceManagerClass"
            c:type="MetaWorkspaceManagerClass"
            glib:is-gtype-struct-for="WorkspaceManager">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <class name="X11Display"
           c:symbol-prefix="x11_display"
           c:type="MetaX11Display"
           parent="GObject.Object"
           glib:type-name="MetaX11Display"
           glib:get-type="meta_x11_display_get_type"
           glib:type-struct="X11DisplayClass">
      <method name="focus_the_no_focus_window"
              c:identifier="meta_x11_display_focus_the_no_focus_window">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="x11_display" transfer-ownership="none">
            <type name="X11Display" c:type="MetaX11Display*"/>
          </instance-parameter>
          <parameter name="timestamp" transfer-ownership="none">
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_damage_event_base"
              c:identifier="meta_x11_display_get_damage_event_base">
        <return-value transfer-ownership="none">
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="x11_display" transfer-ownership="none">
            <type name="X11Display" c:type="MetaX11Display*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_screen_number"
              c:identifier="meta_x11_display_get_screen_number">
        <return-value transfer-ownership="none">
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="x11_display" transfer-ownership="none">
            <type name="X11Display" c:type="MetaX11Display*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_shape_event_base"
              c:identifier="meta_x11_display_get_shape_event_base">
        <return-value transfer-ownership="none">
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="x11_display" transfer-ownership="none">
            <type name="X11Display" c:type="MetaX11Display*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_xdisplay"
              c:identifier="meta_x11_display_get_xdisplay"
              introspectable="0">
        <return-value>
          <type name="xlib.Display" c:type="Display*"/>
        </return-value>
        <parameters>
          <instance-parameter name="x11_display" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaX11Display</doc>
            <type name="X11Display" c:type="MetaX11Display*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_xinput_opcode"
              c:identifier="meta_x11_display_get_xinput_opcode"
              introspectable="0">
        <return-value transfer-ownership="none">
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="x11_display" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaX11Display</doc>
            <type name="X11Display" c:type="MetaX11Display*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_xroot"
              c:identifier="meta_x11_display_get_xroot"
              introspectable="0">
        <return-value transfer-ownership="none">
          <type name="xlib.Window" c:type="Window"/>
        </return-value>
        <parameters>
          <instance-parameter name="x11_display" transfer-ownership="none">
            <doc xml:space="preserve">A #MetaX11Display</doc>
            <type name="X11Display" c:type="MetaX11Display*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="has_shape" c:identifier="meta_x11_display_has_shape">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="x11_display" transfer-ownership="none">
            <type name="X11Display" c:type="MetaX11Display*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="lookup_group"
              c:identifier="meta_x11_display_lookup_group"
              introspectable="0">
        <return-value>
          <type name="Group" c:type="MetaGroup*"/>
        </return-value>
        <parameters>
          <instance-parameter name="x11_display" transfer-ownership="none">
            <doc xml:space="preserve">a #MetaX11Display</doc>
            <type name="X11Display" c:type="MetaX11Display*"/>
          </instance-parameter>
          <parameter name="group_leader" transfer-ownership="none">
            <doc xml:space="preserve">a X window</doc>
            <type name="xlib.Window" c:type="Window"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_cm_selection"
              c:identifier="meta_x11_display_set_cm_selection">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="x11_display" transfer-ownership="none">
            <type name="X11Display" c:type="MetaX11Display*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_input_focus_window"
              c:identifier="meta_x11_display_set_input_focus_window">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="x11_display" transfer-ownership="none">
            <type name="X11Display" c:type="MetaX11Display*"/>
          </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="xwindow_is_a_no_focus_window"
              c:identifier="meta_x11_display_xwindow_is_a_no_focus_window">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE iff window is one of mutter's internal "no focus" windows
which will have the focus when there is no actual client window focused.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="x11_display" transfer-ownership="none">
            <doc xml:space="preserve">A #MetaX11Display</doc>
            <type name="X11Display" c:type="MetaX11Display*"/>
          </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>
    </class>
    <record name="X11DisplayClass"
            c:type="MetaX11DisplayClass"
            glib:is-gtype-struct-for="X11Display">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <function name="activate_session" c:identifier="meta_activate_session">
      <doc xml:space="preserve">Tells mutter to activate the session. When mutter is a
display server, this tells logind to switch over to
the new session.</doc>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <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="clutter_init"
              c:identifier="meta_clutter_init"
              introspectable="0">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </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_display"
              c:identifier="meta_disable_unredirect_for_display">
      <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="display" transfer-ownership="none">
          <doc xml:space="preserve">a #MetaDisplay</doc>
          <type name="Display" c:type="MetaDisplay*"/>
        </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="display" transfer-ownership="none">
          <type name="Display" c:type="MetaDisplay*"/>
        </parameter>
      </parameters>
    </function>
    <function name="enable_unredirect_for_display"
              c:identifier="meta_enable_unredirect_for_display">
      <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="display" transfer-ownership="none">
          <doc xml:space="preserve">a #MetaDisplay</doc>
          <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="external_binding_name_for_action"
              c:identifier="meta_external_binding_name_for_action">
      <return-value transfer-ownership="full">
        <type name="utf8" c:type="char*"/>
      </return-value>
      <parameters>
        <parameter name="keybinding_action" transfer-ownership="none">
          <type name="guint" c:type="guint"/>
        </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="focus_stage_window" c:identifier="meta_focus_stage_window">
      <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="timestamp" transfer-ownership="none">
          <type name="guint32" c:type="guint32"/>
        </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">
          <doc xml:space="preserve">a #MetaFrameType</doc>
          <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">
          <doc xml:space="preserve">list to deep free</doc>
          <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_backend" c:identifier="meta_get_backend">
      <doc xml:space="preserve">Accessor for the singleton MetaBackend.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">The only #MetaBackend there is.</doc>
        <type name="Backend" c:type="MetaBackend*"/>
      </return-value>
    </function>
    <function name="get_feedback_group_for_display"
              c:identifier="meta_get_feedback_group_for_display">
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">The feedback group corresponding to @display</doc>
        <type name="Clutter.Actor" c:type="ClutterActor*"/>
      </return-value>
      <parameters>
        <parameter name="display" transfer-ownership="none">
          <doc xml:space="preserve">a #MetaDisplay</doc>
          <type name="Display" c:type="MetaDisplay*"/>
        </parameter>
      </parameters>
    </function>
    <function name="get_locale_direction"
              c:identifier="meta_get_locale_direction">
      <return-value transfer-ownership="none">
        <type name="LocaleDirection" c:type="MetaLocaleDirection"/>
      </return-value>
    </function>
    <function name="get_option_context"
              c:identifier="meta_get_option_context"
              introspectable="0">
      <doc xml:space="preserve">Returns a #GOptionContext initialized with mutter-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_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="display" transfer-ownership="none">
          <doc xml:space="preserve">a #MetaDisplay</doc>
          <type name="Display" c:type="MetaDisplay*"/>
        </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_display"
              c:identifier="meta_get_stage_for_display">
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">The #ClutterStage for the display</doc>
        <type name="Clutter.Actor" c:type="ClutterActor*"/>
      </return-value>
      <parameters>
        <parameter name="display" transfer-ownership="none">
          <doc xml:space="preserve">a #MetaDisplay</doc>
          <type name="Display" c:type="MetaDisplay*"/>
        </parameter>
      </parameters>
    </function>
    <function name="get_top_window_group_for_display"
              c:identifier="meta_get_top_window_group_for_display">
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">The top window group corresponding to @display</doc>
        <type name="Clutter.Actor" c:type="ClutterActor*"/>
      </return-value>
      <parameters>
        <parameter name="display" transfer-ownership="none">
          <doc xml:space="preserve">a #MetaDisplay</doc>
          <type name="Display" c:type="MetaDisplay*"/>
        </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 @display</doc>
        <type name="GLib.List" c:type="GList*">
          <type name="Clutter.Actor"/>
        </type>
      </return-value>
      <parameters>
        <parameter name="display" transfer-ownership="none">
          <doc xml:space="preserve">a #MetaDisplay</doc>
          <type name="Display" c:type="MetaDisplay*"/>
        </parameter>
      </parameters>
    </function>
    <function name="get_window_group_for_display"
              c:identifier="meta_get_window_group_for_display">
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">The window group corresponding to @display</doc>
        <type name="Clutter.Actor" c:type="ClutterActor*"/>
      </return-value>
      <parameters>
        <parameter name="display" transfer-ownership="none">
          <doc xml:space="preserve">a #MetaDisplay</doc>
          <type name="Display" c:type="MetaDisplay*"/>
        </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 mutter. 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_restart" c:identifier="meta_is_restart">
      <doc xml:space="preserve">Returns %TRUE if this instance of Mutter comes from Mutter
restarting itself (for example to enable/disable stereo.)
See meta_restart(). If this is the case, any startup visuals
or animations should be suppressed.</doc>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <function name="is_syncing" c:identifier="meta_is_syncing">
      <doc xml:space="preserve">Returns whether X synchronisation is currently enabled.

FIXME: This is *only* called by meta_display_open(), but by that time
we have already turned syncing on or off on startup, and we don't
have any way to do so while Mutter is running, so it's rather
pointless.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%TRUE if we must wait for events whenever we send X requests;
%FALSE otherwise.</doc>
        <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="is_wayland_compositor"
              c:identifier="meta_is_wayland_compositor">
      <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">
      <doc xml:space="preserve">Allows users to register a custom handler for a
builtin key binding.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%TRUE if the binding known as @name was found,
%FALSE otherwise.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="name" transfer-ownership="none">
          <doc xml:space="preserve">The name of the keybinding to set</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="handler"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   scope="notified"
                   closure="2"
                   destroy="3">
          <doc xml:space="preserve">The new handler function</doc>
          <type name="KeyHandlerFunc" c:type="MetaKeyHandlerFunc"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">User data to pass to the callback</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
        <parameter name="free_data" transfer-ownership="none" scope="async">
          <doc xml:space="preserve">Will be called when this handler is overridden.</doc>
          <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"
                   nullable="1"
                   allow-none="1">
          <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">
          <doc xml:space="preserve">a #MetaPrefsChangedFunc</doc>
          <type name="PrefsChangedFunc" c:type="MetaPrefsChangedFunc"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">data passed to the function</doc>
          <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="GDesktopEnums.TitlebarAction"
              c:type="GDesktopTitlebarAction"/>
      </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="GDesktopEnums.TitlebarAction"
              c:type="GDesktopTitlebarAction"/>
      </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="GDesktopEnums.TitlebarAction"
              c:type="GDesktopTitlebarAction"/>
      </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_maximize"
              c:identifier="meta_prefs_get_auto_maximize">
      <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"
                   direction="out"
                   caller-allocates="1"
                   transfer-ownership="none">
          <type name="ButtonLayout" c:type="MetaButtonLayout*"/>
        </parameter>
      </parameters>
    </function>
    <function name="prefs_get_center_new_windows"
              c:identifier="meta_prefs_get_center_new_windows">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </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_drag_threshold"
              c:identifier="meta_prefs_get_drag_threshold">
      <return-value transfer-ownership="none">
        <type name="gint" c:type="int"/>
      </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_change_on_pointer_rest"
              c:identifier="meta_prefs_get_focus_change_on_pointer_rest">
      <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="GDesktopEnums.FocusMode" c:type="GDesktopFocusMode"/>
      </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="GDesktopEnums.FocusNewWindows"
              c:type="GDesktopFocusNewWindows"/>
      </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_ignore_request_hide_titlebar"
              c:identifier="meta_prefs_get_ignore_request_hide_titlebar">
      <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_mouse_button_menu"
              c:identifier="meta_prefs_get_mouse_button_menu">
      <return-value transfer-ownership="none">
        <type name="gint" c:type="gint"/>
      </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="gint" c:type="gint"/>
      </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_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_show_fallback_app_menu"
              c:identifier="meta_prefs_get_show_fallback_app_menu">
      <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_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="GDesktopEnums.VisualBellType"
              c:type="GDesktopVisualBellType"/>
      </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_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">
          <doc xml:space="preserve">a #MetaPrefsChangedFunc</doc>
          <type name="PrefsChangedFunc" c:type="MetaPrefsChangedFunc"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">data passed to the function</doc>
          <type name="gpointer" c:type="gpointer"/>
        </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_ignore_request_hide_titlebar"
              c:identifier="meta_prefs_set_ignore_request_hide_titlebar">
      <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="prefs_set_show_fallback_app_menu"
              c:identifier="meta_prefs_set_show_fallback_app_menu">
      <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="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">
      <doc xml:space="preserve">Stops Mutter. This tells the event loop to stop processing; it is
rather dangerous to use this because this will leave the user with
no window manager. We generally do this only if, for example, the
session manager asks us to; we assume the session manager knows
what it's talking about.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="code" transfer-ownership="none">
          <doc xml:space="preserve">The success or failure code to return to the calling process.</doc>
          <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="register_with_session"
              c:identifier="meta_register_with_session">
      <doc xml:space="preserve">Registers mutter with the session manager.  Call this after completing your own
initialization.

This should be called when the session manager can safely continue to the
next phase of startup and potentially display windows.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </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="restart" c:identifier="meta_restart">
      <doc xml:space="preserve">Starts the process of restarting the compositor. Note that Mutter's
involvement here is to make the restart visually smooth for the
user - it cannot itself safely reexec a program that embeds libmuttter.
So in order for this to work, the compositor must handle two
signals -  MetaDisplay::show-restart-message, to display the
message passed here on the Clutter stage, and ::restart to actually
reexec the compositor.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="message"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">message to display to the user, or %NULL</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="run" c:identifier="meta_run" introspectable="0">
      <doc xml:space="preserve">Runs mutter. Call this after completing initialization that doesn't require
an event loop.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">mutter's exit status</doc>
        <type name="gint" c:type="int"/>
      </return-value>
    </function>
    <function name="set_gnome_wm_keybindings"
              c:identifier="meta_set_gnome_wm_keybindings"
              introspectable="0">
      <doc xml:space="preserve">Set the value to use for the _GNOME_WM_KEYBINDINGS property. To take
effect, it is necessary to call this function before meta_init().</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="wm_keybindings" transfer-ownership="none">
          <doc xml:space="preserve">value for _GNOME_WM_KEYBINDINGS</doc>
          <type name="utf8" c:type="const char*"/>
        </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="display" transfer-ownership="none">
          <type name="Display" c:type="MetaDisplay*"/>
        </parameter>
        <parameter name="region" transfer-ownership="none">
          <type name="xfixes.XserverRegion" c:type="XserverRegion"/>
        </parameter>
      </parameters>
    </function>
    <function name="set_wm_name"
              c:identifier="meta_set_wm_name"
              introspectable="0">
      <doc xml:space="preserve">Set the value to use for the _NET_WM_NAME property. To take effect,
it is necessary to call this function before meta_init().</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="wm_name" transfer-ownership="none">
          <doc xml:space="preserve">value for _NET_WM_NAME</doc>
          <type name="utf8" c:type="const char*"/>
        </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">
          <doc xml:space="preserve">type of dialog</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="message" transfer-ownership="none">
          <doc xml:space="preserve">message</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="timeout" transfer-ownership="none">
          <doc xml:space="preserve">timeout</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="display" transfer-ownership="none">
          <doc xml:space="preserve">display</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="ok_text" transfer-ownership="none">
          <doc xml:space="preserve">text for Ok button</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="cancel_text" transfer-ownership="none">
          <doc xml:space="preserve">text for Cancel button</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="icon_name" transfer-ownership="none">
          <doc xml:space="preserve">icon name</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="transient_for" transfer-ownership="none">
          <doc xml:space="preserve">window XID of parent</doc>
          <type name="gint" c:type="const int"/>
        </parameter>
        <parameter name="columns" transfer-ownership="none">
          <doc xml:space="preserve">columns</doc>
          <type name="GLib.SList" c:type="GSList*">
            <type name="gpointer" c:type="gpointer"/>
          </type>
        </parameter>
        <parameter name="entries" transfer-ownership="none">
          <doc xml:space="preserve">entries</doc>
          <type name="GLib.SList" c:type="GSList*">
            <type name="gpointer" c:type="gpointer"/>
          </type>
        </parameter>
      </parameters>
    </function>
    <function name="theme_get_default"
              c:identifier="meta_theme_get_default"
              moved-to="Theme.get_default"
              introspectable="0">
      <return-value>
        <type name="Theme" c:type="MetaTheme*"/>
      </return-value>
    </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="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"
                   nullable="1"
                   allow-none="1">
          <type name="gpointer" c:type="gconstpointer"/>
        </parameter>
        <parameter name="v2"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <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"
                   nullable="1"
                   allow-none="1">
          <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>
    <function name="x11_error_trap_pop" c:identifier="meta_x11_error_trap_pop">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="x11_display" transfer-ownership="none">
          <type name="X11Display" c:type="MetaX11Display*"/>
        </parameter>
      </parameters>
    </function>
    <function name="x11_error_trap_pop_with_return"
              c:identifier="meta_x11_error_trap_pop_with_return">
      <return-value transfer-ownership="none">
        <type name="gint" c:type="int"/>
      </return-value>
      <parameters>
        <parameter name="x11_display" transfer-ownership="none">
          <type name="X11Display" c:type="MetaX11Display*"/>
        </parameter>
      </parameters>
    </function>
    <function name="x11_error_trap_push"
              c:identifier="meta_x11_error_trap_push">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="x11_display" transfer-ownership="none">
          <type name="X11Display" c:type="MetaX11Display*"/>
        </parameter>
      </parameters>
    </function>
    <function name="x11_init_gdk_display"
              c:identifier="meta_x11_init_gdk_display"
              throws="1">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
  </namespace>
</repository>
