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

 SPDX-License-Identifier: LGPL-2.1-or-later

 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.1 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.impl.portal.Settings:
    @short_description: Settings portal backend 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 interface provides the following keys:

    * ``org.freedesktop.appearance`` ``color-scheme`` (``u``)

      Indicates the system's preferred color scheme.
      Supported values are:

      - ``0``: No preference
      - ``1``: Prefer dark appearance
      - ``2``: Prefer light appearance

      Unknown values should be treated as 0 (no preference).

    * ``org.freedesktop.appearance`` ``accent-color`` (``(ddd)``)

      Indicates the system's preferred accent color as a tuple of RGB values
      in the sRGB color space, in the range [0,1].
      Out-of-range RGB values should be treated as an unset accent color.

    * ``org.freedesktop.appearance``  ``contrast`` (``u``)

      Indicates the system's preferred contrast level.
      Supported values are:

      - ``0``: No preference (normal contrast)
      - ``1``: Higher contrast

      Unknown values should be treated as 0 (no preference).

    Implementations can provide other keys; they are entirely
    implementation details that are undocumented. If you are a
    toolkit and want to use this please open an issue.

    Note that the Settings portal can operate without this backend,
    implementing it is optional.
  -->
  <interface name="org.freedesktop.impl.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 type="as" name="namespaces" direction="in"/>
      <annotation name="org.qtproject.QtDBus.QtTypeName.Out0" value="QMap&lt;QString,QVariantMap&gt;"/>
      <arg type="a{sa{sv}}" name="value" direction="out"/>
    </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 type="s" name="namespace" direction="in"/>
      <arg type="s" name="key" direction="in"/>
      <arg type="v" name="value" direction="out"/>
    </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 type="s" name="namespace" direction="out"/>
      <arg type="s" name="key" direction="out"/>
      <arg type="v" name="value" direction="out"/>
    </signal>

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