<?xml version="1.0"?>
<!--
 Copyright (C) 2018 Igalia S.L.

 This library is free software; you can redistribute it and/or
 modify it under the terms of the GNU Lesser General Public
 License as published by the Free Software Foundation; either
 version 2 of the License, or (at your option) any later version.

 This library is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 Lesser General Public License for more details.

 You should have received a copy of the GNU Lesser General Public
 License along with this library. If not, see <http://www.gnu.org/licenses/>.

 Author: Patrick Griffis <pgriffis@igalia.com>
-->

<node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd">
  <!--
    org.freedesktop.portal.Settings:
    @short_description: Settings interface

    This interface provides read-only access to a small number
    of host settings required for toolkits similar to XSettings.
    It is not for general purpose settings.

    Currently the valid keys are entirely implementation details
    that are undocumented. If you are a toolkit and want to use
    this please open an issue.
  -->
  <interface name="org.freedesktop.portal.Settings">

    <!--
      ReadAll:
      @namespaces: List of namespaces to filter results by, supports simple globbing explained below.
      @value: Dictionary of namespaces to its keys and values.

      If @namespaces is an empty array or contains an empty string it matches all. Globbing is supported but only for
      trailing sections, e.g. "org.example.*".
    -->
    <method name='ReadAll'>
      <arg name='namespaces' type='as'/>
      <arg name='value' direction='out' type='a{sa{sv}}'/>
    </method>

    <!--
      Read:
      @namespace: Namespace to look up @key in.
      @key: The key to get.
      @value: The value @key is set to.

      Reads a single value. Returns an error on any unknown namespace or key.
    -->
    <method name='Read'>
      <arg name='namespace' type='s'/>
      <arg name='key' type='s'/>
      <arg name='value' direction='out' type='v'/>
    </method>

    <!--
      SettingChanged:
      @namespace: Namespace of changed setting.
      @key: The key of changed setting.
      @value: The new value.

      Emitted when a setting changes.
    -->
    <signal name='SettingChanged'>
      <arg name='namespace' direction='out' type='s'/>
      <arg name='key' direction='out' type='s'/>
      <arg name='value' direction='out' type='v'/>
    </signal>

    <property name="version" type="u" access="read"/>
  </interface>
</node>
