<?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:doc="http://www.gtk.org/introspection/doc/1.0"
            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
  <include name="Gio" version="2.0"/>
  <package name="libportal"/>
  <c:include name="libportal/portal.h"/>
  <doc:format name="unknown"/>
  <namespace name="Xdp"
             version="1.0"
             shared-library="libportal.so.1"
             c:identifier-prefixes="Xdp"
             c:symbol-prefixes="xdp">
    <bitfield name="BackgroundFlags"
              glib:type-name="XdpBackgroundFlags"
              glib:get-type="xdp_background_flags_get_type"
              c:type="XdpBackgroundFlags">
      <doc xml:space="preserve"
           filename="libportal/background.h"
           line="26">Options to use when requesting background.</doc>
      <member name="none"
              value="0"
              c:identifier="XDP_BACKGROUND_FLAG_NONE"
              glib:nick="none"
              glib:name="XDP_BACKGROUND_FLAG_NONE">
        <doc xml:space="preserve"
             filename="libportal/background.h"
             line="28">No options</doc>
      </member>
      <member name="autostart"
              value="1"
              c:identifier="XDP_BACKGROUND_FLAG_AUTOSTART"
              glib:nick="autostart"
              glib:name="XDP_BACKGROUND_FLAG_AUTOSTART">
        <doc xml:space="preserve"
             filename="libportal/background.h"
             line="29">Request autostart as well</doc>
      </member>
      <member name="activatable"
              value="2"
              c:identifier="XDP_BACKGROUND_FLAG_ACTIVATABLE"
              glib:nick="activatable"
              glib:name="XDP_BACKGROUND_FLAG_ACTIVATABLE">
        <doc xml:space="preserve"
             filename="libportal/background.h"
             line="30">Whether the application is D-Bus-activatable</doc>
      </member>
    </bitfield>
    <enumeration name="ButtonState"
                 glib:type-name="XdpButtonState"
                 glib:get-type="xdp_button_state_get_type"
                 c:type="XdpButtonState">
      <doc xml:space="preserve"
           filename="libportal/remote.h"
           line="207">The XdpButtonState enumeration is used to describe
the state of buttons.</doc>
      <member name="released"
              value="0"
              c:identifier="XDP_BUTTON_RELEASED"
              glib:nick="released"
              glib:name="XDP_BUTTON_RELEASED">
        <doc xml:space="preserve"
             filename="libportal/remote.h"
             line="209">the button is down</doc>
      </member>
      <member name="pressed"
              value="1"
              c:identifier="XDP_BUTTON_PRESSED"
              glib:nick="pressed"
              glib:name="XDP_BUTTON_PRESSED">
        <doc xml:space="preserve"
             filename="libportal/remote.h"
             line="210">the button is up</doc>
      </member>
    </enumeration>
    <enumeration name="CameraFlags"
                 glib:type-name="XdpCameraFlags"
                 glib:get-type="xdp_camera_flags_get_type"
                 c:type="XdpCameraFlags">
      <member name="none"
              value="0"
              c:identifier="XDP_CAMERA_FLAG_NONE"
              glib:nick="none"
              glib:name="XDP_CAMERA_FLAG_NONE">
      </member>
    </enumeration>
    <bitfield name="CursorMode"
              glib:type-name="XdpCursorMode"
              glib:get-type="xdp_cursor_mode_get_type"
              c:type="XdpCursorMode">
      <doc xml:space="preserve"
           filename="libportal/remote.h"
           line="85">Options for how the cursor is handled.</doc>
      <member name="hidden"
              value="1"
              c:identifier="XDP_CURSOR_MODE_HIDDEN"
              glib:nick="hidden"
              glib:name="XDP_CURSOR_MODE_HIDDEN">
        <doc xml:space="preserve"
             filename="libportal/remote.h"
             line="87">no cursor</doc>
      </member>
      <member name="embedded"
              value="2"
              c:identifier="XDP_CURSOR_MODE_EMBEDDED"
              glib:nick="embedded"
              glib:name="XDP_CURSOR_MODE_EMBEDDED">
        <doc xml:space="preserve"
             filename="libportal/remote.h"
             line="88">cursor is embedded on the stream</doc>
      </member>
      <member name="metadata"
              value="4"
              c:identifier="XDP_CURSOR_MODE_METADATA"
              glib:nick="metadata"
              glib:name="XDP_CURSOR_MODE_METADATA">
        <doc xml:space="preserve"
             filename="libportal/remote.h"
             line="89">cursor is sent as metadata of the stream</doc>
      </member>
    </bitfield>
    <bitfield name="DeviceType"
              glib:type-name="XdpDeviceType"
              glib:get-type="xdp_device_type_get_type"
              c:type="XdpDeviceType">
      <doc xml:space="preserve"
           filename="libportal/remote.h"
           line="57">Flags to specify what input devices to control for a remote desktop session.</doc>
      <member name="none"
              value="0"
              c:identifier="XDP_DEVICE_NONE"
              glib:nick="none"
              glib:name="XDP_DEVICE_NONE">
        <doc xml:space="preserve"
             filename="libportal/remote.h"
             line="59">no device</doc>
      </member>
      <member name="keyboard"
              value="1"
              c:identifier="XDP_DEVICE_KEYBOARD"
              glib:nick="keyboard"
              glib:name="XDP_DEVICE_KEYBOARD">
        <doc xml:space="preserve"
             filename="libportal/remote.h"
             line="60">control the keyboard.</doc>
      </member>
      <member name="pointer"
              value="2"
              c:identifier="XDP_DEVICE_POINTER"
              glib:nick="pointer"
              glib:name="XDP_DEVICE_POINTER">
        <doc xml:space="preserve"
             filename="libportal/remote.h"
             line="61">control the pointer.</doc>
      </member>
      <member name="touchscreen"
              value="4"
              c:identifier="XDP_DEVICE_TOUCHSCREEN"
              glib:nick="touchscreen"
              glib:name="XDP_DEVICE_TOUCHSCREEN">
        <doc xml:space="preserve"
             filename="libportal/remote.h"
             line="62">control the touchscreen.</doc>
      </member>
    </bitfield>
    <enumeration name="DiscreteAxis"
                 glib:type-name="XdpDiscreteAxis"
                 glib:get-type="xdp_discrete_axis_get_type"
                 c:type="XdpDiscreteAxis">
      <doc xml:space="preserve"
           filename="libportal/remote.h"
           line="231">The `XdpDiscreteAxis` enumeration is used to describe
the discrete scroll axes.</doc>
      <member name="horizontal_scroll"
              value="0"
              c:identifier="XDP_AXIS_HORIZONTAL_SCROLL"
              glib:nick="horizontal-scroll"
              glib:name="XDP_AXIS_HORIZONTAL_SCROLL">
        <doc xml:space="preserve"
             filename="libportal/remote.h"
             line="233">the horizontal scroll axis</doc>
      </member>
      <member name="vertical_scroll"
              value="1"
              c:identifier="XDP_AXIS_VERTICAL_SCROLL"
              glib:nick="vertical-scroll"
              glib:name="XDP_AXIS_VERTICAL_SCROLL">
        <doc xml:space="preserve"
             filename="libportal/remote.h"
             line="234">the horizontal scroll axis</doc>
      </member>
    </enumeration>
    <enumeration name="EmailFlags"
                 glib:type-name="XdpEmailFlags"
                 glib:get-type="xdp_email_flags_get_type"
                 c:type="XdpEmailFlags">
      <member name="none"
              value="0"
              c:identifier="XDP_EMAIL_FLAG_NONE"
              glib:nick="none"
              glib:name="XDP_EMAIL_FLAG_NONE">
      </member>
    </enumeration>
    <bitfield name="InhibitFlags"
              glib:type-name="XdpInhibitFlags"
              glib:get-type="xdp_inhibit_flags_get_type"
              c:type="XdpInhibitFlags">
      <doc xml:space="preserve"
           filename="libportal/inhibit.h"
           line="26">Flags that determine what session status changes are inhibited.</doc>
      <member name="logout"
              value="1"
              c:identifier="XDP_INHIBIT_FLAG_LOGOUT"
              glib:nick="logout"
              glib:name="XDP_INHIBIT_FLAG_LOGOUT">
        <doc xml:space="preserve"
             filename="libportal/inhibit.h"
             line="28">Inhibit logout</doc>
      </member>
      <member name="user_switch"
              value="2"
              c:identifier="XDP_INHIBIT_FLAG_USER_SWITCH"
              glib:nick="user-switch"
              glib:name="XDP_INHIBIT_FLAG_USER_SWITCH">
        <doc xml:space="preserve"
             filename="libportal/inhibit.h"
             line="29">Inhibit user switching</doc>
      </member>
      <member name="suspend"
              value="4"
              c:identifier="XDP_INHIBIT_FLAG_SUSPEND"
              glib:nick="suspend"
              glib:name="XDP_INHIBIT_FLAG_SUSPEND">
        <doc xml:space="preserve"
             filename="libportal/inhibit.h"
             line="30">Inhibit suspend</doc>
      </member>
      <member name="idle"
              value="8"
              c:identifier="XDP_INHIBIT_FLAG_IDLE"
              glib:nick="idle"
              glib:name="XDP_INHIBIT_FLAG_IDLE">
        <doc xml:space="preserve"
             filename="libportal/inhibit.h"
             line="31">Inhibit the session going idle</doc>
      </member>
    </bitfield>
    <bitfield name="InputCapability"
              glib:type-name="XdpInputCapability"
              glib:get-type="xdp_input_capability_get_type"
              c:type="XdpInputCapability">
      <doc xml:space="preserve"
           filename="libportal/inputcapture.h"
           line="35">Flags to specify what input device capabilities should be captured</doc>
      <member name="none"
              value="0"
              c:identifier="XDP_INPUT_CAPABILITY_NONE"
              glib:nick="none"
              glib:name="XDP_INPUT_CAPABILITY_NONE">
        <doc xml:space="preserve"
             filename="libportal/inputcapture.h"
             line="37">no device</doc>
      </member>
      <member name="keyboard"
              value="1"
              c:identifier="XDP_INPUT_CAPABILITY_KEYBOARD"
              glib:nick="keyboard"
              glib:name="XDP_INPUT_CAPABILITY_KEYBOARD">
        <doc xml:space="preserve"
             filename="libportal/inputcapture.h"
             line="38">capture the keyboard</doc>
      </member>
      <member name="pointer"
              value="2"
              c:identifier="XDP_INPUT_CAPABILITY_POINTER"
              glib:nick="pointer"
              glib:name="XDP_INPUT_CAPABILITY_POINTER">
        <doc xml:space="preserve"
             filename="libportal/inputcapture.h"
             line="39">capture pointer events</doc>
      </member>
      <member name="touchscreen"
              value="4"
              c:identifier="XDP_INPUT_CAPABILITY_TOUCHSCREEN"
              glib:nick="touchscreen"
              glib:name="XDP_INPUT_CAPABILITY_TOUCHSCREEN">
        <doc xml:space="preserve"
             filename="libportal/inputcapture.h"
             line="40">capture touchscreen events</doc>
      </member>
    </bitfield>
    <class name="InputCapturePointerBarrier"
           c:symbol-prefix="input_capture_pointer_barrier"
           c:type="XdpInputCapturePointerBarrier"
           parent="GObject.Object"
           glib:type-name="XdpInputCapturePointerBarrier"
           glib:get-type="xdp_input_capture_pointer_barrier_get_type"
           glib:type-struct="InputCapturePointerBarrierClass">
      <doc xml:space="preserve"
           filename="libportal/inputcapture-pointerbarrier.c"
           line="27">A representation of a pointer barrier on an [class@InputCaptureZone].
Barriers can be assigned with
[method@InputCaptureSession.set_pointer_barriers], once the Portal
interaction is complete the barrier's "is-active" state indicates whether
the barrier is active. Barriers can only be used once, subsequent calls to
[method@InputCaptureSession.set_pointer_barriers] will invalidate all
current barriers.</doc>
      <source-position filename="libportal/inputcapture-pointerbarrier.h"
                       line="29"/>
      <property name="id"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                default-value="0">
        <doc xml:space="preserve"
             filename="libportal/inputcapture-pointerbarrier.c"
             line="197">The caller-assigned unique id of this barrier</doc>
        <type name="guint" c:type="guint"/>
      </property>
      <property name="is-active"
                transfer-ownership="none"
                default-value="FALSE">
        <doc xml:space="preserve"
             filename="libportal/inputcapture-pointerbarrier.c"
             line="208">A boolean indicating whether this barrier is active. A barrier cannot
become active once it failed to apply, barriers that are not active can
be thus cleaned up by the caller.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="x1"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                default-value="0">
        <doc xml:space="preserve"
             filename="libportal/inputcapture-pointerbarrier.c"
             line="152">The pointer barrier x offset in logical pixels</doc>
        <type name="gint" c:type="gint"/>
      </property>
      <property name="x2"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                default-value="0">
        <doc xml:space="preserve"
             filename="libportal/inputcapture-pointerbarrier.c"
             line="175">The pointer barrier x offset in logical pixels</doc>
        <type name="gint" c:type="gint"/>
      </property>
      <property name="y1"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                default-value="0">
        <doc xml:space="preserve"
             filename="libportal/inputcapture-pointerbarrier.c"
             line="164">The pointer barrier y offset in logical pixels</doc>
        <type name="gint" c:type="gint"/>
      </property>
      <property name="y2"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                default-value="0">
        <doc xml:space="preserve"
             filename="libportal/inputcapture-pointerbarrier.c"
             line="186">The pointer barrier y offset in logical pixels</doc>
        <type name="gint" c:type="gint"/>
      </property>
    </class>
    <record name="InputCapturePointerBarrierClass"
            c:type="XdpInputCapturePointerBarrierClass"
            glib:is-gtype-struct-for="InputCapturePointerBarrier">
      <source-position filename="libportal/inputcapture-pointerbarrier.h"
                       line="29"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <class name="InputCaptureSession"
           c:symbol-prefix="input_capture_session"
           c:type="XdpInputCaptureSession"
           parent="GObject.Object"
           glib:type-name="XdpInputCaptureSession"
           glib:get-type="xdp_input_capture_session_get_type"
           glib:type-struct="InputCaptureSessionClass">
      <doc xml:space="preserve"
           filename="libportal/inputcapture.c"
           line="31">A representation of a long-lived input capture portal interaction.

The [class@InputCaptureSession] object is used to represent portal
interactions with the input capture desktop portal that extend over
multiple portal calls. Usually a caller creates an input capture session,
requests the available zones and sets up pointer barriers on those zones
before enabling the session.

To find available zones, call [method@InputCaptureSession.get_zones].
These [class@InputCaptureZone] object represent the accessible desktop area
for input capturing. [class@InputCapturePointerBarrier] objects can be set
up on these zones to trigger input capture.

The [class@InputCaptureSession] wraps a [class@Session] object.</doc>
      <source-position filename="libportal/inputcapture.h" line="33"/>
      <method name="connect_to_eis"
              c:identifier="xdp_input_capture_session_connect_to_eis"
              throws="1">
        <doc xml:space="preserve"
             filename="libportal/inputcapture.c"
             line="881">Connect this session to an EIS implementation and return the fd.
This fd can be passed into ei_setup_backend_fd(). See the libei
documentation for details.

This is a sync DBus invocation.</doc>
        <source-position filename="libportal/inputcapture.h" line="100"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libportal/inputcapture.c"
               line="892">a socket to the EIS implementation for this input capture
session or a negative errno on failure.</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/inputcapture.c"
                 line="883">a [class@InputCaptureSession]</doc>
            <type name="InputCaptureSession" c:type="XdpInputCaptureSession*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="disable" c:identifier="xdp_input_capture_session_disable">
        <doc xml:space="preserve"
             filename="libportal/inputcapture.c"
             line="1155">Disables this input capture session.</doc>
        <source-position filename="libportal/inputcapture.h" line="87"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/inputcapture.c"
                 line="1157">a [class@InputCaptureSession]</doc>
            <type name="InputCaptureSession" c:type="XdpInputCaptureSession*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="enable" c:identifier="xdp_input_capture_session_enable">
        <doc xml:space="preserve"
             filename="libportal/inputcapture.c"
             line="1120">Enables this input capture session. In the future, this client may receive
input events.</doc>
        <source-position filename="libportal/inputcapture.h" line="84"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/inputcapture.c"
                 line="1122">a [class@InputCaptureSession]</doc>
            <type name="InputCaptureSession" c:type="XdpInputCaptureSession*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_session"
              c:identifier="xdp_input_capture_session_get_session">
        <doc xml:space="preserve"
             filename="libportal/inputcapture.c"
             line="844">Return the [class@XdpSession] for this InputCapture session.</doc>
        <source-position filename="libportal/inputcapture.h" line="66"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libportal/inputcapture.c"
               line="850">a [class@Session] object</doc>
          <type name="Session" c:type="XdpSession*"/>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/inputcapture.c"
                 line="846">a [class@XdpInputCaptureSession]</doc>
            <type name="InputCaptureSession" c:type="XdpInputCaptureSession*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_zones"
              c:identifier="xdp_input_capture_session_get_zones">
        <doc xml:space="preserve"
             filename="libportal/inputcapture.c"
             line="858">Obtains the current set of [class@InputCaptureZone] objects.

The returned object is valid until the zones are invalidated by the
[signal@InputCaptureSession::zones-changed] signal.

Unless the session is active, this function returns `NULL`.</doc>
        <source-position filename="libportal/inputcapture.h" line="69"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libportal/inputcapture.c"
               line="869">the available
zones. The caller must keep a reference to the list or the elements if used
outside the immediate scope.</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="InputCaptureZone"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/inputcapture.c"
                 line="860">a [class@InputCaptureSession]</doc>
            <type name="InputCaptureSession" c:type="XdpInputCaptureSession*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="release" c:identifier="xdp_input_capture_session_release">
        <doc xml:space="preserve"
             filename="libportal/inputcapture.c"
             line="1228">Releases this input capture session without a suggested cursor position.</doc>
        <source-position filename="libportal/inputcapture.h" line="96"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/inputcapture.c"
                 line="1230">a [class@InputCaptureSession]</doc>
            <type name="InputCaptureSession" c:type="XdpInputCaptureSession*"/>
          </instance-parameter>
          <parameter name="activation_id" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="release_at"
              c:identifier="xdp_input_capture_session_release_at">
        <doc xml:space="preserve"
             filename="libportal/inputcapture.c"
             line="1243">Releases this input capture session with a suggested cursor position.
Note that the implementation is not required to honour this position.</doc>
        <source-position filename="libportal/inputcapture.h" line="90"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/inputcapture.c"
                 line="1245">a [class@InputCaptureSession]</doc>
            <type name="InputCaptureSession" c:type="XdpInputCaptureSession*"/>
          </instance-parameter>
          <parameter name="activation_id" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="cursor_x_position" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/inputcapture.c"
                 line="1246">the suggested cursor x position once capture has been released</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="cursor_y_position" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/inputcapture.c"
                 line="1247">the suggested cursor y position once capture has been released</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_pointer_barriers"
              c:identifier="xdp_input_capture_session_set_pointer_barriers"
              glib:finish-func="set_pointer_barriers_finish">
        <doc xml:space="preserve"
             filename="libportal/inputcapture.c"
             line="1056">Sets the pointer barriers for this session. When the request is done,
@callback will be called. You can then call
[method@InputCaptureSession.set_pointer_barriers_finish] to
get the results. The result of this request is the list of pointer barriers
that failed to apply - barriers not present in the returned list are active.

Once the pointer barrier is
applied (i.e. the reply to the DBus Request has been received), the
the [property@InputCapturePointerBarrier:is-active] property is changed on
that barrier. Failed barriers have the property set to a %FALSE value.</doc>
        <source-position filename="libportal/inputcapture.h" line="72"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/inputcapture.c"
                 line="1058">a [class@InputCaptureSession]</doc>
            <type name="InputCaptureSession" c:type="XdpInputCaptureSession*"/>
          </instance-parameter>
          <parameter name="barriers" transfer-ownership="container">
            <doc xml:space="preserve"
                 filename="libportal/inputcapture.c"
                 line="1059">the pointer barriers to apply</doc>
            <type name="GLib.List" c:type="GList*">
              <type name="InputCapturePointerBarrier"/>
            </type>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_pointer_barriers_finish"
              c:identifier="xdp_input_capture_session_set_pointer_barriers_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="libportal/inputcapture.c"
             line="1097">Finishes the set-pointer-barriers request, and returns a GList with the pointer
barriers that failed to apply and should be cleaned up by the caller.</doc>
        <source-position filename="libportal/inputcapture.h" line="79"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libportal/inputcapture.c"
               line="1106">a list of failed pointer barriers</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="InputCapturePointerBarrier"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/inputcapture.c"
                 line="1099">a [class@InputCaptureSession]</doc>
            <type name="InputCaptureSession" c:type="XdpInputCaptureSession*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/inputcapture.c"
                 line="1100">a [iface@Gio.AsyncResult]</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <glib:signal name="activated" when="cleanup" no-recurse="1" no-hooks="1">
        <doc xml:space="preserve"
             filename="libportal/inputcapture.c"
             line="148">Emitted when an InputCapture session activates and sends events. When this
signal is emitted, events will appear on the transport layer.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="activation_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/inputcapture.c"
                 line="151">the unique activation_id to identify this input capture</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="options" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/inputcapture.c"
                 line="152">a GVariant with the signal options</doc>
            <type name="GLib.Variant"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="deactivated"
                   when="cleanup"
                   no-recurse="1"
                   no-hooks="1">
        <doc xml:space="preserve"
             filename="libportal/inputcapture.c"
             line="167">Emitted when an InputCapture session deactivates and no longer sends
events.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="activation_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/inputcapture.c"
                 line="170">the unique activation_id to identify this input capture</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="options" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/inputcapture.c"
                 line="171">a GVariant with the signal options</doc>
            <type name="GLib.Variant"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="disabled" when="cleanup" no-recurse="1" no-hooks="1">
        <doc xml:space="preserve"
             filename="libportal/inputcapture.c"
             line="187">Emitted when an InputCapture session is disabled. This signal
is emitted when capturing was disabled by the server.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="options" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/inputcapture.c"
                 line="190">a GVariant with the signal options</doc>
            <type name="GLib.Variant"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="zones-changed"
                   when="cleanup"
                   no-recurse="1"
                   no-hooks="1">
        <doc xml:space="preserve"
             filename="libportal/inputcapture.c"
             line="127">Emitted when an InputCapture session's zones have changed. When this
signal is emitted, all current zones will have their
[property@InputCaptureZone:is-valid] property set to %FALSE and all
internal references to those zones have been released. This signal is
sent after libportal has fetched the updated zones, a caller should call
xdp_input_capture_session_get_zones() to retrieve the new zones.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="options" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/inputcapture.c"
                 line="130">a GVariant with the signal options</doc>
            <type name="GLib.Variant"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="InputCaptureSessionClass"
            c:type="XdpInputCaptureSessionClass"
            glib:is-gtype-struct-for="InputCaptureSession">
      <source-position filename="libportal/inputcapture.h" line="33"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <class name="InputCaptureZone"
           c:symbol-prefix="input_capture_zone"
           c:type="XdpInputCaptureZone"
           parent="GObject.Object"
           glib:type-name="XdpInputCaptureZone"
           glib:get-type="xdp_input_capture_zone_get_type"
           glib:type-struct="InputCaptureZoneClass">
      <doc xml:space="preserve"
           filename="libportal/inputcapture-zone.c"
           line="24">A representation of a zone that supports input capture.

The [class@XdpInputCaptureZone] object is used to represent a zone on the
user-visible desktop that may be used to set up
[class@XdpInputCapturePointerBarrier] objects. In most cases, the set of
[class@XdpInputCaptureZone] objects represent the available monitors but the
exact implementation is up to the implementation.</doc>
      <source-position filename="libportal/inputcapture-zone.h" line="29"/>
      <property name="height"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                default-value="0">
        <doc xml:space="preserve"
             filename="libportal/inputcapture-zone.c"
             line="156">The height of this zone in logical pixels</doc>
        <type name="guint" c:type="guint"/>
      </property>
      <property name="is-valid"
                writable="1"
                transfer-ownership="none"
                default-value="TRUE">
        <doc xml:space="preserve"
             filename="libportal/inputcapture-zone.c"
             line="206">A boolean indicating whether this zone is currently valid. Zones are
invalidated by the Portal's ZonesChanged signal, see
[signal@InputCaptureSession::zones-changed].

Once invalidated, a Zone can be discarded by the caller, it cannot become
valid again.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="width"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                default-value="0">
        <doc xml:space="preserve"
             filename="libportal/inputcapture-zone.c"
             line="144">The width of this zone in logical pixels</doc>
        <type name="guint" c:type="guint"/>
      </property>
      <property name="x"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                default-value="0">
        <doc xml:space="preserve"
             filename="libportal/inputcapture-zone.c"
             line="168">The x offset of this zone in logical pixels</doc>
        <type name="gint" c:type="gint"/>
      </property>
      <property name="y"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                default-value="0">
        <doc xml:space="preserve"
             filename="libportal/inputcapture-zone.c"
             line="179">The x offset of this zone in logical pixels</doc>
        <type name="gint" c:type="gint"/>
      </property>
      <property name="zone-set"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                default-value="0">
        <type name="guint" c:type="guint"/>
      </property>
    </class>
    <record name="InputCaptureZoneClass"
            c:type="XdpInputCaptureZoneClass"
            glib:is-gtype-struct-for="InputCaptureZone">
      <source-position filename="libportal/inputcapture-zone.h" line="29"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <enumeration name="KeyState"
                 glib:type-name="XdpKeyState"
                 glib:get-type="xdp_key_state_get_type"
                 c:type="XdpKeyState">
      <doc xml:space="preserve"
           filename="libportal/remote.h"
           line="249">The `XdpKeyState` enumeration is used to describe
the state of keys.</doc>
      <member name="released"
              value="0"
              c:identifier="XDP_KEY_RELEASED"
              glib:nick="released"
              glib:name="XDP_KEY_RELEASED">
        <doc xml:space="preserve"
             filename="libportal/remote.h"
             line="251">the key is down</doc>
      </member>
      <member name="pressed"
              value="1"
              c:identifier="XDP_KEY_PRESSED"
              glib:nick="pressed"
              glib:name="XDP_KEY_PRESSED">
        <doc xml:space="preserve"
             filename="libportal/remote.h"
             line="252">the key is up</doc>
      </member>
    </enumeration>
    <bitfield name="LauncherType"
              glib:type-name="XdpLauncherType"
              glib:get-type="xdp_launcher_type_get_type"
              c:type="XdpLauncherType">
      <doc xml:space="preserve"
           filename="libportal/dynamic-launcher.h"
           line="26">The type of a launcher.</doc>
      <member name="application"
              value="1"
              c:identifier="XDP_LAUNCHER_APPLICATION"
              glib:nick="application"
              glib:name="XDP_LAUNCHER_APPLICATION">
        <doc xml:space="preserve"
             filename="libportal/dynamic-launcher.h"
             line="28">a launcher for a regular application</doc>
      </member>
      <member name="webapp"
              value="2"
              c:identifier="XDP_LAUNCHER_WEBAPP"
              glib:nick="webapp"
              glib:name="XDP_LAUNCHER_WEBAPP">
        <doc xml:space="preserve"
             filename="libportal/dynamic-launcher.h"
             line="29">a launcher for a web app</doc>
      </member>
    </bitfield>
    <enumeration name="LocationAccuracy"
                 glib:type-name="XdpLocationAccuracy"
                 glib:get-type="xdp_location_accuracy_get_type"
                 c:type="XdpLocationAccuracy">
      <doc xml:space="preserve"
           filename="libportal/location.h"
           line="26">The values of this enum indicate the desired level
of accuracy for location information.</doc>
      <member name="none"
              value="0"
              c:identifier="XDP_LOCATION_ACCURACY_NONE"
              glib:nick="none"
              glib:name="XDP_LOCATION_ACCURACY_NONE">
        <doc xml:space="preserve"
             filename="libportal/location.h"
             line="28">No particular accuracy</doc>
      </member>
      <member name="country"
              value="1"
              c:identifier="XDP_LOCATION_ACCURACY_COUNTRY"
              glib:nick="country"
              glib:name="XDP_LOCATION_ACCURACY_COUNTRY">
        <doc xml:space="preserve"
             filename="libportal/location.h"
             line="29">Country-level accuracy</doc>
      </member>
      <member name="city"
              value="2"
              c:identifier="XDP_LOCATION_ACCURACY_CITY"
              glib:nick="city"
              glib:name="XDP_LOCATION_ACCURACY_CITY">
        <doc xml:space="preserve"
             filename="libportal/location.h"
             line="30">City-level accuracy</doc>
      </member>
      <member name="neighborhood"
              value="3"
              c:identifier="XDP_LOCATION_ACCURACY_NEIGHBORHOOD"
              glib:nick="neighborhood"
              glib:name="XDP_LOCATION_ACCURACY_NEIGHBORHOOD">
        <doc xml:space="preserve"
             filename="libportal/location.h"
             line="31">Neighborhood-level accuracy</doc>
      </member>
      <member name="street"
              value="4"
              c:identifier="XDP_LOCATION_ACCURACY_STREET"
              glib:nick="street"
              glib:name="XDP_LOCATION_ACCURACY_STREET">
        <doc xml:space="preserve"
             filename="libportal/location.h"
             line="32">Street-level accuracy</doc>
      </member>
      <member name="exact"
              value="5"
              c:identifier="XDP_LOCATION_ACCURACY_EXACT"
              glib:nick="exact"
              glib:name="XDP_LOCATION_ACCURACY_EXACT">
        <doc xml:space="preserve"
             filename="libportal/location.h"
             line="33">Maximum accuracy</doc>
      </member>
    </enumeration>
    <enumeration name="LocationMonitorFlags"
                 glib:type-name="XdpLocationMonitorFlags"
                 glib:get-type="xdp_location_monitor_flags_get_type"
                 c:type="XdpLocationMonitorFlags">
      <member name="none"
              value="0"
              c:identifier="XDP_LOCATION_MONITOR_FLAG_NONE"
              glib:nick="none"
              glib:name="XDP_LOCATION_MONITOR_FLAG_NONE">
      </member>
    </enumeration>
    <enumeration name="LoginSessionState"
                 glib:type-name="XdpLoginSessionState"
                 glib:get-type="xdp_login_session_state_get_type"
                 c:type="XdpLoginSessionState">
      <doc xml:space="preserve"
           filename="libportal/inhibit.h"
           line="60">The values of this enum are returned in the [signal@Portal::session-state-changed] signal
to indicate the current state of the user session.</doc>
      <member name="running"
              value="1"
              c:identifier="XDP_LOGIN_SESSION_RUNNING"
              glib:nick="running"
              glib:name="XDP_LOGIN_SESSION_RUNNING">
        <doc xml:space="preserve"
             filename="libportal/inhibit.h"
             line="62">the session is running</doc>
      </member>
      <member name="query_end"
              value="2"
              c:identifier="XDP_LOGIN_SESSION_QUERY_END"
              glib:nick="query-end"
              glib:name="XDP_LOGIN_SESSION_QUERY_END">
        <doc xml:space="preserve"
             filename="libportal/inhibit.h"
             line="63">the session is in the query end phase,
    during which applications can save their state or inhibit the
    session from ending</doc>
      </member>
      <member name="ending"
              value="3"
              c:identifier="XDP_LOGIN_SESSION_ENDING"
              glib:nick="ending"
              glib:name="XDP_LOGIN_SESSION_ENDING">
        <doc xml:space="preserve"
             filename="libportal/inhibit.h"
             line="66">the session is about to end</doc>
      </member>
    </enumeration>
    <enumeration name="NotificationFlags"
                 glib:type-name="XdpNotificationFlags"
                 glib:get-type="xdp_notification_flags_get_type"
                 c:type="XdpNotificationFlags">
      <member name="none"
              value="0"
              c:identifier="XDP_NOTIFICATION_FLAG_NONE"
              glib:nick="none"
              glib:name="XDP_NOTIFICATION_FLAG_NONE">
      </member>
    </enumeration>
    <bitfield name="OpenFileFlags"
              glib:type-name="XdpOpenFileFlags"
              glib:get-type="xdp_open_file_flags_get_type"
              c:type="XdpOpenFileFlags">
      <doc xml:space="preserve"
           filename="libportal/filechooser.h"
           line="26">Options for opening files.</doc>
      <member name="none"
              value="0"
              c:identifier="XDP_OPEN_FILE_FLAG_NONE"
              glib:nick="none"
              glib:name="XDP_OPEN_FILE_FLAG_NONE">
        <doc xml:space="preserve"
             filename="libportal/filechooser.h"
             line="28">No options</doc>
      </member>
      <member name="multiple"
              value="1"
              c:identifier="XDP_OPEN_FILE_FLAG_MULTIPLE"
              glib:nick="multiple"
              glib:name="XDP_OPEN_FILE_FLAG_MULTIPLE">
        <doc xml:space="preserve"
             filename="libportal/filechooser.h"
             line="29">Allow selecting multiple files</doc>
      </member>
    </bitfield>
    <bitfield name="OpenUriFlags"
              glib:type-name="XdpOpenUriFlags"
              glib:get-type="xdp_open_uri_flags_get_type"
              c:type="XdpOpenUriFlags">
      <doc xml:space="preserve"
           filename="libportal/openuri.h"
           line="26">Options for opening uris.</doc>
      <member name="none"
              value="0"
              c:identifier="XDP_OPEN_URI_FLAG_NONE"
              glib:nick="none"
              glib:name="XDP_OPEN_URI_FLAG_NONE">
        <doc xml:space="preserve"
             filename="libportal/openuri.h"
             line="28">No options</doc>
      </member>
      <member name="ask"
              value="1"
              c:identifier="XDP_OPEN_URI_FLAG_ASK"
              glib:nick="ask"
              glib:name="XDP_OPEN_URI_FLAG_ASK">
        <doc xml:space="preserve"
             filename="libportal/openuri.h"
             line="29">Use an application chooser for the given uri</doc>
      </member>
      <member name="writable"
              value="2"
              c:identifier="XDP_OPEN_URI_FLAG_WRITABLE"
              glib:nick="writable"
              glib:name="XDP_OPEN_URI_FLAG_WRITABLE">
        <doc xml:space="preserve"
             filename="libportal/openuri.h"
             line="30">Allow writing to file (if uri points to a local file that is exported in the document portal and app is sandboxed itself)</doc>
      </member>
    </bitfield>
    <bitfield name="OutputType"
              glib:type-name="XdpOutputType"
              glib:get-type="xdp_output_type_get_type"
              c:type="XdpOutputType">
      <doc xml:space="preserve"
           filename="libportal/remote.h"
           line="41">Flags to specify what kind of sources to offer for a screencast session.</doc>
      <member name="none"
              value="0"
              c:identifier="XDP_OUTPUT_NONE"
              glib:nick="none"
              glib:name="XDP_OUTPUT_NONE">
        <doc xml:space="preserve"
             filename="libportal/remote.h"
             line="43">do not select any output</doc>
      </member>
      <member name="monitor"
              value="1"
              c:identifier="XDP_OUTPUT_MONITOR"
              glib:nick="monitor"
              glib:name="XDP_OUTPUT_MONITOR">
        <doc xml:space="preserve"
             filename="libportal/remote.h"
             line="44">allow selecting monitors</doc>
      </member>
      <member name="window"
              value="2"
              c:identifier="XDP_OUTPUT_WINDOW"
              glib:nick="window"
              glib:name="XDP_OUTPUT_WINDOW">
        <doc xml:space="preserve"
             filename="libportal/remote.h"
             line="45">allow selecting individual application windows</doc>
      </member>
      <member name="virtual"
              value="4"
              c:identifier="XDP_OUTPUT_VIRTUAL"
              glib:nick="virtual"
              glib:name="XDP_OUTPUT_VIRTUAL">
        <doc xml:space="preserve"
             filename="libportal/remote.h"
             line="46">allow creating new virtual displays</doc>
      </member>
    </bitfield>
    <record name="Parent"
            c:type="XdpParent"
            opaque="1"
            glib:type-name="XdpParent"
            glib:get-type="xdp_parent_get_type"
            c:symbol-prefix="parent">
      <doc xml:space="preserve"
           filename="libportal/parent.c"
           line="24">Parent window abstraction.

The [struct@Parent] struct provides an abstract way to represent a window,
without introducing a dependency on a toolkit library.

XdpParent implementations for GTK 3, GTK 4, Qt 5, and Qt 6 are available as
separate libraries.</doc>
      <source-position filename="libportal/types.h" line="26"/>
      <method name="copy" c:identifier="xdp_parent_copy">
        <doc xml:space="preserve"
             filename="libportal/parent.c"
             line="37">Copies @source into a new [struct@Parent].</doc>
        <source-position filename="libportal/parent.h" line="32"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libportal/parent.c"
               line="43">an [struct@Parent] that is a copy of @source</doc>
          <type name="Parent" c:type="XdpParent*"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/parent.c"
                 line="39">a [struct@Parent]</doc>
            <type name="Parent" c:type="XdpParent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="xdp_parent_free">
        <doc xml:space="preserve"
             filename="libportal/parent.c"
             line="61">Frees @parent.</doc>
        <source-position filename="libportal/parent.h" line="35"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="parent" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/parent.c"
                 line="63">an [struct@Parent]</doc>
            <type name="Parent" c:type="XdpParent*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <enumeration name="PersistMode"
                 glib:type-name="XdpPersistMode"
                 glib:get-type="xdp_persist_mode_get_type"
                 c:type="XdpPersistMode">
      <doc xml:space="preserve"
           filename="libportal/remote.h"
           line="99">Options for how the screencast session should persist.</doc>
      <member name="none"
              value="0"
              c:identifier="XDP_PERSIST_MODE_NONE"
              glib:nick="none"
              glib:name="XDP_PERSIST_MODE_NONE">
        <doc xml:space="preserve"
             filename="libportal/remote.h"
             line="101">do not persist</doc>
      </member>
      <member name="transient"
              value="1"
              c:identifier="XDP_PERSIST_MODE_TRANSIENT"
              glib:nick="transient"
              glib:name="XDP_PERSIST_MODE_TRANSIENT">
        <doc xml:space="preserve"
             filename="libportal/remote.h"
             line="102">persist as long as the application is alive</doc>
      </member>
      <member name="persistent"
              value="2"
              c:identifier="XDP_PERSIST_MODE_PERSISTENT"
              glib:nick="persistent"
              glib:name="XDP_PERSIST_MODE_PERSISTENT">
        <doc xml:space="preserve"
             filename="libportal/remote.h"
             line="103">persist until the user revokes this permission</doc>
      </member>
    </enumeration>
    <class name="Portal"
           c:symbol-prefix="portal"
           c:type="XdpPortal"
           parent="GObject.Object"
           glib:type-name="XdpPortal"
           glib:get-type="xdp_portal_get_type"
           glib:type-struct="PortalClass">
      <doc xml:space="preserve"
           filename="libportal/portal.c"
           line="55">Context for portal calls.

The XdpPortal object provides the main context object
for the portal operations of libportal.

Typically, an application will create a single XdpPortal
object with [ctor@Portal.new] and use it throughout its lifetime.</doc>
      <source-position filename="libportal/portal-helpers.h" line="40"/>
      <implements name="Gio.Initable"/>
      <constructor name="initable_new"
                   c:identifier="xdp_portal_initable_new"
                   version="0.7"
                   throws="1">
        <doc xml:space="preserve"
             filename="libportal/portal.c"
             line="353">Creates a new [class@Portal] object.</doc>
        <source-position filename="libportal/portal-helpers.h" line="46"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="libportal/portal.c"
               line="359">a newly created [class@Portal] object or NULL on error</doc>
          <type name="Portal" c:type="XdpPortal*"/>
        </return-value>
      </constructor>
      <constructor name="new" c:identifier="xdp_portal_new">
        <doc xml:space="preserve"
             filename="libportal/portal.c"
             line="369">Creates a new [class@Portal] object. If D-Bus is unavailable this API will abort.
We recommend using xdp_portal_initable_new() to safely handle this failure.</doc>
        <source-position filename="libportal/portal-helpers.h" line="43"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libportal/portal.c"
               line="375">a newly created [class@Portal] object</doc>
          <type name="Portal" c:type="XdpPortal*"/>
        </return-value>
      </constructor>
      <function name="running_under_flatpak"
                c:identifier="xdp_portal_running_under_flatpak">
        <doc xml:space="preserve"
             filename="libportal/portal.c"
             line="479">Detects if running inside of a Flatpak or WebKit sandbox.

See also: [func@Portal.running_under_sandbox].</doc>
        <source-position filename="libportal/portal-helpers.h" line="49"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libportal/portal.c"
               line="486">%TRUE if the current process is running under a Flatpak sandbox</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </function>
      <function name="running_under_sandbox"
                c:identifier="xdp_portal_running_under_sandbox">
        <doc xml:space="preserve"
             filename="libportal/portal.c"
             line="536">This function tries to determine if the current process is running under a
sandbox that requires the use of portals.

If you need to check error conditions see [func@Portal.running_under_snap].

Note that these functions are all cached and will always return the same result.</doc>
        <source-position filename="libportal/portal-helpers.h" line="55"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libportal/portal.c"
               line="546">%TRUE if the current process should use portals to access resources
  on the host system, or %FALSE if either an error was encountered or the
  process is running unsandboxed</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </function>
      <function name="running_under_snap"
                c:identifier="xdp_portal_running_under_snap"
                throws="1">
        <doc xml:space="preserve"
             filename="libportal/portal.c"
             line="509">Detects if you are running inside of a Snap sandbox.

See also: [func@Portal.running_under_sandbox].</doc>
        <source-position filename="libportal/portal-helpers.h" line="52"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libportal/portal.c"
               line="517">%TRUE if the current process is running under a Snap sandbox, or
  %FALSE if either unsandboxed or an error was encountered in which case
  @error will be set</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </function>
      <method name="access_camera"
              c:identifier="xdp_portal_access_camera"
              glib:finish-func="access_camera_finish">
        <doc xml:space="preserve"
             filename="libportal/camera.c"
             line="201">Request access to a camera.

When the request is done, @callback will be called.
You can then call [method@Portal.access_camera_finish]
to get the results.</doc>
        <source-position filename="libportal/camera.h" line="34"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/camera.c"
                 line="203">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="parent"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/camera.c"
                 line="204">parent window information</doc>
            <type name="Parent" c:type="XdpParent*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/camera.c"
                 line="205">options for this call</doc>
            <type name="CameraFlags" c:type="XdpCameraFlags"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/camera.c"
                 line="206">optional [class@Gio.Cancellable]</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="4">
            <doc xml:space="preserve"
                 filename="libportal/camera.c"
                 line="207">a callback to call when the request is done</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/camera.c"
                 line="208">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="access_camera_finish"
              c:identifier="xdp_portal_access_camera_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="libportal/camera.c"
             line="239">Finishes a camera acess request.

Returns the result as a boolean.

If the access was granted, you can then call
[method@Portal.open_pipewire_remote_for_camera]
to obtain a pipewire remote.</doc>
        <source-position filename="libportal/camera.h" line="42"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libportal/camera.c"
               line="253">`TRUE` if access to a camera was granted</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/camera.c"
                 line="241">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/camera.c"
                 line="242">a [iface@Gio.AsyncResult]</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_notification"
              c:identifier="xdp_portal_add_notification"
              glib:finish-func="add_notification_finish">
        <doc xml:space="preserve"
             filename="libportal/notification.c"
             line="715">Sends a desktop notification.

The following keys may be present in @notification:

- title `s`: a user-visible string to display as title
- body `s`: a user-visible string to display as body
- markup-body `s`: a user-visible string to display as body with support for markup
- icon `v`: a serialized icon (in the format produced by [method@Gio.Icon.serialize]
  for class@Gio.ThemedIcon, class@Gio.FileIcon and class@Gio.BytesIcon)
- sound `v`: a serialized sound
- priority `s`: "low", "normal", "high" or "urgent"
- default-action `s`: name of an action that
    will be activated when the user clicks on the notification
- default-action-target `v`: target parameter to send along when
    activating the default action.
- buttons `aa{sv}`: array of serialized buttons
- display-hint `as`: An array of display hints.
- category `s`: A category for this notification. [See the spec for supported categories](https://flatpak.github.io/xdg-desktop-portal/docs/doc-org.freedesktop.portal.Notification.html#org-freedesktop-portal-notification-addnotification)

The serialized sound consists of a `s` or `sv`:
- default : Play the default sound for the notification.
- silent : Don't ever play a sound for the notification.
- file `s`: A path to a sound file.
- bytes `ay`: An array of bytes.

The supported sound formats are ogg/opus, ogg/vorbis and wav/pcm.

Each serialized button is a dictionary with the following supported keys:

- label `s`: user-visible label for the button. Mandatory without a purpose.
- action `s`: name of an action that will be activated when
    the user clicks on the button. Mandatory
- purpose `s`: information used by the server to style the button specially.
- target `v`: target parameter to send along when activating
    the button

Actions with a prefix of "app." are assumed to be exported by the
application and will be activated via the org.freedesktop.Application
interface, others are activated by emitting the
[signal@Portal::notification-action-invoked] signal.

It is the callers responsibility to ensure that the ID is unique
among all notifications.

To withdraw a notification, use [method@Portal.remove_notification].</doc>
        <source-position filename="libportal/notification.h" line="31"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/notification.c"
                 line="717">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/notification.c"
                 line="718">unique ID for the notification</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="notification" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/notification.c"
                 line="719">a [struct@GLib.Variant] dictionary with the content of the notification</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/notification.c"
                 line="720">options for this call</doc>
            <type name="NotificationFlags" c:type="XdpNotificationFlags"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/notification.c"
                 line="721">optional [class@Gio.Cancellable]</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="5">
            <doc xml:space="preserve"
                 filename="libportal/notification.c"
                 line="722">a callback to call when the request is done</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/notification.c"
                 line="723">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_notification_finish"
              c:identifier="xdp_portal_add_notification_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="libportal/notification.c"
             line="799">Finishes the notification request.

Returns the result as a boolean.</doc>
        <source-position filename="libportal/notification.h" line="40"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libportal/notification.c"
               line="809">`TRUE` if the notification was added</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/notification.c"
                 line="801">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/notification.c"
                 line="802">a [iface@Gio.AsyncResult]</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="compose_email"
              c:identifier="xdp_portal_compose_email"
              glib:finish-func="compose_email_finish">
        <doc xml:space="preserve"
             filename="libportal/email.c"
             line="285">Presents a window that lets the user compose an email,
with some pre-filled information.

When the request is done, @callback will be called. You can then
call [method@Portal.compose_email_finish] to get the results.</doc>
        <source-position filename="libportal/email.h" line="31"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/email.c"
                 line="287">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="parent"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/email.c"
                 line="288">parent window information</doc>
            <type name="Parent" c:type="XdpParent*"/>
          </parameter>
          <parameter name="addresses"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/email.c"
                 line="289">the email addresses to send to</doc>
            <array c:type="const char* const*">
              <type name="utf8" c:type="char*"/>
            </array>
          </parameter>
          <parameter name="cc"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/email.c"
                 line="290">the email addresses to cc</doc>
            <array c:type="const char* const*">
              <type name="utf8" c:type="char*"/>
            </array>
          </parameter>
          <parameter name="bcc"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/email.c"
                 line="291">the email addresses to bcc</doc>
            <array c:type="const char* const*">
              <type name="utf8" c:type="char*"/>
            </array>
          </parameter>
          <parameter name="subject"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/email.c"
                 line="292">the subject for the email</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="body"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/email.c"
                 line="293">the body for the email</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="attachments"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/email.c"
                 line="294">an array of paths for files to attach</doc>
            <array c:type="const char* const*">
              <type name="utf8" c:type="char*"/>
            </array>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/email.c"
                 line="295">options for this call</doc>
            <type name="EmailFlags" c:type="XdpEmailFlags"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/email.c"
                 line="296">optional [class@Gio.Cancellable]</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="10">
            <doc xml:space="preserve"
                 filename="libportal/email.c"
                 line="297">a callback to call when the request is done</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/email.c"
                 line="298">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="compose_email_finish"
              c:identifier="xdp_portal_compose_email_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="libportal/email.c"
             line="343">Finishes the compose-email request.</doc>
        <source-position filename="libportal/email.h" line="45"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libportal/email.c"
               line="351">`TRUE` if the request was handled successfully</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/email.c"
                 line="345">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/email.c"
                 line="346">a [iface@Gio.AsyncResult]</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_input_capture_session"
              c:identifier="xdp_portal_create_input_capture_session"
              glib:finish-func="create_input_capture_session_finish">
        <doc xml:space="preserve"
             filename="libportal/inputcapture.c"
             line="776">Creates a session for input capture

When the request is done, @callback will be called. You can then
call [method@Portal.create_input_capture_session_finish] to get the results.</doc>
        <source-position filename="libportal/inputcapture.h" line="53"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/inputcapture.c"
                 line="778">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="parent"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/inputcapture.c"
                 line="779">parent window information</doc>
            <type name="Parent" c:type="XdpParent*"/>
          </parameter>
          <parameter name="capabilities" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/inputcapture.c"
                 line="780">which kinds of capabilities to request</doc>
            <type name="InputCapability" c:type="XdpInputCapability"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/inputcapture.c"
                 line="781">optional [class@Gio.Cancellable]</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="4">
            <doc xml:space="preserve"
                 filename="libportal/inputcapture.c"
                 line="782">a callback to call when the request is done</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/inputcapture.c"
                 line="783">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_input_capture_session_finish"
              c:identifier="xdp_portal_create_input_capture_session_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="libportal/inputcapture.c"
             line="814">Finishes the InputCapture CreateSession request, and returns a
[class@InputCaptureSession]. To get to the [class@Session] within use
xdp_input_capture_session_get_session().</doc>
        <source-position filename="libportal/inputcapture.h" line="61"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libportal/inputcapture.c"
               line="824">a [class@InputCaptureSession]</doc>
          <type name="InputCaptureSession" c:type="XdpInputCaptureSession*"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/inputcapture.c"
                 line="816">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/inputcapture.c"
                 line="817">a [iface@Gio.AsyncResult]</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_remote_desktop_session"
              c:identifier="xdp_portal_create_remote_desktop_session"
              glib:finish-func="create_remote_desktop_session_finish">
        <doc xml:space="preserve"
             filename="libportal/remote.c"
             line="500">Creates a session for remote desktop.

When the request is done, @callback will be called. You can then
call [method@Portal.create_remote_desktop_session_finish] to get the results.</doc>
        <source-position filename="libportal/remote.h" line="142"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="502">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="devices" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="503">which kinds of input devices to ofer in the new dialog</doc>
            <type name="DeviceType" c:type="XdpDeviceType"/>
          </parameter>
          <parameter name="outputs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="504">which kinds of source to offer in the dialog</doc>
            <type name="OutputType" c:type="XdpOutputType"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="505">options for this call</doc>
            <type name="RemoteDesktopFlags" c:type="XdpRemoteDesktopFlags"/>
          </parameter>
          <parameter name="cursor_mode" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="506">the cursor mode of the session</doc>
            <type name="CursorMode" c:type="XdpCursorMode"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="507">optional [class@Gio.Cancellable]</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="6">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="508">a callback to call when the request is done</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="509">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_remote_desktop_session_finish"
              c:identifier="xdp_portal_create_remote_desktop_session_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="libportal/remote.c"
             line="590">Finishes the create-remote-desktop request, and returns a [class@Session].</doc>
        <source-position filename="libportal/remote.h" line="165"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libportal/remote.c"
               line="598">a [class@Session]</doc>
          <type name="Session" c:type="XdpSession*"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="592">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="593">a [iface@Gio.AsyncResult]</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_remote_desktop_session_full"
              c:identifier="xdp_portal_create_remote_desktop_session_full"
              glib:finish-func="xdp_portal_create_remote_desktop_session_finish">
        <doc xml:space="preserve"
             filename="libportal/remote.c"
             line="538">Creates a session for remote desktop.

When the request is done, @callback will be called. You can then
call [method@Portal.create_remote_desktop_session_finish] to get the results.</doc>
        <source-position filename="libportal/remote.h" line="152"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="540">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="devices" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="541">which kinds of input devices to ofer in the new dialog</doc>
            <type name="DeviceType" c:type="XdpDeviceType"/>
          </parameter>
          <parameter name="outputs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="542">which kinds of source to offer in the dialog</doc>
            <type name="OutputType" c:type="XdpOutputType"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="543">options for this call</doc>
            <type name="RemoteDesktopFlags" c:type="XdpRemoteDesktopFlags"/>
          </parameter>
          <parameter name="cursor_mode" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="544">the cursor mode of the session</doc>
            <type name="CursorMode" c:type="XdpCursorMode"/>
          </parameter>
          <parameter name="persist_mode" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="545">the persist mode of the session</doc>
            <type name="PersistMode" c:type="XdpPersistMode"/>
          </parameter>
          <parameter name="restore_token"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="546">the token of a previous screencast session to restore</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="547">optional [class@Gio.Cancellable]</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="8">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="548">a callback to call when the request is done</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="549">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_screencast_session"
              c:identifier="xdp_portal_create_screencast_session"
              glib:finish-func="create_screencast_session_finish">
        <doc xml:space="preserve"
             filename="libportal/remote.c"
             line="429">Creates a session for a screencast.

When the request is done, @callback will be called. You can then
call [method@Portal.create_screencast_session_finish] to get the results.</doc>
        <source-position filename="libportal/remote.h" line="114"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="431">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="outputs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="432">which kinds of source to offer in the dialog</doc>
            <type name="OutputType" c:type="XdpOutputType"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="433">options for this call</doc>
            <type name="ScreencastFlags" c:type="XdpScreencastFlags"/>
          </parameter>
          <parameter name="cursor_mode" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="434">the cursor mode of the session</doc>
            <type name="CursorMode" c:type="XdpCursorMode"/>
          </parameter>
          <parameter name="persist_mode" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="435">the persist mode of the session</doc>
            <type name="PersistMode" c:type="XdpPersistMode"/>
          </parameter>
          <parameter name="restore_token"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="436">the token of a previous screencast session to restore</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="437">optional [class@Gio.Cancellable]</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="7">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="438">a callback to call when the request is done</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="439">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_screencast_session_finish"
              c:identifier="xdp_portal_create_screencast_session_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="libportal/remote.c"
             line="479">Finishes the create-screencast request, and returns a [class@Session].</doc>
        <source-position filename="libportal/remote.h" line="125"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libportal/remote.c"
               line="487">a [class@Session]</doc>
          <type name="Session" c:type="XdpSession*"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="481">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="482">a [iface@Gio.AsyncResult]</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="dynamic_launcher_get_desktop_entry"
              c:identifier="xdp_portal_dynamic_launcher_get_desktop_entry"
              throws="1">
        <doc xml:space="preserve"
             filename="libportal/dynamic-launcher.c"
             line="451">This function gets the contents of a .desktop file that was previously
installed by the dynamic launcher portal.

The @desktop_file_id must be prefixed with the caller's app ID followed by a
"." and suffixed with ".desktop".</doc>
        <source-position filename="libportal/dynamic-launcher.h" line="75"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libportal/dynamic-launcher.c"
               line="463">the contents of the desktop file, or %NULL with
  @error set</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/dynamic-launcher.c"
                 line="453">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="desktop_file_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/dynamic-launcher.c"
                 line="454">the .desktop file name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="dynamic_launcher_get_icon"
              c:identifier="xdp_portal_dynamic_launcher_get_icon"
              throws="1">
        <doc xml:space="preserve"
             filename="libportal/dynamic-launcher.c"
             line="494">This function gets the icon associated with a .desktop file that was previously
installed by the dynamic launcher portal.

The @desktop_file_id must be prefixed with the caller's app ID followed by a
"." and suffixed with ".desktop".</doc>
        <source-position filename="libportal/dynamic-launcher.h" line="80"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libportal/dynamic-launcher.c"
               line="508">the icon in a format recognized by g_icon_deserialize(),
  or %NULL with @error set</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/dynamic-launcher.c"
                 line="496">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="desktop_file_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/dynamic-launcher.c"
                 line="497">the .desktop file name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="out_icon_format"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/dynamic-launcher.c"
                 line="498">return location for icon format string, one of "png", "jpeg", "svg"</doc>
            <type name="utf8" c:type="char**"/>
          </parameter>
          <parameter name="out_icon_size"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/dynamic-launcher.c"
                 line="499">return location for icon size</doc>
            <type name="guint" c:type="guint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="dynamic_launcher_install"
              c:identifier="xdp_portal_dynamic_launcher_install"
              throws="1">
        <doc xml:space="preserve"
             filename="libportal/dynamic-launcher.c"
             line="354">This function completes installation of a launcher so that the icon and name
given in previous method calls will show up in the desktop environment's menu.

The @desktop_file_id must be prefixed with the caller's app ID followed by a
"." and suffixed with ".desktop".

The @desktop_entry data need not include Icon= or Name= entries since these
will be added by the portal, and the Exec= entry will be rewritten to call
the application with e.g. "flatpak run" depending on the sandbox status of
the app.</doc>
        <source-position filename="libportal/dynamic-launcher.h" line="63"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libportal/dynamic-launcher.c"
               line="373">%TRUE if the installation was successful, %FALSE with @error set
  otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/dynamic-launcher.c"
                 line="356">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="token" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/dynamic-launcher.c"
                 line="357">a token acquired via a [method@Portal.dynamic_launcher_request_install_token] or [method@Portal.dynamic_launcher_prepare_install] call</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="desktop_file_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/dynamic-launcher.c"
                 line="358">the .desktop file name to be used</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="desktop_entry" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/dynamic-launcher.c"
                 line="359">the key-file to be used for the contents of the .desktop file</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="dynamic_launcher_launch"
              c:identifier="xdp_portal_dynamic_launcher_launch"
              throws="1">
        <source-position filename="libportal/dynamic-launcher.h" line="87"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="desktop_file_id" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="activation_token" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="dynamic_launcher_prepare_install"
              c:identifier="xdp_portal_dynamic_launcher_prepare_install"
              glib:finish-func="dynamic_launcher_prepare_install_finish">
        <doc xml:space="preserve"
             filename="libportal/dynamic-launcher.c"
             line="215">Presents a dialog to the user so they can confirm they want to install a
launcher to their desktop.

When the request is done, @callback will be called. You can then
call [method@Portal.dynamic_launcher_prepare_install_finish] to get the results.</doc>
        <source-position filename="libportal/dynamic-launcher.h" line="39"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/dynamic-launcher.c"
                 line="217">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="parent"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/dynamic-launcher.c"
                 line="218">parent window information</doc>
            <type name="Parent" c:type="XdpParent*"/>
          </parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/dynamic-launcher.c"
                 line="219">the name for the launcher</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="icon_v" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/dynamic-launcher.c"
                 line="220">a #GBytesIcon as returned by g_icon_serialize(). Must be a png or jpeg no larger than 512x512, or an svg</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="launcher_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/dynamic-launcher.c"
                 line="221">the type of the launcher</doc>
            <type name="LauncherType" c:type="XdpLauncherType"/>
          </parameter>
          <parameter name="target"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/dynamic-launcher.c"
                 line="222">the URL if the launcher is for a web app, or %NULL</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="editable_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/dynamic-launcher.c"
                 line="223">if %TRUE, the user will be able to edit the name of the launcher</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="editable_icon" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/dynamic-launcher.c"
                 line="224">if %TRUE, the user will be able to edit the icon of the launcher, if the implementation supports this</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/dynamic-launcher.c"
                 line="225">optional [class@Gio.Cancellable]</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="9">
            <doc xml:space="preserve"
                 filename="libportal/dynamic-launcher.c"
                 line="226">a callback to call when the request is done</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/dynamic-launcher.c"
                 line="227">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="dynamic_launcher_prepare_install_finish"
              c:identifier="xdp_portal_dynamic_launcher_prepare_install_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="libportal/dynamic-launcher.c"
             line="273">Finishes the prepare-install-launcher request, and returns
[struct@GLib.Variant] dictionary with the following information:

- name s: the name chosen by the user (or the provided name if the
    editable_name option was not set)
- token s: a token that can by used in a [method@Portal.dynamic_launcher_install]
    call to complete the installation</doc>
        <source-position filename="libportal/dynamic-launcher.h" line="52"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libportal/dynamic-launcher.c"
               line="287">a [struct@GLib.Variant] dictionary with launcher
  information</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/dynamic-launcher.c"
                 line="275">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/dynamic-launcher.c"
                 line="276">a [iface@Gio.AsyncResult]</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="dynamic_launcher_request_install_token"
              c:identifier="xdp_portal_dynamic_launcher_request_install_token"
              throws="1">
        <doc xml:space="preserve"
             filename="libportal/dynamic-launcher.c"
             line="302">Requests a token which can be passed to [method@Portal.dynamic_launcher_install]
to complete installation of the launcher without user interaction.

This function only works when the caller's app ID is in the allowlist for
the portal backend being used. It's intended for software centers such as
GNOME Software or KDE Discover.</doc>
        <source-position filename="libportal/dynamic-launcher.h" line="57"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libportal/dynamic-launcher.c"
               line="316">a token that can be passed to
  [method@Portal.dynamic_launcher_install], or %NULL with @error set</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/dynamic-launcher.c"
                 line="304">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/dynamic-launcher.c"
                 line="305">the name for the launcher</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="icon_v" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/dynamic-launcher.c"
                 line="306">a #GBytesIcon as returned by g_icon_serialize(). Must be a png or jpeg no larger than 512x512, or an svg</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
        </parameters>
      </method>
      <method name="dynamic_launcher_uninstall"
              c:identifier="xdp_portal_dynamic_launcher_uninstall"
              throws="1">
        <doc xml:space="preserve"
             filename="libportal/dynamic-launcher.c"
             line="409">This function uninstalls a launcher that was previously installed using the
dynamic launcher portal, resulting in the .desktop file and icon being deleted.

The @desktop_file_id must be prefixed with the caller's app ID followed by a
"." and suffixed with ".desktop".</doc>
        <source-position filename="libportal/dynamic-launcher.h" line="70"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libportal/dynamic-launcher.c"
               line="421">%TRUE if the uninstallation was successful, %FALSE with @error set
  otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/dynamic-launcher.c"
                 line="411">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="desktop_file_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/dynamic-launcher.c"
                 line="412">the .desktop file name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_settings" c:identifier="xdp_portal_get_settings">
        <doc xml:space="preserve"
             filename="libportal/portal.c"
             line="556">This function returns an object to access settings exposed through
the portal.</doc>
        <source-position filename="libportal/portal-helpers.h" line="58"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libportal/portal.c"
               line="562">a [class@Settings] new settings object.</doc>
          <type name="Settings" c:type="XdpSettings*"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_supported_notification_options"
              c:identifier="xdp_portal_get_supported_notification_options"
              version="0.9.0"
              throws="1">
        <source-position filename="libportal/notification.h" line="49"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libportal/notification.c"
               line="855">a vardict of supported options for properties that have options.</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/notification.c"
                 line="852">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_user_information"
              c:identifier="xdp_portal_get_user_information"
              glib:finish-func="get_user_information_finish">
        <doc xml:space="preserve"
             filename="libportal/account.c"
             line="190">Gets information about the user.

When the request is done, @callback will be called. You can then
call [method@Portal.get_user_information_finish] to get the results.</doc>
        <source-position filename="libportal/account.h" line="31"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/account.c"
                 line="192">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="parent"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/account.c"
                 line="193">parent window information</doc>
            <type name="Parent" c:type="XdpParent*"/>
          </parameter>
          <parameter name="reason"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/account.c"
                 line="194">a string that can be shown in the dialog to explain
   why the information is needed</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/account.c"
                 line="196">options for this call</doc>
            <type name="UserInformationFlags"
                  c:type="XdpUserInformationFlags"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/account.c"
                 line="197">optional [class@Gio.Cancellable]</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="5">
            <doc xml:space="preserve"
                 filename="libportal/account.c"
                 line="198">a callback to call when the request is done</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/account.c"
                 line="199">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_user_information_finish"
              c:identifier="xdp_portal_get_user_information_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="libportal/account.c"
             line="233">Finishes the get-user-information request.

Returns the result in the form of a [struct@GLib.Variant] dictionary
containing the following fields:

- id `s`: the user ID
- name `s`: the users real name
- image `s`: the uri of an image file for the users avatar picture</doc>
        <source-position filename="libportal/account.h" line="40"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libportal/account.c"
               line="248">a [struct@GLib.Variant] dictionary with user information</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/account.c"
                 line="235">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/account.c"
                 line="236">a [iface@Gio.AsyncResult]</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_camera_present"
              c:identifier="xdp_portal_is_camera_present">
        <doc xml:space="preserve"
             filename="libportal/camera.c"
             line="27">Returns whether any camera are present.</doc>
        <source-position filename="libportal/camera.h" line="27"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libportal/camera.c"
               line="33">`TRUE` if the system has cameras</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/camera.c"
                 line="29">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="location_monitor_start"
              c:identifier="xdp_portal_location_monitor_start"
              glib:finish-func="location_monitor_start_finish">
        <doc xml:space="preserve"
             filename="libportal/location.c"
             line="310">Makes `XdpPortal` start monitoring location changes.

When the location changes, the [signal@Portal::location-updated].
signal is emitted.

Use [method@Portal.location_monitor_stop] to stop monitoring.

Note that [class@Portal] only maintains a single location monitor
at a time. If you want to change the @distance_threshold,
@time_threshold or @accuracy of the current monitor, you
first have to call [method@Portal.location_monitor_stop] to
stop monitoring.</doc>
        <source-position filename="libportal/location.h" line="52"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/location.c"
                 line="312">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="parent"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/location.c"
                 line="313">a [struct@Parent], or `NULL`</doc>
            <type name="Parent" c:type="XdpParent*"/>
          </parameter>
          <parameter name="distance_threshold" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/location.c"
                 line="314">distance threshold, in meters</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="time_threshold" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/location.c"
                 line="315">time threshold, in seconds</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="accuracy" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/location.c"
                 line="316">desired accuracy</doc>
            <type name="LocationAccuracy" c:type="XdpLocationAccuracy"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/location.c"
                 line="317">options for this call</doc>
            <type name="LocationMonitorFlags"
                  c:type="XdpLocationMonitorFlags"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/location.c"
                 line="318">optional [class@Gio.Cancellable]</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="7">
            <doc xml:space="preserve"
                 filename="libportal/location.c"
                 line="319">a callback to call when the request is done</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/location.c"
                 line="320">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="location_monitor_start_finish"
              c:identifier="xdp_portal_location_monitor_start_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="libportal/location.c"
             line="366">Finishes a location-monitor request.

Returns result in the form of boolean.</doc>
        <source-position filename="libportal/location.h" line="63"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libportal/location.c"
               line="376">`TRUE` if the request succeeded</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/location.c"
                 line="368">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/location.c"
                 line="369">a [iface@Gio.AsyncResult]</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="location_monitor_stop"
              c:identifier="xdp_portal_location_monitor_stop">
        <doc xml:space="preserve"
             filename="libportal/location.c"
             line="390">Stops location monitoring that was started with
[method@Portal.location_monitor_start].</doc>
        <source-position filename="libportal/location.h" line="68"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/location.c"
                 line="392">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="open_directory"
              c:identifier="xdp_portal_open_directory"
              glib:finish-func="open_directory_finish">
        <doc xml:space="preserve"
             filename="libportal/openuri.c"
             line="326">Opens the directory containing the file specified by the @uri.

which must be a file: uri pointing to a file that the application has access
to.</doc>
        <source-position filename="libportal/openuri.h" line="55"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/openuri.c"
                 line="328">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="parent" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/openuri.c"
                 line="329">parent window information</doc>
            <type name="Parent" c:type="XdpParent*"/>
          </parameter>
          <parameter name="uri" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/openuri.c"
                 line="330">the URI to open</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/openuri.c"
                 line="331">options for this call</doc>
            <type name="OpenUriFlags" c:type="XdpOpenUriFlags"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/openuri.c"
                 line="332">optional [class@Gio.Cancellable]</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="5">
            <doc xml:space="preserve"
                 filename="libportal/openuri.c"
                 line="333">a callback to call when the request is done</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/openuri.c"
                 line="334">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="open_directory_finish"
              c:identifier="xdp_portal_open_directory_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="libportal/openuri.c"
             line="371">Finishes the open-directory request.

Returns the result in the form of a boolean.</doc>
        <source-position filename="libportal/openuri.h" line="64"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libportal/openuri.c"
               line="381">`TRUE` if the call succeeded</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/openuri.c"
                 line="373">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/openuri.c"
                 line="374">a [iface@Gio.AsyncResult]</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="open_file"
              c:identifier="xdp_portal_open_file"
              glib:finish-func="open_file_finish">
        <doc xml:space="preserve"
             filename="libportal/filechooser.c"
             line="223">Asks the user to open one or more files.

The format for the @filters argument is `a(sa(us))`.
Each item in the array specifies a single filter to offer to the user.
The first string is a user-visible name for the filter. The `a(us)`
specifies a list of filter strings, which can be either a glob pattern
(indicated by 0) or a mimetype (indicated by 1).

Example: `[('Images', [(0, '*.ico'), (1, 'image/png')]), ('Text', [(0, '*.txt')])]`

The format for the @choices argument is `a(ssa(ss)s)`.
For each element, the first string is an ID that will be returned
with the response, te second string is a user-visible label. The
`a(ss)` is the list of choices, each being a is an ID and a
user-visible label. The final string is the initial selection,
or `""`, to let the portal decide which choice will be initially selected.
None of the strings, except for the initial selection, should be empty.

As a special case, passing an empty array for the list of choices
indicates a boolean choice that is typically displayed as a check
button, using `"true"` and `"false"` as the choices.

Example: `[('encoding', 'Encoding', [('utf8', 'Unicode (UTF-8)'), ('latin15', 'Western')], 'latin15'), ('reencode', 'Reencode', [], 'false')]`

When the request is done, @callback will be called. You can then
call [method@Portal.open_file_finish] to get the results.</doc>
        <source-position filename="libportal/filechooser.h" line="39"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/filechooser.c"
                 line="225">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="parent"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/filechooser.c"
                 line="226">parent window information</doc>
            <type name="Parent" c:type="XdpParent*"/>
          </parameter>
          <parameter name="title" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/filechooser.c"
                 line="227">title for the file chooser dialog</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="filters"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/filechooser.c"
                 line="228">a [struct@GLib.Variant] describing file filters</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="current_filter"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/filechooser.c"
                 line="229">a [struct@GLib.Variant] describing the current file filter</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="choices"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/filechooser.c"
                 line="230">a [struct@GLib.Variant] describing extra widgets</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/filechooser.c"
                 line="231">options for this call</doc>
            <type name="OpenFileFlags" c:type="XdpOpenFileFlags"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/filechooser.c"
                 line="232">optional [class@Gio.Cancellable]</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="8">
            <doc xml:space="preserve"
                 filename="libportal/filechooser.c"
                 line="233">a callback to call when the request is done</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/filechooser.c"
                 line="234">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="open_file_finish"
              c:identifier="xdp_portal_open_file_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="libportal/filechooser.c"
             line="298">Finishes the open-file request

Returns the result in the form of a [struct@GLib.Variant] dictionary
containing the following fields:

- uris `as`: an array of strings containing the uris of selected files
- choices `a(ss)`: an array of pairs of strings, the first string being the
    ID of a combobox that was passed into this call, the second string
    being the selected option.</doc>
        <source-position filename="libportal/filechooser.h" line="51"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libportal/filechooser.c"
               line="314">a [struct@GLib.Variant] dictionary with the results</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/filechooser.c"
                 line="300">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/filechooser.c"
                 line="301">a [iface@Gio.AsyncResult]</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="open_pipewire_remote_for_camera"
              c:identifier="xdp_portal_open_pipewire_remote_for_camera">
        <doc xml:space="preserve"
             filename="libportal/camera.c"
             line="267">Opens a file descriptor to the pipewire remote where the camera
nodes are available.

The file descriptor should be used to create a pw_core object, by using
pw_context_connect_fd(). Only the camera nodes will be available from this
pipewire node.</doc>
        <source-position filename="libportal/camera.h" line="47"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libportal/camera.c"
               line="278">the file descriptor</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/camera.c"
                 line="269">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="open_uri"
              c:identifier="xdp_portal_open_uri"
              glib:finish-func="open_uri_finish">
        <doc xml:space="preserve"
             filename="libportal/openuri.c"
             line="259">Opens @uri with an external handler.</doc>
        <source-position filename="libportal/openuri.h" line="41"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/openuri.c"
                 line="261">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="parent" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/openuri.c"
                 line="262">parent window information</doc>
            <type name="Parent" c:type="XdpParent*"/>
          </parameter>
          <parameter name="uri" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/openuri.c"
                 line="263">the URI to open</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/openuri.c"
                 line="264">options for this call</doc>
            <type name="OpenUriFlags" c:type="XdpOpenUriFlags"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/openuri.c"
                 line="265">optional [class@Gio.Cancellable]</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="5">
            <doc xml:space="preserve"
                 filename="libportal/openuri.c"
                 line="266">a callback to call when the request is done</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/openuri.c"
                 line="267">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="open_uri_finish"
              c:identifier="xdp_portal_open_uri_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="libportal/openuri.c"
             line="302">Finishes the open-uri request.

Returns the result in the form of a boolean.</doc>
        <source-position filename="libportal/openuri.h" line="50"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libportal/openuri.c"
               line="312">`TRUE` if the call succeeded</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/openuri.c"
                 line="304">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/openuri.c"
                 line="305">a [iface@Gio.AsyncResult]</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="pick_color"
              c:identifier="xdp_portal_pick_color"
              glib:finish-func="pick_color_finish">
        <doc xml:space="preserve"
             filename="libportal/screenshot.c"
             line="272">Lets the user pick a color from the screen.

When the request is done, @callback will be called. You can then
call [method@Portal.pick_color_finish] to get the results.</doc>
        <source-position filename="libportal/screenshot.h" line="45"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/screenshot.c"
                 line="274">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="parent"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/screenshot.c"
                 line="275">parent window information</doc>
            <type name="Parent" c:type="XdpParent*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/screenshot.c"
                 line="276">optional [class@Gio.Cancellable]</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve"
                 filename="libportal/screenshot.c"
                 line="277">a callback to call when the request is done</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/screenshot.c"
                 line="278">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="pick_color_finish"
              c:identifier="xdp_portal_pick_color_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="libportal/screenshot.c"
             line="309">Finishes a pick-color request.

Returns the result in the form of a GVariant of the form (ddd), containing
red, green and blue components in the range [0,1].</doc>
        <source-position filename="libportal/screenshot.h" line="52"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libportal/screenshot.c"
               line="320">GVariant containing the color</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/screenshot.c"
                 line="311">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/screenshot.c"
                 line="312">a [iface@Gio.AsyncResult]</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="prepare_print"
              c:identifier="xdp_portal_prepare_print"
              glib:finish-func="prepare_print_finish">
        <doc xml:space="preserve"
             filename="libportal/print.c"
             line="260">Presents a print dialog to the user and returns print settings and page setup.

When the request is done, @callback will be called. You can then
call [method@Portal.prepare_print_finish] to get the results.</doc>
        <source-position filename="libportal/print.h" line="31"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/print.c"
                 line="262">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="parent"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/print.c"
                 line="263">parent window information</doc>
            <type name="Parent" c:type="XdpParent*"/>
          </parameter>
          <parameter name="title" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/print.c"
                 line="264">tile for the print dialog</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="settings"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/print.c"
                 line="265">Serialized print settings</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="page_setup"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/print.c"
                 line="266">Serialized page setup</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/print.c"
                 line="267">options for this call</doc>
            <type name="PrintFlags" c:type="XdpPrintFlags"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/print.c"
                 line="268">optional [class@Gio.Cancellable]</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="7">
            <doc xml:space="preserve"
                 filename="libportal/print.c"
                 line="269">a callback to call when the request is done</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/print.c"
                 line="270">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="prepare_print_finish"
              c:identifier="xdp_portal_prepare_print_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="libportal/print.c"
             line="309">Finishes the prepare-print request.

Returns a [struct@GLib.Variant] dictionary with the following information:

- settings `a{sv}`: print settings as set up by the user in the print dialog
- page-setup `a{sv}: page setup as set up by the user in the print dialog
- token u: a token that can by used in a [method@Portal.print_file] call to
    avoid the print dialog</doc>
        <source-position filename="libportal/print.h" line="42"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libportal/print.c"
               line="324">a [struct@GLib.Variant] dictionary with print information</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/print.c"
                 line="311">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/print.c"
                 line="312">a [iface@Gio.AsyncResult]</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="print_file"
              c:identifier="xdp_portal_print_file"
              glib:finish-func="print_file_finish">
        <doc xml:space="preserve"
             filename="libportal/print.c"
             line="338">Prints a file.

If a valid token is present in the @options, then this call will print
with the settings from the Print call that the token refers to. If
no token is present, then a print dialog will be presented to the user.

When the request is done, @callback will be called. You can then
call [method@Portal.print_file_finish] to get the results.</doc>
        <source-position filename="libportal/print.h" line="47"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/print.c"
                 line="340">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="parent"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/print.c"
                 line="341">parent window information</doc>
            <type name="Parent" c:type="XdpParent*"/>
          </parameter>
          <parameter name="title" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/print.c"
                 line="342">tile for the print dialog</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="token" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/print.c"
                 line="343">token that was returned by a previous [method@Portal.prepare_print] call, or 0</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/print.c"
                 line="344">path of the document to print</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/print.c"
                 line="345">options for this call</doc>
            <type name="PrintFlags" c:type="XdpPrintFlags"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/print.c"
                 line="346">optional [class@Gio.Cancellable]</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="7">
            <doc xml:space="preserve"
                 filename="libportal/print.c"
                 line="347">a callback to call when the request is done</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/print.c"
                 line="348">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="print_file_finish"
              c:identifier="xdp_portal_print_file_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="libportal/print.c"
             line="391">Finishes the print request.</doc>
        <source-position filename="libportal/print.h" line="58"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libportal/print.c"
               line="399">`TRUE` if the request was successful</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/print.c"
                 line="393">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/print.c"
                 line="394">a [iface@Gio.AsyncResult]</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_notification"
              c:identifier="xdp_portal_remove_notification">
        <doc xml:space="preserve"
             filename="libportal/notification.c"
             line="823">Withdraws a desktop notification.</doc>
        <source-position filename="libportal/notification.h" line="45"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/notification.c"
                 line="825">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/notification.c"
                 line="826">the ID of an notification</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="request_background"
              c:identifier="xdp_portal_request_background"
              glib:finish-func="request_background_finish">
        <doc xml:space="preserve"
             filename="libportal/background.c"
             line="310">Requests background permissions.

When the request is done, @callback will be called. You can then
call [method@Portal.request_background_finish] to get the results.</doc>
        <source-position filename="libportal/background.h" line="41"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/background.c"
                 line="312">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="parent"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/background.c"
                 line="313">parent window information</doc>
            <type name="Parent" c:type="XdpParent*"/>
          </parameter>
          <parameter name="reason"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/background.c"
                 line="315">reason to present to user for request</doc>
            <type name="utf8" c:type="char*"/>
          </parameter>
          <parameter name="commandline"
                     transfer-ownership="container"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/background.c"
                 line="314">command line to autostart</doc>
            <array name="GLib.PtrArray" c:type="GPtrArray*">
              <type name="utf8"/>
            </array>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/background.c"
                 line="316">options for this call</doc>
            <type name="BackgroundFlags" c:type="XdpBackgroundFlags"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/background.c"
                 line="317">optional [class@Gio.Cancellable]</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="6">
            <doc xml:space="preserve"
                 filename="libportal/background.c"
                 line="318">a callback to call when the request is done</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/background.c"
                 line="319">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="request_background_finish"
              c:identifier="xdp_portal_request_background_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="libportal/background.c"
             line="360">Finishes the request.

Returns `TRUE` if successful.</doc>
        <source-position filename="libportal/background.h" line="51"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libportal/background.c"
               line="370">`TRUE` if successful.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/background.c"
                 line="362">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/background.c"
                 line="363">a [iface@Gio.AsyncResult]</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="save_file"
              c:identifier="xdp_portal_save_file"
              glib:finish-func="save_file_finish">
        <doc xml:space="preserve"
             filename="libportal/filechooser.c"
             line="328">Asks the user for a location to save a file.

The format for the @filters argument is the same as for [method@Portal.open_file].

The format for the @choices argument is the same as for [method@Portal.open_file].

When the request is done, @callback will be called. You can then
call [method@Portal.save_file_finish] to get the results.</doc>
        <source-position filename="libportal/filechooser.h" line="60"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/filechooser.c"
                 line="330">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="parent"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/filechooser.c"
                 line="331">parent window information</doc>
            <type name="Parent" c:type="XdpParent*"/>
          </parameter>
          <parameter name="title" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/filechooser.c"
                 line="332">title for the file chooser dialog</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="current_name"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/filechooser.c"
                 line="333">suggested filename</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="current_folder"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/filechooser.c"
                 line="334">suggested folder to save the file in</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="current_file"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/filechooser.c"
                 line="335">the current file (when saving an existing file)</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="filters"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/filechooser.c"
                 line="336">a [struct@GLib.Variant] describing file filters</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="current_filter"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/filechooser.c"
                 line="337">a [struct@GLib.Variant] describing the current file filter</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="choices"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/filechooser.c"
                 line="338">a [struct@GLib.Variant] describing extra widgets</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/filechooser.c"
                 line="339">options for this call</doc>
            <type name="SaveFileFlags" c:type="XdpSaveFileFlags"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/filechooser.c"
                 line="340">optional [class@Gio.Cancellable]</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="11">
            <doc xml:space="preserve"
                 filename="libportal/filechooser.c"
                 line="341">a callback to call when the request is done</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/filechooser.c"
                 line="342">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="save_file_finish"
              c:identifier="xdp_portal_save_file_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="libportal/filechooser.c"
             line="393">Finishes the save-file request.

Returns the result in the form of a [struct@GLib.Variant] dictionary
containing the following fields:

- uris `(as)`: an array of strings containing the uri of the selected file
- choices `a(ss)`: an array of pairs of strings, the first string being the
  ID of a combobox that was passed into this call, the second string
  being the selected option.</doc>
        <source-position filename="libportal/filechooser.h" line="75"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libportal/filechooser.c"
               line="409">a [struct@GLib.Variant] dictionary with the results</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/filechooser.c"
                 line="395">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/filechooser.c"
                 line="396">a [iface@Gio.AsyncResult]</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="save_files"
              c:identifier="xdp_portal_save_files"
              glib:finish-func="save_files_finish">
        <doc xml:space="preserve"
             filename="libportal/filechooser.c"
             line="423">Asks for a folder as a location to save one or more files.

The names of the files will be used as-is and appended to the selected
folder's path in the list of returned files. If the selected folder already
contains a file with one of the given names, the portal may prompt or take
some other action to construct a unique file name and return that instead.

The format for the @choices argument is the same as for [method@Portal.open_file].

When the request is done, @callback will be called. You can then
call [method@Portal.save_file_finish] to get the results.</doc>
        <source-position filename="libportal/filechooser.h" line="80"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/filechooser.c"
                 line="425">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="parent"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/filechooser.c"
                 line="426">parent window information</doc>
            <type name="Parent" c:type="XdpParent*"/>
          </parameter>
          <parameter name="title" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/filechooser.c"
                 line="427">title for the file chooser dialog</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="current_name"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/filechooser.c"
                 line="428">suggested filename</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="current_folder"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/filechooser.c"
                 line="429">suggested folder to save the file in</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="files" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/filechooser.c"
                 line="430">An array of file names to be saved</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="choices"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/filechooser.c"
                 line="431">a [struct@GLib.Variant] describing extra widgets</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/filechooser.c"
                 line="432">options for this call</doc>
            <type name="SaveFileFlags" c:type="XdpSaveFileFlags"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/filechooser.c"
                 line="433">optional [class@Gio.Cancellable]</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="9">
            <doc xml:space="preserve"
                 filename="libportal/filechooser.c"
                 line="434">a callback to call when the request is done</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/filechooser.c"
                 line="435">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="save_files_finish"
              c:identifier="xdp_portal_save_files_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="libportal/filechooser.c"
             line="486">Finishes the save-files request.

Returns the result in the form of a [struct@GLib.Variant] dictionary
containing the following fields:

- uris `(as)`: an array of strings containing the uri corresponding to each
  file passed to the save-files request, in the same order. Note that the
  file names may have changed, for example if a file with the same name in
  the selected folder already exists.
- choices `a(ss)`: an array of pairs of strings, the first string being the
  ID of a combobox that was passed into this call, the second string
  being the selected option.</doc>
        <source-position filename="libportal/filechooser.h" line="93"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libportal/filechooser.c"
               line="505">a [struct@GLib.Variant] dictionary with the results</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/filechooser.c"
                 line="488">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/filechooser.c"
                 line="489">a [iface@Gio.AsyncResult]</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="session_inhibit"
              c:identifier="xdp_portal_session_inhibit"
              glib:finish-func="session_inhibit_finish">
        <doc xml:space="preserve"
             filename="libportal/inhibit.c"
             line="201">Inhibits various session status changes.

To obtain an ID that can be used to undo the inhibition, use
[method@Portal.session_inhibit_finish] in the callback.

To remove an active inhibitor, call [method@Portal.session_uninhibit]
with the same ID.</doc>
        <source-position filename="libportal/inhibit.h" line="43"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/inhibit.c"
                 line="203">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="parent"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/inhibit.c"
                 line="204">parent window information</doc>
            <type name="Parent" c:type="XdpParent*"/>
          </parameter>
          <parameter name="reason"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/inhibit.c"
                 line="205">user-visible reason for the inhibition</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/inhibit.c"
                 line="206">information about what to inhibit</doc>
            <type name="InhibitFlags" c:type="XdpInhibitFlags"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/inhibit.c"
                 line="207">optional [class@Gio.Cancellable]</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="5">
            <doc xml:space="preserve"
                 filename="libportal/inhibit.c"
                 line="208">a callback to call when the request is done</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/inhibit.c"
                 line="209">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="session_inhibit_finish"
              c:identifier="xdp_portal_session_inhibit_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="libportal/inhibit.c"
             line="258">Finishes the inhbit request.

Returns the ID of the inhibition as a positive integer. The ID can be passed
to [method@Portal.session_uninhibit] to undo the inhibition.</doc>
        <source-position filename="libportal/inhibit.h" line="52"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libportal/inhibit.c"
               line="269">the ID of the inhibition, or -1 if there was an error</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/inhibit.c"
                 line="260">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/inhibit.c"
                 line="261">a [iface@Gio.AsyncResult]</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="session_monitor_query_end_response"
              c:identifier="xdp_portal_session_monitor_query_end_response">
        <doc xml:space="preserve"
             filename="libportal/inhibit.c"
             line="640">This method should be called within one second of
receiving a [signal@Portal::session-state-changed] signal
with the 'Query End' state, to acknowledge that they
have handled the state change.

Possible ways to handle the state change are either
to call [method@Portal.session_inhibit] to prevent the
session from ending, or to save your state and get
ready for the session to end.</doc>
        <source-position filename="libportal/inhibit.h" line="98"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/inhibit.c"
                 line="642">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="session_monitor_start"
              c:identifier="xdp_portal_session_monitor_start"
              glib:finish-func="session_monitor_start_finish">
        <doc xml:space="preserve"
             filename="libportal/inhibit.c"
             line="543">Makes [class@Portal] start monitoring the login session state.

When the state changes, the [signal@Portal::session-state-changed]
signal is emitted.

Use [method@Portal.session_monitor_stop] to stop monitoring.</doc>
        <source-position filename="libportal/inhibit.h" line="82"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/inhibit.c"
                 line="545">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="parent"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/inhibit.c"
                 line="546">a XdpParent, or `NULL`</doc>
            <type name="Parent" c:type="XdpParent*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/inhibit.c"
                 line="547">options for this call</doc>
            <type name="SessionMonitorFlags" c:type="XdpSessionMonitorFlags"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/inhibit.c"
                 line="548">optional [class@Gio.Cancellable]</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="4">
            <doc xml:space="preserve"
                 filename="libportal/inhibit.c"
                 line="549">a callback to call when the request is done</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/inhibit.c"
                 line="550">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="session_monitor_start_finish"
              c:identifier="xdp_portal_session_monitor_start_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="libportal/inhibit.c"
             line="585">Finishes a session-monitor request.

Returns the result in the form of boolean.</doc>
        <source-position filename="libportal/inhibit.h" line="90"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libportal/inhibit.c"
               line="595">`TRUE` if the request succeeded</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/inhibit.c"
                 line="587">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/inhibit.c"
                 line="588">a [iface@Gio.AsyncResult]</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="session_monitor_stop"
              c:identifier="xdp_portal_session_monitor_stop">
        <doc xml:space="preserve"
             filename="libportal/inhibit.c"
             line="609">Stops session state monitoring that was started with
[method@Portal.session_monitor_start].</doc>
        <source-position filename="libportal/inhibit.h" line="95"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/inhibit.c"
                 line="611">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="session_uninhibit"
              c:identifier="xdp_portal_session_uninhibit">
        <doc xml:space="preserve"
             filename="libportal/inhibit.c"
             line="283">Removes an inhibitor that was created by a call
to [method@Portal.session_inhibit].</doc>
        <source-position filename="libportal/inhibit.h" line="57"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/inhibit.c"
                 line="285">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/inhibit.c"
                 line="286">unique ID for an active inhibition</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_background_status"
              c:identifier="xdp_portal_set_background_status"
              glib:finish-func="set_background_status_finish">
        <doc xml:space="preserve"
             filename="libportal/background.c"
             line="383">Sets the status information of the application, for when it's running
in background.</doc>
        <source-position filename="libportal/background.h" line="56"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/background.c"
                 line="385">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="status_message"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/background.c"
                 line="386">status message when running in background</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/background.c"
                 line="387">optional [class@Gio.Cancellable]</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve"
                 filename="libportal/background.c"
                 line="388">a callback to call when the request is done</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/background.c"
                 line="389">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_background_status_finish"
              c:identifier="xdp_portal_set_background_status_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="libportal/background.c"
             line="417">Finishes setting the background status of the application.</doc>
        <source-position filename="libportal/background.h" line="63"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libportal/background.c"
               line="425">%TRUE if successfully set status, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/background.c"
                 line="419">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/background.c"
                 line="420">a [iface@Gio.AsyncResult]</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_wallpaper"
              c:identifier="xdp_portal_set_wallpaper"
              glib:finish-func="set_wallpaper_finish">
        <doc xml:space="preserve"
             filename="libportal/wallpaper.c"
             line="268">Sets a desktop background image, given by a uri.</doc>
        <source-position filename="libportal/wallpaper.h" line="45"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/wallpaper.c"
                 line="270">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="parent"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/wallpaper.c"
                 line="271">parent window information</doc>
            <type name="Parent" c:type="XdpParent*"/>
          </parameter>
          <parameter name="uri" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/wallpaper.c"
                 line="272">the URI to use</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/wallpaper.c"
                 line="273">options for this call</doc>
            <type name="WallpaperFlags" c:type="XdpWallpaperFlags"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/wallpaper.c"
                 line="274">optional [class@Gio.Cancellable]</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="5">
            <doc xml:space="preserve"
                 filename="libportal/wallpaper.c"
                 line="275">a callback to call when the request is done</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/wallpaper.c"
                 line="276">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_wallpaper_finish"
              c:identifier="xdp_portal_set_wallpaper_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="libportal/wallpaper.c"
             line="311">Finishes the open-uri request.

Returns the result in the form of a boolean.</doc>
        <source-position filename="libportal/wallpaper.h" line="54"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libportal/wallpaper.c"
               line="321">`TRUE` if the call succeeded</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/wallpaper.c"
                 line="313">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/wallpaper.c"
                 line="314">a [iface@Gio.AsyncResult]</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="spawn"
              c:identifier="xdp_portal_spawn"
              glib:finish-func="spawn_finish">
        <doc xml:space="preserve"
             filename="libportal/spawn.c"
             line="188">Creates a new copy of the applications sandbox, and runs
a process in, with the given arguments.

The learn when the spawned process exits, connect to the
[signal@Portal::spawn-exited] signal.</doc>
        <source-position filename="libportal/spawn.h" line="48"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/spawn.c"
                 line="190">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="cwd" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/spawn.c"
                 line="191">the cwd for the new process</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="argv" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/spawn.c"
                 line="192">the argv for the new process</doc>
            <array c:type="const char* const*">
              <type name="utf8" c:type="char*"/>
            </array>
          </parameter>
          <parameter name="fds"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/spawn.c"
                 line="193">an array of open fds to pass to the new process, or `NULL`</doc>
            <array length="4" zero-terminated="0" c:type="int*">
              <type name="gint" c:type="int"/>
            </array>
          </parameter>
          <parameter name="map_to"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/spawn.c"
                 line="194">an array of integers to map the @fds to, or `NULL`. Must be the same
    length as @fds</doc>
            <array length="4" zero-terminated="0" c:type="int*">
              <type name="gint" c:type="int"/>
            </array>
          </parameter>
          <parameter name="n_fds" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/spawn.c"
                 line="196">the length of @fds and @map_to arrays</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="env"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/spawn.c"
                 line="197">an array of KEY=VALUE environment settings, or `NULL`</doc>
            <array c:type="const char* const*">
              <type name="utf8" c:type="char*"/>
            </array>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/spawn.c"
                 line="198">flags influencing the spawn operation</doc>
            <type name="SpawnFlags" c:type="XdpSpawnFlags"/>
          </parameter>
          <parameter name="sandbox_expose"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/spawn.c"
                 line="199">paths to expose rw in the new sandbox, or `NULL`</doc>
            <array c:type="const char* const*">
              <type name="utf8" c:type="char*"/>
            </array>
          </parameter>
          <parameter name="sandbox_expose_ro"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/spawn.c"
                 line="200">paths to expose ro in the new sandbox, or `NULL`</doc>
            <array c:type="const char* const*">
              <type name="utf8" c:type="char*"/>
            </array>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/spawn.c"
                 line="201">optional [class@Gio.Cancellable]</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="11">
            <doc xml:space="preserve"
                 filename="libportal/spawn.c"
                 line="202">a callback to call when the request is done</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/spawn.c"
                 line="203">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="spawn_finish"
              c:identifier="xdp_portal_spawn_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="libportal/spawn.c"
             line="252">Finishes the spawn request.

Returns the pid of the newly spawned process.</doc>
        <source-position filename="libportal/spawn.h" line="63"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libportal/spawn.c"
               line="262">the pid of the spawned process.</doc>
          <type name="pid_t" c:type="pid_t"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/spawn.c"
                 line="254">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/spawn.c"
                 line="255">a [iface@Gio.AsyncResult]</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="spawn_signal" c:identifier="xdp_portal_spawn_signal">
        <doc xml:space="preserve"
             filename="libportal/spawn.c"
             line="277">Sends a Unix signal to a process that has been spawned
by [method@Portal.spawn].</doc>
        <source-position filename="libportal/spawn.h" line="68"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/spawn.c"
                 line="279">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="pid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/spawn.c"
                 line="280">the pid of the process to send a signal to</doc>
            <type name="pid_t" c:type="pid_t"/>
          </parameter>
          <parameter name="signal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/spawn.c"
                 line="281">the Unix signal to send (see signal(7))</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="to_process_group" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/spawn.c"
                 line="282">whether to send the signal to the process
    group of the process</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="take_screenshot"
              c:identifier="xdp_portal_take_screenshot"
              glib:finish-func="take_screenshot_finish">
        <doc xml:space="preserve"
             filename="libportal/screenshot.c"
             line="207">Takes a screenshot.

When the request is done, @callback will be called. You can then
call [method@Portal.take_screenshot_finish] to get the results.</doc>
        <source-position filename="libportal/screenshot.h" line="32"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/screenshot.c"
                 line="209">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="parent"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/screenshot.c"
                 line="210">parent window information</doc>
            <type name="Parent" c:type="XdpParent*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/screenshot.c"
                 line="211">options for this call</doc>
            <type name="ScreenshotFlags" c:type="XdpScreenshotFlags"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/screenshot.c"
                 line="212">optional [class@Gio.Cancellable]</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="4">
            <doc xml:space="preserve"
                 filename="libportal/screenshot.c"
                 line="213">a callback to call when the request is done</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/screenshot.c"
                 line="214">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="take_screenshot_finish"
              c:identifier="xdp_portal_take_screenshot_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="libportal/screenshot.c"
             line="248">Finishes a screenshot request.

Returns the result in the form of a URI pointing to an image file.</doc>
        <source-position filename="libportal/screenshot.h" line="40"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="libportal/screenshot.c"
               line="258">URI pointing to an image file</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/screenshot.c"
                 line="250">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/screenshot.c"
                 line="251">a [iface@Gio.AsyncResult]</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="trash_file"
              c:identifier="xdp_portal_trash_file"
              glib:finish-func="trash_file_finish">
        <doc xml:space="preserve"
             filename="libportal/trash.c"
             line="122">Sends the file at @path to the trash can.</doc>
        <source-position filename="libportal/trash.h" line="27"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/trash.c"
                 line="124">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/trash.c"
                 line="125">the path for a local file</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/trash.c"
                 line="126">optional [class@Gio.Cancellable]</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve"
                 filename="libportal/trash.c"
                 line="127">a callback to call when the request is done</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/trash.c"
                 line="128">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="trash_file_finish"
              c:identifier="xdp_portal_trash_file_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="libportal/trash.c"
             line="154">Finishes the trash-file request.

Returns the result in the form of a boolean.</doc>
        <source-position filename="libportal/trash.h" line="34"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libportal/trash.c"
               line="164">`TRUE` if the call succeeded</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/trash.c"
                 line="156">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/trash.c"
                 line="157">a [iface@Gio.AsyncResult]</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="update_install"
              c:identifier="xdp_portal_update_install"
              glib:finish-func="update_install_finish">
        <doc xml:space="preserve"
             filename="libportal/updates.c"
             line="384">Installs an available software update.

This should be called in response to a [signal@Portal::update-available]
signal.

During the update installation, the [signal@Portal::update-progress]
signal will be emitted to provide progress information.</doc>
        <source-position filename="libportal/updates.h" line="70"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/updates.c"
                 line="386">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="parent" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/updates.c"
                 line="387">a [struct@Parent]</doc>
            <type name="Parent" c:type="XdpParent*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/updates.c"
                 line="388">options for this call</doc>
            <type name="UpdateInstallFlags" c:type="XdpUpdateInstallFlags"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/updates.c"
                 line="389">optional [class@Gio.Cancellable]</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="4">
            <doc xml:space="preserve"
                 filename="libportal/updates.c"
                 line="390">a callback to call when the request is done</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/updates.c"
                 line="391">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="update_install_finish"
              c:identifier="xdp_portal_update_install_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="libportal/updates.c"
             line="426">Finishes an update-installation request.

Returns the result in the form of boolean.

Note that the update may not be completely installed
by the time this function is called. You need to
listen to the [signal@Portal::update-progress] signal
to learn when the installation is complete.</doc>
        <source-position filename="libportal/updates.h" line="78"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libportal/updates.c"
               line="441">`TRUE` if the update is being installed</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/updates.c"
                 line="428">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/updates.c"
                 line="429">a [iface@Gio.AsyncResult]</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="update_monitor_start"
              c:identifier="xdp_portal_update_monitor_start"
              glib:finish-func="update_monitor_start_finish">
        <doc xml:space="preserve"
             filename="libportal/updates.c"
             line="202">Makes `XdpPortal` start monitoring for available software updates.

When a new update is available, the [signal@Portal::update-available].
signal is emitted.

Use [method@Portal.update_monitor_stop] to stop monitoring.</doc>
        <source-position filename="libportal/updates.h" line="50"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/updates.c"
                 line="204">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/updates.c"
                 line="205">options for this cal..</doc>
            <type name="UpdateMonitorFlags" c:type="XdpUpdateMonitorFlags"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/updates.c"
                 line="206">optional [class@Gio.Cancellable]</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve"
                 filename="libportal/updates.c"
                 line="207">a callback to call when the request is done</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/updates.c"
                 line="208">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="update_monitor_start_finish"
              c:identifier="xdp_portal_update_monitor_start_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="libportal/updates.c"
             line="237">Finishes an update-monitor request.

Returns the result in the form of boolean.</doc>
        <source-position filename="libportal/updates.h" line="57"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libportal/updates.c"
               line="247">`TRUE` if the request succeeded</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/updates.c"
                 line="239">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/updates.c"
                 line="240">a [iface@Gio.AsyncResult]</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="update_monitor_stop"
              c:identifier="xdp_portal_update_monitor_stop">
        <doc xml:space="preserve"
             filename="libportal/updates.c"
             line="261">Stops update monitoring that was started with
[method@Portal.update_monitor_start].</doc>
        <source-position filename="libportal/updates.h" line="62"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="portal" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/updates.c"
                 line="263">a [class@Portal]</doc>
            <type name="Portal" c:type="XdpPortal*"/>
          </instance-parameter>
        </parameters>
      </method>
      <glib:signal name="location-updated" when="first">
        <doc xml:space="preserve"
             filename="libportal/portal.c"
             line="231">Emitted when location monitoring is enabled and the location changes.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="latitude" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/portal.c"
                 line="234">the latitude, in degrees</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="longitude" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/portal.c"
                 line="235">the longitude, in degrees</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="altitude" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/portal.c"
                 line="236">the altitude, in meters</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="accuracy" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/portal.c"
                 line="237">the accuracy, in meters</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="speed" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/portal.c"
                 line="238">the speed, in meters per second</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="heading" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/portal.c"
                 line="239">the heading, in degrees</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="description" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/portal.c"
                 line="240">the description</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="timestamp_s" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/portal.c"
                 line="241">the timestamp seconds since the Unix epoch</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
          <parameter name="timestamp_ms" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/portal.c"
                 line="242">the microseconds fraction of the timestamp</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="notification-action-invoked" when="first">
        <doc xml:space="preserve"
             filename="libportal/portal.c"
             line="264">Emitted when a non-exported action is activated on a notification.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/portal.c"
                 line="267">the notification ID</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="action" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/portal.c"
                 line="268">the action name</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="parameter"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/portal.c"
                 line="269">the target parameter for the action</doc>
            <type name="GLib.Variant"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="session-state-changed" when="first">
        <doc xml:space="preserve"
             filename="libportal/portal.c"
             line="153">Emitted when session state monitoring is
enabled and the state of the login session changes or
the screensaver is activated or deactivated.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="screensaver_active" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/portal.c"
                 line="156">whether the screensaver is active</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="session_state" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/portal.c"
                 line="157">the current state of the login session</doc>
            <type name="LoginSessionState"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="spawn-exited" when="first">
        <doc xml:space="preserve"
             filename="libportal/portal.c"
             line="135">Emitted when a process that was spawned with [method@Portal.spawn] exits.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="pid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/portal.c"
                 line="138">the pid of the process</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="exit_status" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/portal.c"
                 line="139">the exit status of the process</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="update-available" when="first">
        <doc xml:space="preserve"
             filename="libportal/portal.c"
             line="173">Emitted when updates monitoring is enabled
and a new update is available.

It is only sent once with the same information, but it can be sent many
times if new updates appear.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="running_commit" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/portal.c"
                 line="176">the commit that the sandbox is running with</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="local_commit" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/portal.c"
                 line="177">the commit that is currently deployed. Restarting
    the app will use this commit</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="remote_commit" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/portal.c"
                 line="179">the commit that is available as an update.
    Updating the app will deloy this commit</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="update-progress" when="first">
        <doc xml:space="preserve"
             filename="libportal/portal.c"
             line="199">Emitted to indicate progress of an update installation.

It is undefined exactly how often it is sent, but it will be emitted at
least once at the end with a non-zero @status. For each successful
operation in the update, we're also guaranteed to send exactly one signal
with @progress 100.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="n_ops" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/portal.c"
                 line="202">the number of operations that the update consists of</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="op" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/portal.c"
                 line="203">the position of the currently active operation</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="progress" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/portal.c"
                 line="204">the progress of the currently active operation, as
  a number between 0 and 100</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="status" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/portal.c"
                 line="206">the overall status of the update</doc>
            <type name="UpdateStatus"/>
          </parameter>
          <parameter name="error" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/portal.c"
                 line="207">the error name if the status is 'failed'</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="error_message" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/portal.c"
                 line="208">the error message if the status is 'failed'</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="PortalClass"
            c:type="XdpPortalClass"
            glib:is-gtype-struct-for="Portal">
      <source-position filename="libportal/portal-helpers.h" line="40"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <enumeration name="PrintFlags"
                 glib:type-name="XdpPrintFlags"
                 glib:get-type="xdp_print_flags_get_type"
                 c:type="XdpPrintFlags">
      <member name="none"
              value="0"
              c:identifier="XDP_PRINT_FLAG_NONE"
              glib:nick="none"
              glib:name="XDP_PRINT_FLAG_NONE">
      </member>
    </enumeration>
    <bitfield name="RemoteDesktopFlags"
              glib:type-name="XdpRemoteDesktopFlags"
              glib:get-type="xdp_remote_desktop_flags_get_type"
              c:type="XdpRemoteDesktopFlags">
      <doc xml:space="preserve"
           filename="libportal/remote.h"
           line="129">Options for starting remote desktop sessions.</doc>
      <member name="none"
              value="0"
              c:identifier="XDP_REMOTE_DESKTOP_FLAG_NONE"
              glib:nick="none"
              glib:name="XDP_REMOTE_DESKTOP_FLAG_NONE">
        <doc xml:space="preserve"
             filename="libportal/remote.h"
             line="131">No options</doc>
      </member>
      <member name="multiple"
              value="1"
              c:identifier="XDP_REMOTE_DESKTOP_FLAG_MULTIPLE"
              glib:nick="multiple"
              glib:name="XDP_REMOTE_DESKTOP_FLAG_MULTIPLE">
        <doc xml:space="preserve"
             filename="libportal/remote.h"
             line="132">allow opening multiple streams</doc>
      </member>
    </bitfield>
    <enumeration name="SaveFileFlags"
                 glib:type-name="XdpSaveFileFlags"
                 glib:get-type="xdp_save_file_flags_get_type"
                 c:type="XdpSaveFileFlags">
      <member name="none"
              value="0"
              c:identifier="XDP_SAVE_FILE_FLAG_NONE"
              glib:nick="none"
              glib:name="XDP_SAVE_FILE_FLAG_NONE">
      </member>
    </enumeration>
    <bitfield name="ScreencastFlags"
              glib:type-name="XdpScreencastFlags"
              glib:get-type="xdp_screencast_flags_get_type"
              c:type="XdpScreencastFlags">
      <doc xml:space="preserve"
           filename="libportal/remote.h"
           line="73">Options for starting screen casts.</doc>
      <member name="none"
              value="0"
              c:identifier="XDP_SCREENCAST_FLAG_NONE"
              glib:nick="none"
              glib:name="XDP_SCREENCAST_FLAG_NONE">
        <doc xml:space="preserve"
             filename="libportal/remote.h"
             line="75">No options</doc>
      </member>
      <member name="multiple"
              value="1"
              c:identifier="XDP_SCREENCAST_FLAG_MULTIPLE"
              glib:nick="multiple"
              glib:name="XDP_SCREENCAST_FLAG_MULTIPLE">
        <doc xml:space="preserve"
             filename="libportal/remote.h"
             line="76">allow opening multiple streams</doc>
      </member>
    </bitfield>
    <bitfield name="ScreenshotFlags"
              glib:type-name="XdpScreenshotFlags"
              glib:get-type="xdp_screenshot_flags_get_type"
              c:type="XdpScreenshotFlags">
      <member name="none"
              value="0"
              c:identifier="XDP_SCREENSHOT_FLAG_NONE"
              glib:nick="none"
              glib:name="XDP_SCREENSHOT_FLAG_NONE">
      </member>
      <member name="interactive"
              value="1"
              c:identifier="XDP_SCREENSHOT_FLAG_INTERACTIVE"
              glib:nick="interactive"
              glib:name="XDP_SCREENSHOT_FLAG_INTERACTIVE">
      </member>
    </bitfield>
    <class name="Session"
           c:symbol-prefix="session"
           c:type="XdpSession"
           parent="GObject.Object"
           glib:type-name="XdpSession"
           glib:get-type="xdp_session_get_type"
           glib:type-struct="SessionClass">
      <doc xml:space="preserve"
           filename="libportal/session.c"
           line="25">A representation of long-lived screencast portal interactions.

The XdpSession object is used to represent portal interactions with the
screencast or remote desktop portals that extend over multiple portal calls.

To find out what kind of session an XdpSession object represents and whether
it is still active, you can use [method@Session.get_session_type] and
[method@Session.get_session_state].

All sessions start in an initial state. They can be made active by calling
[method@Session.start], and ended by calling [method@Session.close].</doc>
      <source-position filename="libportal/session.h" line="29"/>
      <method name="close" c:identifier="xdp_session_close">
        <doc xml:space="preserve"
             filename="libportal/session.c"
             line="163">Closes the session.</doc>
        <source-position filename="libportal/session.h" line="46"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/session.c"
                 line="165">an active [class@Session]</doc>
            <type name="Session" c:type="XdpSession*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="connect_to_eis"
              c:identifier="xdp_session_connect_to_eis"
              throws="1">
        <doc xml:space="preserve"
             filename="libportal/remote.c"
             line="893">Connect this XdpRemoteDesktopSession to an EIS implementation and return the fd.
This fd can be passed into ei_setup_backend_fd(). See the libei
documentation for details.

This call must be issued before xdp_session_start(). If successful, all input
event emulation must be handled via the EIS connection and calls to
xdp_session_pointer_motion() etc. are silently ignored.</doc>
        <source-position filename="libportal/remote.h" line="194"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libportal/remote.c"
               line="906">the file descriptor to the EIS implementation</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="895">a [class@Session]</doc>
            <type name="Session" c:type="XdpSession*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_devices" c:identifier="xdp_session_get_devices">
        <doc xml:space="preserve"
             filename="libportal/remote.c"
             line="1304">Obtains the devices that the user selected.

Unless the session is active, this function returns `XDP_DEVICE_NONE`.</doc>
        <source-position filename="libportal/remote.h" line="188"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libportal/remote.c"
               line="1312">the selected devices</doc>
          <type name="DeviceType" c:type="XdpDeviceType"/>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="1306">a [class@Session]</doc>
            <type name="Session" c:type="XdpSession*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_persist_mode"
              c:identifier="xdp_session_get_persist_mode">
        <doc xml:space="preserve"
             filename="libportal/remote.c"
             line="1258">Retrieves the effective persist mode of @session.

May only be called after @session is successfully started, i.e. after
[method@Session.start_finish].</doc>
        <source-position filename="libportal/remote.h" line="288"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libportal/remote.c"
               line="1267">the effective persist mode of @session</doc>
          <type name="PersistMode" c:type="XdpPersistMode"/>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="1260">a [class@Session]</doc>
            <type name="Session" c:type="XdpSession*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_restore_token"
              c:identifier="xdp_session_get_restore_token">
        <doc xml:space="preserve"
             filename="libportal/remote.c"
             line="1278">Retrieves the restore token of @session.

A restore token will only be available if `XDP_PERSIST_MODE_TRANSIENT`
or `XDP_PERSIST_MODE_PERSISTENT` was passed when creating the screencast
session.

Remote desktop sessions cannot be restored.

May only be called after @session is successfully started, i.e. after
[method@Session.start_finish].</doc>
        <source-position filename="libportal/remote.h" line="291"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="libportal/remote.c"
               line="1293">the restore token of @session</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="1280">a [class@Session]</doc>
            <type name="Session" c:type="XdpSession*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_session_state"
              c:identifier="xdp_session_get_session_state">
        <doc xml:space="preserve"
             filename="libportal/remote.c"
             line="1377">Obtains information about the state of the session that is represented
by @session.</doc>
        <source-position filename="libportal/remote.h" line="170"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libportal/remote.c"
               line="1384">the state of @session</doc>
          <type name="SessionState" c:type="XdpSessionState"/>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="1379">an [class@Session]</doc>
            <type name="Session" c:type="XdpSession*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_session_type"
              c:identifier="xdp_session_get_session_type">
        <doc xml:space="preserve"
             filename="libportal/session.c"
             line="146">Obtains information about the type of session that is represented
by @session.</doc>
        <source-position filename="libportal/session.h" line="49"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libportal/session.c"
               line="153">the type of @session</doc>
          <type name="SessionType" c:type="XdpSessionType"/>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/session.c"
                 line="148">an [class@Session]</doc>
            <type name="Session" c:type="XdpSession*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_streams" c:identifier="xdp_session_get_streams">
        <doc xml:space="preserve"
             filename="libportal/remote.c"
             line="1332">Obtains the streams that the user selected.

The information in the returned [struct@GLib.Variant] has the format
`a(ua{sv})`. Each item in the array is describing a stream. The first member
is the pipewire node ID, the second is a dictionary of stream properties,
including:

- position, `(ii)`: a tuple consisting of the position `(x, y)` in the compositor
    coordinate space. Note that the position may not be equivalent to a
    position in a pixel coordinate space. Only available for monitor streams.
- size, `(ii)`: a tuple consisting of (width, height). The size represents the size
    of the stream as it is displayed in the compositor coordinate space.
    Note that this size may not be equivalent to a size in a pixel coordinate
    space. The size may differ from the size of the stream.

Unless the session is active, this function returns `NULL`.</doc>
        <source-position filename="libportal/remote.h" line="191"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libportal/remote.c"
               line="1353">the selected streams</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="1334">a [class@Session]</doc>
            <type name="Session" c:type="XdpSession*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="keyboard_key" c:identifier="xdp_session_keyboard_key">
        <doc xml:space="preserve"
             filename="libportal/remote.c"
             line="1124">Changes the state of the key to @state.

May only be called on a remote desktop session
with `XDP_DEVICE_KEYBOARD` access.</doc>
        <source-position filename="libportal/remote.h" line="263"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="1126">a remote desktop [class@Session]</doc>
            <type name="Session" c:type="XdpSession*"/>
          </instance-parameter>
          <parameter name="keysym" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="1127">whether to interpret @key as a keysym instead of a keycode</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="1128">the keysym or keycode to change</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="state" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="1129">the new state</doc>
            <type name="KeyState" c:type="XdpKeyState"/>
          </parameter>
        </parameters>
      </method>
      <method name="open_pipewire_remote"
              c:identifier="xdp_session_open_pipewire_remote">
        <doc xml:space="preserve"
             filename="libportal/remote.c"
             line="833">Opens a file descriptor to the pipewire remote where the screencast
streams are available.

The file descriptor should be used to create a pw_remote object, by using
pw_remote_connect_fd(). Only the screencast stream nodes will be available
from this pipewire node.</doc>
        <source-position filename="libportal/remote.h" line="185"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libportal/remote.c"
               line="844">the file descriptor</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="835">a [class@Session]</doc>
            <type name="Session" c:type="XdpSession*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="pointer_axis" c:identifier="xdp_session_pointer_axis">
        <doc xml:space="preserve"
             filename="libportal/remote.c"
             line="1059">The axis movement from a smooth scroll device, such as a touchpad.
When applicable, the size of the motion delta should be equivalent to
the motion vector of a pointer motion done using the same advice.

May only be called on a remote desktop session
with `XDP_DEVICE_POINTER` access.</doc>
        <source-position filename="libportal/remote.h" line="226"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="1061">a [class@Session]</doc>
            <type name="Session" c:type="XdpSession*"/>
          </instance-parameter>
          <parameter name="finish" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="1062">whether this is the last in a series of related events</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="dx" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="1063">relative axis movement on the X axis</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
          <parameter name="dy" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="1064">relative axis movement on the Y axis</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
        </parameters>
      </method>
      <method name="pointer_axis_discrete"
              c:identifier="xdp_session_pointer_axis_discrete">
        <doc xml:space="preserve"
             filename="libportal/remote.c"
             line="1094">The axis movement from a discrete scroll device.

May only be called on a remote desktop session
with `XDP_DEVICE_POINTER` access.</doc>
        <source-position filename="libportal/remote.h" line="245"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="1096">a [class@Session]</doc>
            <type name="Session" c:type="XdpSession*"/>
          </instance-parameter>
          <parameter name="axis" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="1097">the axis to change</doc>
            <type name="DiscreteAxis" c:type="XdpDiscreteAxis"/>
          </parameter>
          <parameter name="steps" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="1098">number of steps scrolled</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="pointer_button" c:identifier="xdp_session_pointer_button">
        <doc xml:space="preserve"
             filename="libportal/remote.c"
             line="1029">Changes the state of the button to @state.

May only be called on a remote desktop session
with `XDP_DEVICE_POINTER` access.</doc>
        <source-position filename="libportal/remote.h" line="221"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="1031">a [class@Session]</doc>
            <type name="Session" c:type="XdpSession*"/>
          </instance-parameter>
          <parameter name="button" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="1032">the button</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="state" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="1033">the new state</doc>
            <type name="ButtonState" c:type="XdpButtonState"/>
          </parameter>
        </parameters>
      </method>
      <method name="pointer_motion" c:identifier="xdp_session_pointer_motion">
        <doc xml:space="preserve"
             filename="libportal/remote.c"
             line="966">Moves the pointer from its current position.

May only be called on a remote desktop session
with `XDP_DEVICE_POINTER` access.</doc>
        <source-position filename="libportal/remote.h" line="198"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="968">a [class@Session]</doc>
            <type name="Session" c:type="XdpSession*"/>
          </instance-parameter>
          <parameter name="dx" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="969">relative horizontal movement</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
          <parameter name="dy" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="970">relative vertical movement</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
        </parameters>
      </method>
      <method name="pointer_position"
              c:identifier="xdp_session_pointer_position">
        <doc xml:space="preserve"
             filename="libportal/remote.c"
             line="996">Moves the pointer to a new position in the given streams logical
coordinate space.

May only be called on a remote desktop session
with `XDP_DEVICE_POINTER` access.</doc>
        <source-position filename="libportal/remote.h" line="203"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="998">a [class@Session]</doc>
            <type name="Session" c:type="XdpSession*"/>
          </instance-parameter>
          <parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="999">the node ID of the pipewire stream the position is relative to</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="1000">new X position</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="1001">new Y position</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
        </parameters>
      </method>
      <method name="start"
              c:identifier="xdp_session_start"
              glib:finish-func="start_finish">
        <doc xml:space="preserve"
             filename="libportal/remote.c"
             line="776">Starts the session.

When the request is done, @callback will be called. You can then
call [method@Session.start_finish] to get the results.</doc>
        <source-position filename="libportal/remote.h" line="173"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="778">a [class@Session] in initial state</doc>
            <type name="Session" c:type="XdpSession*"/>
          </instance-parameter>
          <parameter name="parent"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="779">parent window information</doc>
            <type name="Parent" c:type="XdpParent*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="780">optional [class@Gio.Cancellable]</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="781">a callback to call when the request is done</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="782">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="start_finish"
              c:identifier="xdp_session_start_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="libportal/remote.c"
             line="812">Finishes the session-start request.</doc>
        <source-position filename="libportal/remote.h" line="180"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libportal/remote.c"
               line="820">`TRUE` if the session was started successfully.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="814">a [class@Session]</doc>
            <type name="Session" c:type="XdpSession*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="815">a [iface@Gio.AsyncResult]</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="touch_down" c:identifier="xdp_session_touch_down">
        <doc xml:space="preserve"
             filename="libportal/remote.c"
             line="1156">Notify about a new touch down event.

The `(x, y)` position represents the new touch point position in the streams
logical coordinate space.

May only be called on a remote desktop session
with `XDP_DEVICE_TOUCHSCREEN` access.</doc>
        <source-position filename="libportal/remote.h" line="269"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="1158">a [class@Session]</doc>
            <type name="Session" c:type="XdpSession*"/>
          </instance-parameter>
          <parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="1159">the node ID of the pipewire stream the position is relative to</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="slot" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="1160">touch slot where the touch point appeared</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="1161">new X position</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="1162">new Y position</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
        </parameters>
      </method>
      <method name="touch_position" c:identifier="xdp_session_touch_position">
        <doc xml:space="preserve"
             filename="libportal/remote.c"
             line="1193">Notify about a new touch motion event.

The `(x, y)` position represents where the touch point position in the
streams logical coordinate space moved.

May only be called on a remote desktop session
with `XDP_DEVICE_TOUCHSCREEN` access.</doc>
        <source-position filename="libportal/remote.h" line="276"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="1195">a [class@Session]</doc>
            <type name="Session" c:type="XdpSession*"/>
          </instance-parameter>
          <parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="1196">the node ID of the pipewire stream the position is relative to</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="slot" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="1197">touch slot that is changing position</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="1198">new X position</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="1199">new Y position</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
        </parameters>
      </method>
      <method name="touch_up" c:identifier="xdp_session_touch_up">
        <doc xml:space="preserve"
             filename="libportal/remote.c"
             line="1230">Notify about a new touch up event.

May only be called on a remote desktop session
with `XDP_DEVICE_TOUCHSCREEN` access.</doc>
        <source-position filename="libportal/remote.h" line="283"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="1232">a [class@Session]</doc>
            <type name="Session" c:type="XdpSession*"/>
          </instance-parameter>
          <parameter name="slot" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/remote.c"
                 line="1233">touch slot that changed</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <glib:signal name="closed" when="cleanup" no-recurse="1" no-hooks="1">
        <doc xml:space="preserve"
             filename="libportal/session.c"
             line="75">Emitted when a session is closed externally.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="SessionClass"
            c:type="XdpSessionClass"
            glib:is-gtype-struct-for="Session">
      <source-position filename="libportal/session.h" line="29"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <enumeration name="SessionMonitorFlags"
                 glib:type-name="XdpSessionMonitorFlags"
                 glib:get-type="xdp_session_monitor_flags_get_type"
                 c:type="XdpSessionMonitorFlags">
      <member name="none"
              value="0"
              c:identifier="XDP_SESSION_MONITOR_FLAG_NONE"
              glib:nick="none"
              glib:name="XDP_SESSION_MONITOR_FLAG_NONE">
      </member>
    </enumeration>
    <enumeration name="SessionState"
                 glib:type-name="XdpSessionState"
                 glib:get-type="xdp_session_state_get_type"
                 c:type="XdpSessionState">
      <doc xml:space="preserve"
           filename="libportal/remote.h"
           line="27">The state of a session.</doc>
      <member name="initial"
              value="0"
              c:identifier="XDP_SESSION_INITIAL"
              glib:nick="initial"
              glib:name="XDP_SESSION_INITIAL">
        <doc xml:space="preserve"
             filename="libportal/remote.h"
             line="29">the session has not been started.</doc>
      </member>
      <member name="active"
              value="1"
              c:identifier="XDP_SESSION_ACTIVE"
              glib:nick="active"
              glib:name="XDP_SESSION_ACTIVE">
        <doc xml:space="preserve"
             filename="libportal/remote.h"
             line="30">the session is active.</doc>
      </member>
      <member name="closed"
              value="2"
              c:identifier="XDP_SESSION_CLOSED"
              glib:nick="closed"
              glib:name="XDP_SESSION_CLOSED">
        <doc xml:space="preserve"
             filename="libportal/remote.h"
             line="31">the session is no longer active.</doc>
      </member>
    </enumeration>
    <enumeration name="SessionType"
                 glib:type-name="XdpSessionType"
                 glib:get-type="xdp_session_type_get_type"
                 c:type="XdpSessionType">
      <doc xml:space="preserve"
           filename="libportal/session.h"
           line="31">The type of a session.</doc>
      <member name="screencast"
              value="0"
              c:identifier="XDP_SESSION_SCREENCAST"
              glib:nick="screencast"
              glib:name="XDP_SESSION_SCREENCAST">
        <doc xml:space="preserve"
             filename="libportal/session.h"
             line="33">a screencast session.</doc>
      </member>
      <member name="remote_desktop"
              value="1"
              c:identifier="XDP_SESSION_REMOTE_DESKTOP"
              glib:nick="remote-desktop"
              glib:name="XDP_SESSION_REMOTE_DESKTOP">
        <doc xml:space="preserve"
             filename="libportal/session.h"
             line="34">a remote desktop session.</doc>
      </member>
      <member name="input_capture"
              value="2"
              c:identifier="XDP_SESSION_INPUT_CAPTURE"
              glib:nick="input-capture"
              glib:name="XDP_SESSION_INPUT_CAPTURE">
        <doc xml:space="preserve"
             filename="libportal/session.h"
             line="35">an input capture session.</doc>
      </member>
    </enumeration>
    <class name="Settings"
           c:symbol-prefix="settings"
           c:type="XdpSettings"
           parent="GObject.Object"
           glib:type-name="XdpSettings"
           glib:get-type="xdp_settings_get_type"
           glib:type-struct="SettingsClass">
      <doc xml:space="preserve"
           filename="libportal/settings.c"
           line="30">A representation of the settings exposed by the portal.

The [class@Settings] object is used to access and observe the settings
exposed by xdg-desktop-portal.

It is obtained from [method@Portal.get_settings]. Call
[method@Settings.read_value] to read a settings value. Connect to
[signal@Settings::changed] to observe value changes.</doc>
      <source-position filename="libportal/settings.h" line="32"/>
      <method name="read" c:identifier="xdp_settings_read" introspectable="0">
        <doc xml:space="preserve"
             filename="libportal/settings.c"
             line="194">Read a setting value within @namespace, with @key.

A convenience function that combines xdp_settings_read_value() with
g_variant_get().

In case of error, if @error is not NULL, then the error is
returned.</doc>
        <source-position filename="libportal/settings.h" line="39"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="settings" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/settings.c"
                 line="196">the [class@Settings] object.</doc>
            <type name="Settings" c:type="XdpSettings*"/>
          </instance-parameter>
          <parameter name="namespace" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/settings.c"
                 line="197">the namespace of the value.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/settings.c"
                 line="198">the key of the value.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/settings.c"
                 line="199">a GCancellable or NULL.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="error" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/settings.c"
                 line="200">return location for error or NULL.</doc>
            <type name="GLib.Error" c:type="GError**"/>
          </parameter>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/settings.c"
                 line="201">a #GVariant format string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/settings.c"
                 line="202">arguments as per @format</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="read_all_values"
              c:identifier="xdp_settings_read_all_values"
              throws="1">
        <doc xml:space="preserve"
             filename="libportal/settings.c"
             line="264">Read all the setting values within @namespace.</doc>
        <source-position filename="libportal/settings.h" line="51"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libportal/settings.c"
               line="274">a value containing all the values, or
%NULL if not found. If @error is not NULL, then the error is
returned.</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="settings" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/settings.c"
                 line="266">the [class@Settings] object.</doc>
            <type name="Settings" c:type="XdpSettings*"/>
          </instance-parameter>
          <parameter name="namespaces" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/settings.c"
                 line="267">List of namespaces to filter results by, supports
simple globbing explained below.</doc>
            <type name="utf8" c:type="const char* const*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/settings.c"
                 line="269">a GCancellable or NULL.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="read_string"
              c:identifier="xdp_settings_read_string"
              throws="1">
        <doc xml:space="preserve"
             filename="libportal/settings.c"
             line="165">Read a setting value as unsigned int within @namespace, with @key.</doc>
        <source-position filename="libportal/settings.h" line="48"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libportal/settings.c"
               line="175">the stringint value, or NULL if not found or not
the right type. If @error is not NULL, then the error is returned.</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="settings" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/settings.c"
                 line="167">the [class@Settings] object.</doc>
            <type name="Settings" c:type="XdpSettings*"/>
          </instance-parameter>
          <parameter name="namespace" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/settings.c"
                 line="168">the namespace of the value.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/settings.c"
                 line="169">the key of the value.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/settings.c"
                 line="170">a GCancellable or NULL.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="read_uint"
              c:identifier="xdp_settings_read_uint"
              throws="1">
        <doc xml:space="preserve"
             filename="libportal/settings.c"
             line="136">Read a setting value as unsigned int within @namespace, with @key.</doc>
        <source-position filename="libportal/settings.h" line="45"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libportal/settings.c"
               line="146">the uint value, or 0 if not found or not
the right type. If @error is not NULL, then the error is returned.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="settings" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/settings.c"
                 line="138">the [class@Settings] object.</doc>
            <type name="Settings" c:type="XdpSettings*"/>
          </instance-parameter>
          <parameter name="namespace" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/settings.c"
                 line="139">the namespace of the value.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/settings.c"
                 line="140">the key of the value.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/settings.c"
                 line="141">a GCancellable or NULL.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="read_value"
              c:identifier="xdp_settings_read_value"
              throws="1">
        <doc xml:space="preserve"
             filename="libportal/settings.c"
             line="227">Read a setting value within @namespace, with @key.</doc>
        <source-position filename="libportal/settings.h" line="35"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libportal/settings.c"
               line="237">the value, or %NULL if not
found. If @error is not NULL, then the error is returned.</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="settings" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/settings.c"
                 line="229">the [class@Settings] object.</doc>
            <type name="Settings" c:type="XdpSettings*"/>
          </instance-parameter>
          <parameter name="namespace" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/settings.c"
                 line="230">the namespace of the value.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/settings.c"
                 line="231">the key of the value.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libportal/settings.c"
                 line="232">a GCancellable or NULL.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <glib:signal name="changed" when="first">
        <doc xml:space="preserve"
             filename="libportal/settings.c"
             line="79">Emitted when a setting value is changed externally.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="namespace" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/settings.c"
                 line="82">the value namespace</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/settings.c"
                 line="83">the value key</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libportal/settings.c"
                 line="84">the value</doc>
            <type name="GLib.Variant"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="SettingsClass"
            c:type="XdpSettingsClass"
            glib:is-gtype-struct-for="Settings">
      <source-position filename="libportal/settings.h" line="32"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <bitfield name="SpawnFlags"
              glib:type-name="XdpSpawnFlags"
              glib:get-type="xdp_spawn_flags_get_type"
              c:type="XdpSpawnFlags">
      <doc xml:space="preserve"
           filename="libportal/spawn.h"
           line="26">Flags influencing the spawn operation and how the
new sandbox is created.</doc>
      <member name="none"
              value="0"
              c:identifier="XDP_SPAWN_FLAG_NONE"
              glib:nick="none"
              glib:name="XDP_SPAWN_FLAG_NONE">
        <doc xml:space="preserve"
             filename="libportal/spawn.h"
             line="28">No flags</doc>
      </member>
      <member name="clearenv"
              value="1"
              c:identifier="XDP_SPAWN_FLAG_CLEARENV"
              glib:nick="clearenv"
              glib:name="XDP_SPAWN_FLAG_CLEARENV">
        <doc xml:space="preserve"
             filename="libportal/spawn.h"
             line="29">Clear the environment</doc>
      </member>
      <member name="latest"
              value="2"
              c:identifier="XDP_SPAWN_FLAG_LATEST"
              glib:nick="latest"
              glib:name="XDP_SPAWN_FLAG_LATEST">
        <doc xml:space="preserve"
             filename="libportal/spawn.h"
             line="30">Spawn the latest version of the app</doc>
      </member>
      <member name="sandbox"
              value="4"
              c:identifier="XDP_SPAWN_FLAG_SANDBOX"
              glib:nick="sandbox"
              glib:name="XDP_SPAWN_FLAG_SANDBOX">
        <doc xml:space="preserve"
             filename="libportal/spawn.h"
             line="31">Spawn in a sandbox (equivalent to the --sandbox option of flatpak run)</doc>
      </member>
      <member name="no_network"
              value="8"
              c:identifier="XDP_SPAWN_FLAG_NO_NETWORK"
              glib:nick="no-network"
              glib:name="XDP_SPAWN_FLAG_NO_NETWORK">
        <doc xml:space="preserve"
             filename="libportal/spawn.h"
             line="32">Spawn without network (equivalent to the --unshare=network option of flatpak run)</doc>
      </member>
      <member name="watch"
              value="16"
              c:identifier="XDP_SPAWN_FLAG_WATCH"
              glib:nick="watch"
              glib:name="XDP_SPAWN_FLAG_WATCH">
        <doc xml:space="preserve"
             filename="libportal/spawn.h"
             line="33">Kill the sandbox when the caller disappears from the session bus</doc>
      </member>
    </bitfield>
    <enumeration name="UpdateInstallFlags"
                 glib:type-name="XdpUpdateInstallFlags"
                 glib:get-type="xdp_update_install_flags_get_type"
                 c:type="XdpUpdateInstallFlags">
      <member name="none"
              value="0"
              c:identifier="XDP_UPDATE_INSTALL_FLAG_NONE"
              glib:nick="none"
              glib:name="XDP_UPDATE_INSTALL_FLAG_NONE">
      </member>
    </enumeration>
    <enumeration name="UpdateMonitorFlags"
                 glib:type-name="XdpUpdateMonitorFlags"
                 glib:get-type="xdp_update_monitor_flags_get_type"
                 c:type="XdpUpdateMonitorFlags">
      <member name="none"
              value="0"
              c:identifier="XDP_UPDATE_MONITOR_FLAG_NONE"
              glib:nick="none"
              glib:name="XDP_UPDATE_MONITOR_FLAG_NONE">
      </member>
    </enumeration>
    <enumeration name="UpdateStatus"
                 glib:type-name="XdpUpdateStatus"
                 glib:get-type="xdp_update_status_get_type"
                 c:type="XdpUpdateStatus">
      <doc xml:space="preserve"
           filename="libportal/updates.h"
           line="26">The values of this enum are returned in the
[signal@Portal::update-progress] signal to indicate
the current progress of an installation.</doc>
      <member name="running"
              value="0"
              c:identifier="XDP_UPDATE_STATUS_RUNNING"
              glib:nick="running"
              glib:name="XDP_UPDATE_STATUS_RUNNING">
        <doc xml:space="preserve"
             filename="libportal/updates.h"
             line="28">Installation in progress</doc>
      </member>
      <member name="empty"
              value="1"
              c:identifier="XDP_UPDATE_STATUS_EMPTY"
              glib:nick="empty"
              glib:name="XDP_UPDATE_STATUS_EMPTY">
        <doc xml:space="preserve"
             filename="libportal/updates.h"
             line="29">Nothing to install</doc>
      </member>
      <member name="done"
              value="2"
              c:identifier="XDP_UPDATE_STATUS_DONE"
              glib:nick="done"
              glib:name="XDP_UPDATE_STATUS_DONE">
        <doc xml:space="preserve"
             filename="libportal/updates.h"
             line="30">Installation finished successfully</doc>
      </member>
      <member name="failed"
              value="3"
              c:identifier="XDP_UPDATE_STATUS_FAILED"
              glib:nick="failed"
              glib:name="XDP_UPDATE_STATUS_FAILED">
        <doc xml:space="preserve"
             filename="libportal/updates.h"
             line="31">Installation failed</doc>
      </member>
    </enumeration>
    <enumeration name="UserInformationFlags"
                 glib:type-name="XdpUserInformationFlags"
                 glib:get-type="xdp_user_information_flags_get_type"
                 c:type="XdpUserInformationFlags">
      <member name="none"
              value="0"
              c:identifier="XDP_USER_INFORMATION_FLAG_NONE"
              glib:nick="none"
              glib:name="XDP_USER_INFORMATION_FLAG_NONE">
      </member>
    </enumeration>
    <constant name="WALLPAPER_TARGET_BOTH"
              value="0"
              c:type="XDP_WALLPAPER_TARGET_BOTH">
      <source-position filename="libportal/wallpaper.h" line="42"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <bitfield name="WallpaperFlags"
              glib:type-name="XdpWallpaperFlags"
              glib:get-type="xdp_wallpaper_flags_get_type"
              c:type="XdpWallpaperFlags">
      <doc xml:space="preserve"
           filename="libportal/wallpaper.h"
           line="26">The values of this enumeration determine where the wallpaper is being set.</doc>
      <member name="none"
              value="0"
              c:identifier="XDP_WALLPAPER_FLAG_NONE"
              glib:nick="none"
              glib:name="XDP_WALLPAPER_FLAG_NONE">
        <doc xml:space="preserve"
             filename="libportal/wallpaper.h"
             line="28">No flags</doc>
      </member>
      <member name="background"
              value="1"
              c:identifier="XDP_WALLPAPER_FLAG_BACKGROUND"
              glib:nick="background"
              glib:name="XDP_WALLPAPER_FLAG_BACKGROUND">
        <doc xml:space="preserve"
             filename="libportal/wallpaper.h"
             line="29">Set wallpaper on the desktop background</doc>
      </member>
      <member name="lockscreen"
              value="2"
              c:identifier="XDP_WALLPAPER_FLAG_LOCKSCREEN"
              glib:nick="lockscreen"
              glib:name="XDP_WALLPAPER_FLAG_LOCKSCREEN">
        <doc xml:space="preserve"
             filename="libportal/wallpaper.h"
             line="30">Set wallpaper on the lockscreen</doc>
      </member>
      <member name="preview"
              value="4"
              c:identifier="XDP_WALLPAPER_FLAG_PREVIEW"
              glib:nick="preview"
              glib:name="XDP_WALLPAPER_FLAG_PREVIEW">
        <doc xml:space="preserve"
             filename="libportal/wallpaper.h"
             line="31">Request the preview to be shown</doc>
      </member>
    </bitfield>
  </namespace>
</repository>
