<?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="GObject" version="2.0"/>
  <include name="Gtk" version="2.0"/>
  <package name="gobject-2.0"/>
  <package name="gtk+-2.0"/>
  <c:include name="unique/unique.h"/>
  <namespace name="Unique"
             version="1.0"
             shared-library="libunique-1.0.so.2.0"
             c:identifier-prefixes="Unique"
             c:symbol-prefixes="unique">
    <function-macro name="APP" c:identifier="UNIQUE_APP" introspectable="0">
      <source-position filename="uniqueapp.h" line="32"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="APP_CLASS"
                    c:identifier="UNIQUE_APP_CLASS"
                    introspectable="0">
      <source-position filename="uniqueapp.h" line="34"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="APP_GET_CLASS"
                    c:identifier="UNIQUE_APP_GET_CLASS"
                    introspectable="0">
      <source-position filename="uniqueapp.h" line="36"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="App"
           c:symbol-prefix="app"
           c:type="UniqueApp"
           parent="GObject.Object"
           glib:type-name="UniqueApp"
           glib:get-type="unique_app_get_type"
           glib:type-struct="AppClass">
      <doc xml:space="preserve"
           filename="uniqueapp.h"
           line="82">The base class for every single instance application. The #UniqueApp
structure contains only private data and should be manipulated only
with the provided functions.</doc>
      <source-position filename="uniqueapp.h" line="121"/>
      <constructor name="new" c:identifier="unique_app_new">
        <doc xml:space="preserve"
             filename="uniqueapp.c"
             line="494">Creates a new #UniqueApp instance for @name passing a start-up notification
id @startup_id.  The name must be a unique identifier for the application,
and it must be in form of a domain name, like
&lt;literal&gt;org.gnome.YourApplication&lt;/literal&gt;.

If @startup_id is %NULL the &lt;literal&gt;DESKTOP_STARTUP_ID&lt;/literal&gt;
environment variable will be check, and if that fails a "fake" startup
notification id will be created.

Once you have created a #UniqueApp instance, you should check if
any other instance is running, using unique_app_is_running().
If another instance is running you can send a command to it, using
the unique_app_send_message() function; after that, the second instance
should quit. If no other instance is running, the usual logic for
creating the application can follow.</doc>
        <source-position filename="uniqueapp.h" line="125"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="uniqueapp.c"
               line="515">the newly created #UniqueApp instance.</doc>
          <type name="App" c:type="UniqueApp*"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniqueapp.c"
                 line="496">the name of the application's instance</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="startup_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniqueapp.c"
                 line="497">the startup notification id, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_with_commands"
                   c:identifier="unique_app_new_with_commands"
                   introspectable="0">
        <doc xml:space="preserve"
             filename="uniqueapp.c"
             line="554">Creates a new #UniqueApp instance, with @name and @startup_id,
and registers a list of custom commands. See unique_app_new() and
unique_app_add_command().</doc>
        <source-position filename="uniqueapp.h" line="127"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="uniqueapp.c"
               line="565">the newly created #UniqueApp instance.</doc>
          <type name="App" c:type="UniqueApp*"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniqueapp.c"
                 line="556">the name of the application</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="startup_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniqueapp.c"
                 line="557">startup notification id, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="first_command_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniqueapp.c"
                 line="558">first custom command</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniqueapp.c"
                 line="559">%NULL terminated list of command names and command ids</doc>
            <varargs/>
          </parameter>
        </parameters>
      </constructor>
      <virtual-method name="message_received">
        <source-position filename="uniqueapp.h" line="110"/>
        <return-value transfer-ownership="none">
          <type name="Response" c:type="UniqueResponse"/>
        </return-value>
        <parameters>
          <instance-parameter name="app" transfer-ownership="none">
            <type name="App" c:type="UniqueApp*"/>
          </instance-parameter>
          <parameter name="command" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="message_data" transfer-ownership="none">
            <type name="MessageData" c:type="UniqueMessageData*"/>
          </parameter>
          <parameter name="time_" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="add_command" c:identifier="unique_app_add_command">
        <doc xml:space="preserve"
             filename="uniqueapp.c"
             line="716">Adds @command_name as a custom command that can be used by @app. You
must call unique_app_add_command() before unique_app_send_message() in
order to use the newly added command.

The command name is used internally: you need to use the command's logical
id in unique_app_send_message() and inside the UniqueApp::message-received
signal.</doc>
        <source-position filename="uniqueapp.h" line="131"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="app" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniqueapp.c"
                 line="718">a #UniqueApp</doc>
            <type name="App" c:type="UniqueApp*"/>
          </instance-parameter>
          <parameter name="command_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniqueapp.c"
                 line="719">command name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="command_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniqueapp.c"
                 line="720">command logical id</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_running"
              c:identifier="unique_app_is_running"
              glib:get-property="is-running">
        <doc xml:space="preserve"
             filename="uniqueapp.c"
             line="588">Checks whether another instance of @app is running.</doc>
        <source-position filename="uniqueapp.h" line="137"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="uniqueapp.c"
               line="594">%TRUE if there already is an instance running</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="app" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniqueapp.c"
                 line="590">a #UniqueApp</doc>
            <type name="App" c:type="UniqueApp*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="send_message" c:identifier="unique_app_send_message">
        <doc xml:space="preserve"
             filename="uniqueapp.c"
             line="604">Sends @command to a running instance of @app. If you need to pass data
to the instance, you should create a #UniqueMessageData object using
unique_message_data_new() and then fill it with the data you intend to
pass.

The running application will receive a UniqueApp::message-received signal
and will call the various signal handlers attach to it. If any handler
returns a #UniqueResponse different than %UNIQUE_RESPONSE_OK, the emission
will stop.</doc>
        <source-position filename="uniqueapp.h" line="138"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="uniqueapp.c"
               line="620">The #UniqueResponse returned by the running instance</doc>
          <type name="Response" c:type="UniqueResponse"/>
        </return-value>
        <parameters>
          <instance-parameter name="app" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniqueapp.c"
                 line="606">a #UniqueApp</doc>
            <type name="App" c:type="UniqueApp*"/>
          </instance-parameter>
          <parameter name="command_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniqueapp.c"
                 line="607">command to send</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="message_data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniqueapp.c"
                 line="608">#UniqueMessageData, or %NULL</doc>
            <type name="MessageData" c:type="UniqueMessageData*"/>
          </parameter>
        </parameters>
      </method>
      <method name="watch_window" c:identifier="unique_app_watch_window">
        <doc xml:space="preserve"
             filename="uniqueapp.c"
             line="760">Makes @app "watch" a window. Every watched window will receive
startup notification changes automatically.</doc>
        <source-position filename="uniqueapp.h" line="134"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="app" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniqueapp.c"
                 line="762">a #UniqueApp</doc>
            <type name="App" c:type="UniqueApp*"/>
          </instance-parameter>
          <parameter name="window" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniqueapp.c"
                 line="763">the #GtkWindow to watch</doc>
            <type name="Gtk.Window" c:type="GtkWindow*"/>
          </parameter>
        </parameters>
      </method>
      <property name="is-running"
                transfer-ownership="none"
                getter="is_running">
        <doc xml:space="preserve"
             filename="uniqueapp.c"
             line="430">Whether another instance of the application is running.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="name"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve"
             filename="uniqueapp.c"
             line="388">The unique name of the application. It must be in form of
a domain-like string, like &lt;literal&gt;org.gnome.MyApplication&lt;/literal&gt;.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="screen"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <doc xml:space="preserve"
             filename="uniqueapp.c"
             line="417">The #GdkScreen of the application.</doc>
        <type name="Gdk.Screen"/>
      </property>
      <property name="startup-id"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve"
             filename="uniqueapp.c"
             line="402">The startup notification id, needed to complete the startup
notification sequence. If not set, a default id will be
automatically given.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent_instance" readable="0" private="1">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="AppPrivate" c:type="UniqueAppPrivate*"/>
      </field>
      <glib:signal name="message-received"
                   when="last"
                   no-recurse="1"
                   no-hooks="1"
                   introspectable="0">
        <doc xml:space="preserve"
             filename="uniqueapp.c"
             line="442">The ::message-received signal is emitted each time a second instance
of #UniqueApp with the same name as @app is launched and sends a
message using unique_app_send_message(). The currently running instance
should check @command for the action to execute and @message_data for
eventual other parameters (see #UniqueMessageData).

The signal handler should return a #UniqueResponse value depending on
whether the command was successfully completed or not. If the
%UNIQUE_RESPONSE_PASSTHROUGH return value is used, the signal
emission chain will continue until another handler will return another
response code.</doc>
        <return-value>
          <type/>
        </return-value>
        <parameters>
          <parameter name="command" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniqueapp.c"
                 line="445">command received</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="message_data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniqueapp.c"
                 line="446">message data</doc>
            <type name="MessageData"/>
          </parameter>
          <parameter name="time_" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniqueapp.c"
                 line="447">timestamp of the command</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="AppClass"
            c:type="UniqueAppClass"
            glib:is-gtype-struct-for="App">
      <doc xml:space="preserve"
           filename="uniqueapp.h"
           line="97">Base class for every single instance application.</doc>
      <source-position filename="uniqueapp.h" line="121"/>
      <field name="parent_class" readable="0" private="1">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="message_received">
        <callback name="message_received">
          <source-position filename="uniqueapp.h" line="110"/>
          <return-value transfer-ownership="none">
            <type name="Response" c:type="UniqueResponse"/>
          </return-value>
          <parameters>
            <parameter name="app" transfer-ownership="none">
              <type name="App" c:type="UniqueApp*"/>
            </parameter>
            <parameter name="command" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="message_data" transfer-ownership="none">
              <type name="MessageData" c:type="UniqueMessageData*"/>
            </parameter>
            <parameter name="time_" transfer-ownership="none">
              <type name="guint" c:type="guint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_unique_reserved1" introspectable="0">
        <callback name="_unique_reserved1">
          <source-position filename="uniqueapp.h" line="117"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_unique_reserved2" introspectable="0">
        <callback name="_unique_reserved2">
          <source-position filename="uniqueapp.h" line="118"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_unique_reserved3" introspectable="0">
        <callback name="_unique_reserved3">
          <source-position filename="uniqueapp.h" line="119"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_unique_reserved4" introspectable="0">
        <callback name="_unique_reserved4">
          <source-position filename="uniqueapp.h" line="120"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <record name="AppPrivate" c:type="UniqueAppPrivate" disguised="1">
      <source-position filename="uniqueapp.h" line="79"/>
    </record>
    <function-macro name="BACKEND"
                    c:identifier="UNIQUE_BACKEND"
                    introspectable="0">
      <source-position filename="uniquebackend.h" line="32"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="BACKEND_CLASS"
                    c:identifier="UNIQUE_BACKEND_CLASS"
                    introspectable="0">
      <source-position filename="uniquebackend.h" line="34"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="BACKEND_GET_CLASS"
                    c:identifier="UNIQUE_BACKEND_GET_CLASS"
                    introspectable="0">
      <source-position filename="uniquebackend.h" line="36"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="Backend"
           c:symbol-prefix="backend"
           c:type="UniqueBackend"
           parent="GObject.Object"
           abstract="1"
           glib:type-name="UniqueBackend"
           glib:get-type="unique_backend_get_type"
           glib:type-struct="BackendClass">
      <doc xml:space="preserve"
           filename="uniquebackend.h"
           line="41">The #UniqueBackend structure contains only private data and should only
be accessed using the provided functions.</doc>
      <source-position filename="uniquebackend.h" line="91"/>
      <function name="create"
                c:identifier="unique_backend_create"
                introspectable="0">
        <doc xml:space="preserve"
             filename="uniquebackend.c"
             line="302">Creates a #UniqueBackend using the default backend defined at
compile time. You can override the default backend by setting the
&lt;literal&gt;UNIQUE_BACKEND&lt;/literal&gt; environment variable with the
name of the desired backend.</doc>
        <source-position filename="uniquebackend.h" line="95"/>
        <return-value>
          <doc xml:space="preserve"
               filename="uniquebackend.c"
               line="310">the newly created #UniqueBackend instance</doc>
          <type name="Backend" c:type="UniqueBackend*"/>
        </return-value>
      </function>
      <virtual-method name="request_name" invoker="request_name">
        <doc xml:space="preserve"
             filename="uniquebackend.c"
             line="251">Requests the name set using unique_backend_set_name() using @backend.</doc>
        <source-position filename="uniquebackend.h" line="77"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="uniquebackend.c"
               line="257">%TRUE if the name was assigned to us, %FALSE if there
  already is a registered name</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquebackend.c"
                 line="253">a #UniqueBackend</doc>
            <type name="Backend" c:type="UniqueBackend*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="send_message" invoker="send_message">
        <doc xml:space="preserve"
             filename="uniquebackend.c"
             line="268">Sends @command_id, and optionally @message_data, to a running instance
using @backend.</doc>
        <source-position filename="uniquebackend.h" line="78"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="uniquebackend.c"
               line="278">a #UniqueResponse value sent by the running instance</doc>
          <type name="Response" c:type="UniqueResponse"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquebackend.c"
                 line="270">a #UniqueBackend</doc>
            <type name="Backend" c:type="UniqueBackend*"/>
          </instance-parameter>
          <parameter name="command_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquebackend.c"
                 line="271">command to send</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="message_data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquebackend.c"
                 line="272">message to send, or %NULL</doc>
            <type name="MessageData" c:type="UniqueMessageData*"/>
          </parameter>
          <parameter name="time_" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquebackend.c"
                 line="273">time of the command emission, or 0 for the current time</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="get_name" c:identifier="unique_backend_get_name">
        <doc xml:space="preserve"
             filename="uniquebackend.c"
             line="106">FIXME</doc>
        <source-position filename="uniquebackend.h" line="97"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="uniquebackend.c"
               line="112">FIXME</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquebackend.c"
                 line="108">FIXME</doc>
            <type name="Backend" c:type="UniqueBackend*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_screen"
              c:identifier="unique_backend_get_screen"
              introspectable="0">
        <doc xml:space="preserve"
             filename="uniquebackend.c"
             line="185">FIXME</doc>
        <source-position filename="uniquebackend.h" line="103"/>
        <return-value>
          <doc xml:space="preserve"
               filename="uniquebackend.c"
               line="191">FIXME</doc>
          <type name="Gdk.Screen" c:type="GdkScreen*"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquebackend.c"
                 line="187">FIXME</doc>
            <type name="Backend" c:type="UniqueBackend*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_startup_id"
              c:identifier="unique_backend_get_startup_id">
        <doc xml:space="preserve"
             filename="uniquebackend.c"
             line="149">FIXME</doc>
        <source-position filename="uniquebackend.h" line="100"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="uniquebackend.c"
               line="155">FIXME</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquebackend.c"
                 line="151">FIXME</doc>
            <type name="Backend" c:type="UniqueBackend*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_workspace" c:identifier="unique_backend_get_workspace">
        <doc xml:space="preserve"
             filename="uniquebackend.c"
             line="201">Retrieves the current workspace.</doc>
        <source-position filename="uniquebackend.h" line="106"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="uniquebackend.c"
               line="207">a workspace number</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquebackend.c"
                 line="203">a #UniqueBackend</doc>
            <type name="Backend" c:type="UniqueBackend*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="request_name" c:identifier="unique_backend_request_name">
        <doc xml:space="preserve"
             filename="uniquebackend.c"
             line="251">Requests the name set using unique_backend_set_name() using @backend.</doc>
        <source-position filename="uniquebackend.h" line="108"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="uniquebackend.c"
               line="257">%TRUE if the name was assigned to us, %FALSE if there
  already is a registered name</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquebackend.c"
                 line="253">a #UniqueBackend</doc>
            <type name="Backend" c:type="UniqueBackend*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="send_message" c:identifier="unique_backend_send_message">
        <doc xml:space="preserve"
             filename="uniquebackend.c"
             line="268">Sends @command_id, and optionally @message_data, to a running instance
using @backend.</doc>
        <source-position filename="uniquebackend.h" line="109"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="uniquebackend.c"
               line="278">a #UniqueResponse value sent by the running instance</doc>
          <type name="Response" c:type="UniqueResponse"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquebackend.c"
                 line="270">a #UniqueBackend</doc>
            <type name="Backend" c:type="UniqueBackend*"/>
          </instance-parameter>
          <parameter name="command_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquebackend.c"
                 line="271">command to send</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="message_data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquebackend.c"
                 line="272">message to send, or %NULL</doc>
            <type name="MessageData" c:type="UniqueMessageData*"/>
          </parameter>
          <parameter name="time_" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquebackend.c"
                 line="273">time of the command emission, or 0 for the current time</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_name" c:identifier="unique_backend_set_name">
        <doc xml:space="preserve"
             filename="uniquebackend.c"
             line="79">FIXME</doc>
        <source-position filename="uniquebackend.h" line="98"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquebackend.c"
                 line="81">FIXME</doc>
            <type name="Backend" c:type="UniqueBackend*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquebackend.c"
                 line="82">FIXME</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_screen" c:identifier="unique_backend_set_screen">
        <doc xml:space="preserve"
             filename="uniquebackend.c"
             line="165">FIXME</doc>
        <source-position filename="uniquebackend.h" line="104"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquebackend.c"
                 line="167">FIXME</doc>
            <type name="Backend" c:type="UniqueBackend*"/>
          </instance-parameter>
          <parameter name="screen" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquebackend.c"
                 line="168">FIXME</doc>
            <type name="Gdk.Screen" c:type="GdkScreen*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_startup_id"
              c:identifier="unique_backend_set_startup_id">
        <doc xml:space="preserve"
             filename="uniquebackend.c"
             line="122">FIXME</doc>
        <source-position filename="uniquebackend.h" line="101"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquebackend.c"
                 line="124">FIXME</doc>
            <type name="Backend" c:type="UniqueBackend*"/>
          </instance-parameter>
          <parameter name="startup_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquebackend.c"
                 line="125">FIXME</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="parent" readable="0" private="1">
        <type name="App" c:type="UniqueApp*"/>
      </field>
      <field name="name" readable="0" private="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="startup_id" readable="0" private="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="screen" readable="0" private="1">
        <type name="Gdk.Screen" c:type="GdkScreen*"/>
      </field>
      <field name="workspace" readable="0" private="1">
        <type name="guint" c:type="guint"/>
      </field>
    </class>
    <record name="BackendClass"
            c:type="UniqueBackendClass"
            glib:is-gtype-struct-for="Backend">
      <doc xml:space="preserve"
           filename="uniquebackend.h"
           line="61">The class that should be implemented by every backend for #UniqueApp.</doc>
      <source-position filename="uniquebackend.h" line="91"/>
      <field name="parent_instance" readable="0" private="1">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="request_name">
        <callback name="request_name">
          <source-position filename="uniquebackend.h" line="77"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquebackend.c"
                 line="257">%TRUE if the name was assigned to us, %FALSE if there
  already is a registered name</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="backend" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="uniquebackend.c"
                   line="253">a #UniqueBackend</doc>
              <type name="Backend" c:type="UniqueBackend*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="send_message">
        <callback name="send_message">
          <source-position filename="uniquebackend.h" line="78"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquebackend.c"
                 line="278">a #UniqueResponse value sent by the running instance</doc>
            <type name="Response" c:type="UniqueResponse"/>
          </return-value>
          <parameters>
            <parameter name="backend" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="uniquebackend.c"
                   line="270">a #UniqueBackend</doc>
              <type name="Backend" c:type="UniqueBackend*"/>
            </parameter>
            <parameter name="command_id" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="uniquebackend.c"
                   line="271">command to send</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="message_data" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="uniquebackend.c"
                   line="272">message to send, or %NULL</doc>
              <type name="MessageData" c:type="UniqueMessageData*"/>
            </parameter>
            <parameter name="time_" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="uniquebackend.c"
                   line="273">time of the command emission, or 0 for the current time</doc>
              <type name="guint" c:type="guint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_unique_reserved1" introspectable="0">
        <callback name="_unique_reserved1">
          <source-position filename="uniquebackend.h" line="85"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_unique_reserved2" introspectable="0">
        <callback name="_unique_reserved2">
          <source-position filename="uniquebackend.h" line="86"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_unique_reserved3" introspectable="0">
        <callback name="_unique_reserved3">
          <source-position filename="uniquebackend.h" line="87"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_unique_reserved4" introspectable="0">
        <callback name="_unique_reserved4">
          <source-position filename="uniquebackend.h" line="88"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_unique_reserved5" introspectable="0">
        <callback name="_unique_reserved5">
          <source-position filename="uniquebackend.h" line="89"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_unique_reserved6" introspectable="0">
        <callback name="_unique_reserved6">
          <source-position filename="uniquebackend.h" line="90"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <enumeration name="Command" c:type="UniqueCommand">
      <doc xml:space="preserve"
           filename="uniqueapp.h"
           line="38">Command to send to a currently active instance. User defined commands
should be positive integers, and should be added using the
unique_app_add_command() function after creating a #UniqueApp instance</doc>
      <source-position filename="uniqueapp.h" line="57"/>
      <member name="invalid" value="0" c:identifier="UNIQUE_INVALID">
        <doc xml:space="preserve"
             filename="uniqueapp.h"
             line="40">used internally</doc>
      </member>
      <member name="activate" value="-1" c:identifier="UNIQUE_ACTIVATE">
        <doc xml:space="preserve"
             filename="uniqueapp.h"
             line="41">request to activate a currently active instance; this
  usually means calling gtk_window_present() on the application window.</doc>
      </member>
      <member name="new" value="-2" c:identifier="UNIQUE_NEW">
        <doc xml:space="preserve"
             filename="uniqueapp.h"
             line="43">request to create a new file.</doc>
      </member>
      <member name="open" value="-3" c:identifier="UNIQUE_OPEN">
        <doc xml:space="preserve"
             filename="uniqueapp.h"
             line="44">request to open a file.</doc>
      </member>
      <member name="close" value="-4" c:identifier="UNIQUE_CLOSE">
        <doc xml:space="preserve"
             filename="uniqueapp.h"
             line="45">requests to close the currently running instance.</doc>
      </member>
    </enumeration>
    <function-macro name="IS_APP"
                    c:identifier="UNIQUE_IS_APP"
                    introspectable="0">
      <source-position filename="uniqueapp.h" line="33"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_APP_CLASS"
                    c:identifier="UNIQUE_IS_APP_CLASS"
                    introspectable="0">
      <source-position filename="uniqueapp.h" line="35"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_BACKEND"
                    c:identifier="UNIQUE_IS_BACKEND"
                    introspectable="0">
      <source-position filename="uniquebackend.h" line="33"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_BACKEND_CLASS"
                    c:identifier="UNIQUE_IS_BACKEND_CLASS"
                    introspectable="0">
      <source-position filename="uniquebackend.h" line="35"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <record name="MessageData"
            c:type="UniqueMessageData"
            glib:type-name="UniqueMessageData"
            glib:get-type="unique_message_data_get_type"
            c:symbol-prefix="message_data">
      <doc xml:space="preserve"
           filename="uniquemessage.h"
           line="32">#UniqueMessageData contains the data passed between instances of
a #UniqueApp. The #UniqueMessageData structure received inside
the signal handlers for UniqueApp::message-received is guaranteed
to contain the #GdkScreen, the workspace and the startup notification
id of the instance sending the message.</doc>
      <source-position filename="uniquemessage.h" line="41"/>
      <constructor name="new" c:identifier="unique_message_data_new">
        <doc xml:space="preserve"
             filename="uniquemessage.c"
             line="72">Creates a new #UniqueMessageData structure. This structure holds the
message data passed between running instances with
unique_app_send_message().</doc>
        <source-position filename="uniquemessage.h" line="44"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="uniquemessage.c"
               line="79">the newly created #UniqueMessageData</doc>
          <type name="MessageData" c:type="UniqueMessageData*"/>
        </return-value>
      </constructor>
      <method name="copy" c:identifier="unique_message_data_copy">
        <doc xml:space="preserve"
             filename="uniquemessage.c"
             line="87">Copies @message_data.</doc>
        <source-position filename="uniquemessage.h" line="45"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="uniquemessage.c"
               line="93">a copy of the passed #UniqueMessageData</doc>
          <type name="MessageData" c:type="UniqueMessageData*"/>
        </return-value>
        <parameters>
          <instance-parameter name="message_data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquemessage.c"
                 line="89">a #UniqueMessageData</doc>
            <type name="MessageData" c:type="UniqueMessageData*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="unique_message_data_free">
        <doc xml:space="preserve"
             filename="uniquemessage.c"
             line="115">Frees all the resources allocated by @message_data.</doc>
        <source-position filename="uniquemessage.h" line="46"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="message_data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquemessage.c"
                 line="117">a #UniqueMessageData</doc>
            <type name="MessageData" c:type="UniqueMessageData*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get"
              c:identifier="unique_message_data_get"
              version="1.0.2">
        <doc xml:space="preserve"
             filename="uniquemessage.c"
             line="174">Retrieves the raw contents of @message_data set using
unique_messaget_data_set().</doc>
        <source-position filename="uniquemessage.h" line="51"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="uniquemessage.c"
               line="182">the contents of the message data or %NULL. The
  returned string is owned by the #UniqueMessageData and should
  never be modified or freed</doc>
          <type name="guint8" c:type="const guchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="message_data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquemessage.c"
                 line="176">a #UniqueMessageData</doc>
            <type name="MessageData" c:type="UniqueMessageData*"/>
          </instance-parameter>
          <parameter name="length" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquemessage.c"
                 line="177">return location for the length of the contents</doc>
            <type name="gsize" c:type="gsize*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_filename"
              c:identifier="unique_message_data_get_filename"
              version="1.0.2">
        <doc xml:space="preserve"
             filename="uniquemessage.c"
             line="480">Retrieves the filename set with unique_message_data_set_filename().</doc>
        <source-position filename="uniquemessage.h" line="63"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="uniquemessage.c"
               line="486">a newly allocated string containing the filename.
  Use g_free() to free the resources used by the returned value.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="message_data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquemessage.c"
                 line="482">a #UniqueMessageData</doc>
            <type name="MessageData" c:type="UniqueMessageData*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_screen"
              c:identifier="unique_message_data_get_screen"
              introspectable="0">
        <doc xml:space="preserve"
             filename="uniquemessage.c"
             line="499">Returns a pointer to the screen from where the message came. You
can use gtk_window_set_screen() to move windows or dialogs to the
right screen. This field is always set by the Unique library.</doc>
        <source-position filename="uniquemessage.h" line="65"/>
        <return-value>
          <doc xml:space="preserve"
               filename="uniquemessage.c"
               line="507">a #GdkScreen</doc>
          <type name="Gdk.Screen" c:type="GdkScreen*"/>
        </return-value>
        <parameters>
          <instance-parameter name="message_data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquemessage.c"
                 line="501">a #UniqueMessageData</doc>
            <type name="MessageData" c:type="UniqueMessageData*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_startup_id"
              c:identifier="unique_message_data_get_startup_id">
        <doc xml:space="preserve"
             filename="uniquemessage.c"
             line="517">Retrieves the startup notification id set inside @message_data. This
field is always set by the Unique library.</doc>
        <source-position filename="uniquemessage.h" line="66"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="uniquemessage.c"
               line="524">the startup notification id. The returned string is
  owned by the #UniqueMessageData structure and should not be
  modified or freed</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="message_data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquemessage.c"
                 line="519">a #UniqueMessageData</doc>
            <type name="MessageData" c:type="UniqueMessageData*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_text" c:identifier="unique_message_data_get_text">
        <doc xml:space="preserve"
             filename="uniquemessage.c"
             line="372">Retrieves the text set using unique_message_data_set_text().</doc>
        <source-position filename="uniquemessage.h" line="57"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="uniquemessage.c"
               line="378">an allocated string.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="message_data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquemessage.c"
                 line="374">a #UniqueMessageData</doc>
            <type name="MessageData" c:type="UniqueMessageData*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_uris" c:identifier="unique_message_data_get_uris">
        <doc xml:space="preserve"
             filename="uniquemessage.c"
             line="430">Retrieves a %NULL-terminated string vector containing the URIs set with
unique_message_data_set_uris().</doc>
        <source-position filename="uniquemessage.h" line="60"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="uniquemessage.c"
               line="437">an allocated list of URIs. Use g_strfreev() to free it.</doc>
          <array c:type="gchar**">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="message_data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquemessage.c"
                 line="432">a #UniqueMessageData</doc>
            <type name="MessageData" c:type="UniqueMessageData*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_workspace"
              c:identifier="unique_message_data_get_workspace">
        <doc xml:space="preserve"
             filename="uniquemessage.c"
             line="536">Retrieves the workspace number from where the message came. This
field is always set by the Unique library.</doc>
        <source-position filename="uniquemessage.h" line="67"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="uniquemessage.c"
               line="543">the workspace number</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="message_data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquemessage.c"
                 line="538">a #UniqueMessageData</doc>
            <type name="MessageData" c:type="UniqueMessageData*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set" c:identifier="unique_message_data_set">
        <doc xml:space="preserve"
             filename="uniquemessage.c"
             line="133">Sets @data as the payload of @message_data. Any other data is removed
from the message data. If @data is %NULL, a @length of -1 will unset
the payload, while a @length of 0 will set the payload to an empty
string.

You can use unique_message_data_get() to retrieve the data.</doc>
        <source-position filename="uniquemessage.h" line="48"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="message_data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquemessage.c"
                 line="135">a #UniqueMessageData</doc>
            <type name="MessageData" c:type="UniqueMessageData*"/>
          </instance-parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquemessage.c"
                 line="136">binary blob to set, or %NULL</doc>
            <type name="guint8" c:type="const guchar*"/>
          </parameter>
          <parameter name="length" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquemessage.c"
                 line="137">length of @data</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_filename"
              c:identifier="unique_message_data_set_filename"
              version="1.0.2">
        <doc xml:space="preserve"
             filename="uniquemessage.c"
             line="459">Sets @filename as the contents of @message_data.</doc>
        <source-position filename="uniquemessage.h" line="61"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="message_data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquemessage.c"
                 line="461">a #UniqueMessageData</doc>
            <type name="MessageData" c:type="UniqueMessageData*"/>
          </instance-parameter>
          <parameter name="filename" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquemessage.c"
                 line="462">a filename</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_text" c:identifier="unique_message_data_set_text">
        <doc xml:space="preserve"
             filename="uniquemessage.c"
             line="343">Sets @str as the plain text payload of @message_data, converting it
to UTF-8 if needed. If @length is -1, the length of the string will
be used. Use unique_message_data_get_text() to retrieve the text.</doc>
        <source-position filename="uniquemessage.h" line="54"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="uniquemessage.c"
               line="353">%TRUE if the text was successfully converted to UTF-8</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="message_data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquemessage.c"
                 line="345">a #UniqueMessageData</doc>
            <type name="MessageData" c:type="UniqueMessageData*"/>
          </instance-parameter>
          <parameter name="str" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquemessage.c"
                 line="346">plain text to be set as payload</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="length" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquemessage.c"
                 line="347">length of the text, or -1</doc>
            <type name="gssize" c:type="gssize"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_uris" c:identifier="unique_message_data_set_uris">
        <doc xml:space="preserve"
             filename="uniquemessage.c"
             line="386">Converts @uris to a valid URI list and sets it as payload of
@message_data. You can use unique_message_data_get_uris() to
retrieve the list from a #UniqueMessageData.</doc>
        <source-position filename="uniquemessage.h" line="58"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="uniquemessage.c"
               line="396">%TRUE if the URIs were successfully converted</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="message_data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquemessage.c"
                 line="388">a #UniqueMessageData</doc>
            <type name="MessageData" c:type="UniqueMessageData*"/>
          </instance-parameter>
          <parameter name="uris" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="uniquemessage.c"
                 line="389">a list of URIs
  in a %NULL-terminated string vector</doc>
            <array c:type="gchar**">
              <type name="utf8"/>
            </array>
          </parameter>
        </parameters>
      </method>
    </record>
    <enumeration name="Response" c:type="UniqueResponse">
      <doc xml:space="preserve"
           filename="uniqueapp.h"
           line="59">Response that a currently active instance of the application should
return to the caller which sent a command.</doc>
      <source-position filename="uniqueapp.h" line="76"/>
      <member name="invalid" value="0" c:identifier="UNIQUE_RESPONSE_INVALID">
        <doc xml:space="preserve"
             filename="uniqueapp.h"
             line="61">Internal error code, should never be used.</doc>
      </member>
      <member name="ok" value="1" c:identifier="UNIQUE_RESPONSE_OK">
        <doc xml:space="preserve"
             filename="uniqueapp.h"
             line="62">The command was successfully executed.</doc>
      </member>
      <member name="cancel" value="2" c:identifier="UNIQUE_RESPONSE_CANCEL">
        <doc xml:space="preserve"
             filename="uniqueapp.h"
             line="63">The command was cancelled by the user.</doc>
      </member>
      <member name="fail" value="3" c:identifier="UNIQUE_RESPONSE_FAIL">
        <doc xml:space="preserve"
             filename="uniqueapp.h"
             line="64">The command failed due to a IPC failure.</doc>
      </member>
      <member name="passthrough"
              value="4"
              c:identifier="UNIQUE_RESPONSE_PASSTHROUGH">
        <doc xml:space="preserve"
             filename="uniqueapp.h"
             line="65">The command was not handled</doc>
      </member>
    </enumeration>
    <docsection name="unique-app">
      <doc xml:space="preserve"
           filename="uniqueapp.c"
           line="22">#UniqueApp is the base class for single instance applications. You
can either create an instance of #UniqueApp via unique_app_new()
and unique_app_new_with_commands(); or you can subclass #UniqueApp
with your own application class.

A #UniqueApp instance is guaranteed to either be the first running
at the time of creation or be able to send messages to the currently
running instance; there is no race possible between the creation
of the #UniqueApp instance and the call to unique_app_is_running().

The usual method for using the #UniqueApp API is to create a new
instance, passing an application-dependent name as construction-only
property; the UniqueApp:name property is required, and should be in the
form of a domain name, like &lt;literal&gt;org.gnome.YourApplication&lt;/literal&gt;.

After the creation, you should check whether an instance of your
application is already running, using unique_app_is_running(); if this
method returns %FALSE the usual application construction sequence can
continue; if it returns %TRUE you can either exit or send a message using
#UniqueMessageData and unique_app_send_message().

You can define custom commands using unique_app_add_command(): you
need to provide an arbitrary integer and a string for the command.

&lt;note&gt;You need to initialize GTK+ in order to use UniqueApp.&lt;/note&gt;</doc>
    </docsection>
    <docsection name="unique-backend">
      <doc xml:space="preserve"
           filename="uniquebackend.c"
           line="22">#UniqueBackend is the base, abstract class implemented by the different
IPC mechanisms used by Unique. Each #UniqueApp instance creates a
#UniqueBackend to request the name or to send messages.</doc>
    </docsection>
    <docsection name="unique-message">
      <doc xml:space="preserve"
           filename="uniquemessage.c"
           line="33">#UniqueMessageData contains the data sent from a #UniqueApp to a
running instance of the same application. It can contain arbitrary
binary data, and provides convenience functions to set plain text
or URI list.

You should create a #UniqueMessageData structure using
unique_message_data_new(), you can copy it using the
unique_message_data_copy() and you should free it using
unique_message_data_free().

You can set data using unique_message_data_set(),
unique_message_data_set_text(), unique_message_data_set_filename()
or unique_message_data_set_uris().

You can retrieve the data set using unique_message_data_get(),
unique_message_data_get_text(), unique_message_data_get_filename()
or unique_message_data_get_uris().</doc>
    </docsection>
  </namespace>
</repository>
