Some checks failed
Docker. / Ubuntu (push) Has been cancelled
User-agent updater. / User-agent (push) Failing after 15s
Lock Threads / lock (push) Failing after 10s
Waiting for answer. / waiting-for-answer (push) Failing after 22s
Needs user action. / needs-user-action (push) Failing after 8s
Can't reproduce. / cant-reproduce (push) Failing after 8s
Close stale issues and PRs / stale (push) Has been cancelled
472 lines
20 KiB
XML
472 lines
20 KiB
XML
<?xml version="1.0"?>
|
|
<!--
|
|
Copyright (C) 2017-2018 Red Hat, Inc.
|
|
|
|
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/>.
|
|
-->
|
|
|
|
<node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd">
|
|
<!--
|
|
org.freedesktop.portal.RemoteDesktop:
|
|
@short_description: Remote desktop portal
|
|
|
|
The Remote desktop portal allows to create remote desktop sessions.
|
|
|
|
This documentation describes version 2 of this interface.
|
|
-->
|
|
<interface name="org.freedesktop.portal.RemoteDesktop">
|
|
<!--
|
|
CreateSession:
|
|
@options: Vardict with optional further information
|
|
@handle: Object path for the :ref:`org.freedesktop.portal.Request` object representing this call
|
|
|
|
Create a remote desktop session.
|
|
|
|
A remote desktop session is used to allow remote controlling a desktop
|
|
session.
|
|
|
|
A remote desktop session may only be started and stopped with this interface,
|
|
but you can use the :ref:`org.freedesktop.portal.Session` object created with this
|
|
method together with certain methods on the :ref:`org.freedesktop.portal.ScreenCast` and
|
|
:ref:`org.freedesktop.portal.Clipboard` interfaces. Specifically, you can call
|
|
:ref:`org.freedesktop.portal.ScreenCast.SelectSources` to also get screen content,
|
|
and :ref:`org.freedesktop.portal.ScreenCast.OpenPipeWireRemote` to acquire a file
|
|
descriptor for a PipeWire remote. See :ref:`org.freedesktop.portal.ScreenCast` for
|
|
more information on how to use those methods. To capture clipboard content,
|
|
you can call :ref:`org.freedesktop.portal.Clipboard.RequestClipboard`. See
|
|
:ref:`org.freedesktop.portal.Clipboard` for more information on the clipboard
|
|
integration.
|
|
|
|
Supported keys in the @options vardict include:
|
|
|
|
* ``handle_token`` (``s``)
|
|
|
|
A string that will be used as the last element of the @handle. Must be a valid
|
|
object path element. See the :ref:`org.freedesktop.portal.Request` documentation for
|
|
more information about the @handle.
|
|
|
|
* ``session_handle_token`` (``s``)
|
|
|
|
A string that will be used as the last element of the session handle. Must be a valid
|
|
object path element. See the :ref:`org.freedesktop.portal.Session` documentation for
|
|
more information about the session handle.
|
|
|
|
|
|
The following results get returned via the :ref:`org.freedesktop.portal.Request::Response` signal:
|
|
|
|
* ``session_handle`` (``s``)
|
|
|
|
The session handle. An object path for the
|
|
:ref:`org.freedesktop.portal.Session` object representing the created
|
|
session.
|
|
|
|
.. note::
|
|
The ``session_handle`` is an object path that was erroneously implemented
|
|
as ``s``. For backwards compatibility it will remain this type.
|
|
-->
|
|
<method name="CreateSession">
|
|
<annotation name="org.qtproject.QtDBus.QtTypeName.In0" value="QVariantMap"/>
|
|
<arg type="a{sv}" name="options" direction="in"/>
|
|
<arg type="o" name="handle" direction="out"/>
|
|
</method>
|
|
<!--
|
|
SelectDevices:
|
|
@session_handle: Object path for the :ref:`org.freedesktop.portal.Session` object
|
|
@options: Vardict with optional further information
|
|
@handle: Object path for the :ref:`org.freedesktop.portal.Request` object representing this call
|
|
|
|
Select input devices to remote control.
|
|
|
|
Supported keys in the @options vardict include:
|
|
|
|
* ``handle_token`` (``s``)
|
|
|
|
A string that will be used as the last element of the @handle. Must be a valid
|
|
object path element. See the :ref:`org.freedesktop.portal.Request` documentation for
|
|
more information about the @handle.
|
|
|
|
* ``types`` (``u``)
|
|
|
|
Bitmask of what device types to request remote controlling of.
|
|
Default is all.
|
|
|
|
* ``restore_token`` (``s``)
|
|
|
|
The token to restore a previous session.
|
|
|
|
If the stored session cannot be restored, this value is ignored
|
|
and the user will be prompted normally. This may happen when, for
|
|
example, the session contains a monitor or a window that is not
|
|
available anymore, or when the stored permissions are withdrawn.
|
|
|
|
The restore token is invalidated after using it once. To restore
|
|
the same session again, use the new restore token sent in response
|
|
to starting this session.
|
|
|
|
This option was added in version 2 of this interface.
|
|
|
|
* ``persist_mode`` (``u``)
|
|
|
|
How this session should persist. Default is 0. Accepted values are:
|
|
|
|
- ``0``: Do not persist (default)
|
|
- ``1``: Permissions persist as long as the application is running
|
|
- ``2``: Permissions persist until explicitly revoked
|
|
|
|
If the permission for the session to persist is granted, a restore token will
|
|
be returned via the :ref:`org.freedesktop.portal.Request::Response` signal of the
|
|
start method used to start the session.
|
|
|
|
This option was added in version 2 of this interface.
|
|
|
|
For available device types, see the AvailableDeviceTypes property.
|
|
-->
|
|
<method name="SelectDevices">
|
|
<arg type="o" name="session_handle" direction="in"/>
|
|
<annotation name="org.qtproject.QtDBus.QtTypeName.In1" value="QVariantMap"/>
|
|
<arg type="a{sv}" name="options" direction="in"/>
|
|
<arg type="o" name="handle" direction="out"/>
|
|
</method>
|
|
<!--
|
|
Start:
|
|
@session_handle: Object path for the :ref:`org.freedesktop.portal.Session` object
|
|
@parent_window: Identifier for the application window, see :doc:`window-identifiers`
|
|
@options: Vardict with optional further information
|
|
@handle: Object path for the :ref:`org.freedesktop.portal.Request` object representing this call
|
|
|
|
Start the remote desktop session. This will typically result in the portal
|
|
presenting a dialog letting the user select what to share, including
|
|
devices and optionally screen content if screen cast sources was
|
|
selected.
|
|
|
|
Supported keys in the @options vardict include:
|
|
|
|
* ``handle_token`` (``s``)
|
|
|
|
A string that will be used as the last element of the @handle. Must be a valid
|
|
object path element. See the :ref:`org.freedesktop.portal.Request` documentation for
|
|
more information about the @handle.
|
|
|
|
The following results get returned via the
|
|
:ref:`org.freedesktop.portal.Request::Response` signal:
|
|
|
|
* ``devices`` (``u``)
|
|
|
|
A bitmask of the devices selected by the user.
|
|
|
|
* ``clipboard_enabled`` (``b``)
|
|
|
|
A boolean for whether the clipboard was enabled ('true') or not ('false').
|
|
See the :ref:`org.freedesktop.portal.Clipboard` documentation for more information.
|
|
Since version 2.
|
|
|
|
* ``restore_token`` (``s``)
|
|
|
|
The restore token. This token is a single use token that can later
|
|
be used to restore a session. See
|
|
org.freedesktop.portal.RemoteDesktop.SelectDevices() for details.
|
|
|
|
This response option was added in version 2 of this interface.
|
|
|
|
If a screen cast source was selected, the results of the
|
|
:ref:`org.freedesktop.portal.ScreenCast.Start` response signal may be
|
|
included.
|
|
-->
|
|
<method name="Start">
|
|
<arg type="o" name="session_handle" direction="in"/>
|
|
<arg type="s" name="parent_window" direction="in"/>
|
|
<annotation name="org.qtproject.QtDBus.QtTypeName.In2" value="QVariantMap"/>
|
|
<arg type="a{sv}" name="options" direction="in"/>
|
|
<arg type="o" name="handle" direction="out"/>
|
|
</method>
|
|
<!--
|
|
NotifyPointerMotion:
|
|
@session_handle: Object path for the :ref:`org.freedesktop.portal.Session` object
|
|
@options: Vardict with optional further information
|
|
@dx: Relative movement on the x axis
|
|
@dy: Relative movement on the y axis
|
|
|
|
Notify about a new relative pointer motion event. The (dx, dy) vector
|
|
represents the new pointer position in the streams logical coordinate
|
|
space.
|
|
-->
|
|
<method name="NotifyPointerMotion">
|
|
<arg type="o" name="session_handle" direction="in"/>
|
|
<annotation name="org.qtproject.QtDBus.QtTypeName.In1" value="QVariantMap"/>
|
|
<arg type="a{sv}" name="options" direction="in"/>
|
|
<arg type="d" name="dx" direction="in"/>
|
|
<arg type="d" name="dy" direction="in"/>
|
|
</method>
|
|
<!--
|
|
NotifyPointerMotionAbsolute:
|
|
@session_handle: Object path for the :ref:`org.freedesktop.portal.Session` object
|
|
@options: Vardict with optional further information
|
|
@stream: The PipeWire stream node the coordinate is relative to
|
|
@x: Pointer motion x coordinate
|
|
@y: Pointer motion y coordinate
|
|
|
|
Notify about a new absolute pointer motion event. The (x, y) position
|
|
represents the new pointer position in the streams logical coordinate
|
|
space (see the logical_size stream property in
|
|
:ref:`org.freedesktop.portal.ScreenCast`).
|
|
-->
|
|
<method name="NotifyPointerMotionAbsolute">
|
|
<arg type="o" name="session_handle" direction="in"/>
|
|
<annotation name="org.qtproject.QtDBus.QtTypeName.In1" value="QVariantMap"/>
|
|
<arg type="a{sv}" name="options" direction="in"/>
|
|
<arg type="u" name="stream" direction="in"/>
|
|
<arg type="d" name="x" direction="in"/>
|
|
<arg type="d" name="y" direction="in"/>
|
|
</method>
|
|
<!--
|
|
NotifyPointerButton:
|
|
@session_handle: Object path for the :ref:`org.freedesktop.portal.Session` object
|
|
@options: Vardict with optional further information
|
|
@button: The pointer button was pressed or released
|
|
@state: The new state of the button
|
|
|
|
The pointer button is encoded according to Linux Evdev button codes.
|
|
|
|
May only be called if POINTER access was provided after starting the
|
|
session.
|
|
|
|
Available button states:
|
|
|
|
- ``0``: Released
|
|
- ``1``: Pressed
|
|
-->
|
|
<method name="NotifyPointerButton">
|
|
<arg type="o" name="session_handle" direction="in"/>
|
|
<annotation name="org.qtproject.QtDBus.QtTypeName.In1" value="QVariantMap"/>
|
|
<arg type="a{sv}" name="options" direction="in"/>
|
|
<arg type="i" name="button" direction="in"/>
|
|
<arg type="u" name="state" direction="in"/>
|
|
</method>
|
|
<!--
|
|
NotifyPointerAxis:
|
|
@session_handle: Object path for the :ref:`org.freedesktop.portal.Session` object
|
|
@options: Vardict with optional further information
|
|
@dx: Relative axis movement on the x axis
|
|
@dy: Relative axis movement on the y axis
|
|
|
|
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 if POINTER access was provided after starting the
|
|
session.
|
|
|
|
Supported keys in the @options vardict include:
|
|
|
|
* ``finish`` (``b``)
|
|
|
|
If set to true, this is the last axis event in a series, for
|
|
example as a result of the fingers being lifted from a touchpad
|
|
after a two-finger scroll. Default is false.
|
|
-->
|
|
<method name="NotifyPointerAxis">
|
|
<arg type="o" name="session_handle" direction="in"/>
|
|
<annotation name="org.qtproject.QtDBus.QtTypeName.In1" value="QVariantMap"/>
|
|
<arg type="a{sv}" name="options" direction="in"/>
|
|
<arg type="d" name="dx" direction="in"/>
|
|
<arg type="d" name="dy" direction="in"/>
|
|
</method>
|
|
<!--
|
|
NotifyPointerAxisDiscrete:
|
|
@session_handle: Object path for the :ref:`org.freedesktop.portal.Session` object
|
|
@options: Vardict with optional further information
|
|
@axis: The axis that was scrolled
|
|
@steps: The number of steps scrolled
|
|
|
|
May only be called if POINTER access was provided after starting the
|
|
session.
|
|
|
|
Available axes:
|
|
|
|
- ``0``: Vertical scroll
|
|
- ``1``: Horizontal scroll
|
|
|
|
-->
|
|
<method name="NotifyPointerAxisDiscrete">
|
|
<arg type="o" name="session_handle" direction="in"/>
|
|
<annotation name="org.qtproject.QtDBus.QtTypeName.In1" value="QVariantMap"/>
|
|
<arg type="a{sv}" name="options" direction="in"/>
|
|
<arg type="u" name="axis" direction="in"/>
|
|
<arg type="i" name="steps" direction="in"/>
|
|
</method>
|
|
<!--
|
|
NotifyKeyboardKeycode:
|
|
@session_handle: Object path for the :ref:`org.freedesktop.portal.Session` object
|
|
@options: Vardict with optional further information
|
|
@keycode: Keyboard code that was pressed or released
|
|
@state: New state of keyboard keycode
|
|
|
|
May only be called if KEYBOARD access was provided after starting the
|
|
session.
|
|
|
|
Available keyboard keycode states:
|
|
|
|
- ``0``: Released
|
|
- ``1``: Pressed
|
|
-->
|
|
<method name="NotifyKeyboardKeycode">
|
|
<arg type="o" name="session_handle" direction="in"/>
|
|
<annotation name="org.qtproject.QtDBus.QtTypeName.In1" value="QVariantMap"/>
|
|
<arg type="a{sv}" name="options" direction="in"/>
|
|
<arg type="i" name="keycode" direction="in"/>
|
|
<arg type="u" name="state" direction="in"/>
|
|
</method>
|
|
<!--
|
|
NotifyKeyboardKeysym:
|
|
@session_handle: Object path for the :ref:`org.freedesktop.portal.Session` object
|
|
@options: Vardict with optional further information
|
|
@keysym: Keyboard symbol that was pressed or released
|
|
@state: New state of keyboard keysym
|
|
|
|
May only be called if KEYBOARD access was provided after starting the
|
|
session.
|
|
|
|
Available keyboard keysym states:
|
|
|
|
- ``0``: Released
|
|
- ``1``: Pressed
|
|
-->
|
|
<method name="NotifyKeyboardKeysym">
|
|
<arg type="o" name="session_handle" direction="in"/>
|
|
<annotation name="org.qtproject.QtDBus.QtTypeName.In1" value="QVariantMap"/>
|
|
<arg type="a{sv}" name="options" direction="in"/>
|
|
<arg type="i" name="keysym" direction="in"/>
|
|
<arg type="u" name="state" direction="in"/>
|
|
</method>
|
|
<!--
|
|
NotifyTouchDown:
|
|
@session_handle: Object path for the :ref:`org.freedesktop.portal.Session` object
|
|
@options: Vardict with optional further information
|
|
@stream: The PipeWire stream node the coordinate is relative to
|
|
@slot: Touch slot where touch point appeared
|
|
@x: Touch down x coordinate
|
|
@y: Touch down y coordinate
|
|
|
|
May only be called if TOUCHSCREEN access was provided after starting the
|
|
session.
|
|
|
|
Notify about a new touch down event. The (x, y) position
|
|
represents the new touch point position in the streams logical
|
|
coordinate space (see the logical_size stream property in
|
|
:ref:`org.freedesktop.portal.ScreenCast`).
|
|
-->
|
|
<method name="NotifyTouchDown">
|
|
<arg type="o" name="session_handle" direction="in"/>
|
|
<annotation name="org.qtproject.QtDBus.QtTypeName.In1" value="QVariantMap"/>
|
|
<arg type="a{sv}" name="options" direction="in"/>
|
|
<arg type="u" name="stream" direction="in"/>
|
|
<arg type="u" name="slot" direction="in"/>
|
|
<arg type="d" name="x" direction="in"/>
|
|
<arg type="d" name="y" direction="in"/>
|
|
</method>
|
|
<!--
|
|
NotifyTouchMotion:
|
|
@session_handle: Object path for the :ref:`org.freedesktop.portal.Session` object
|
|
@options: Vardict with optional further information
|
|
@stream: The PipeWire stream node the coordinate is relative to
|
|
@slot: Touch slot where touch point appeared
|
|
@x: Touch motion x coordinate
|
|
@y: Touch motion y coordinate
|
|
|
|
May only be called if TOUCHSCREEN access was provided after starting the
|
|
session.
|
|
|
|
Notify about a new touch motion event. The (x, y) position
|
|
represents where the touch point position in the streams logical
|
|
coordinate space moved (see the logical_size stream property in
|
|
:ref:`org.freedesktop.portal.ScreenCast`).
|
|
-->
|
|
<method name="NotifyTouchMotion">
|
|
<arg type="o" name="session_handle" direction="in"/>
|
|
<annotation name="org.qtproject.QtDBus.QtTypeName.In1" value="QVariantMap"/>
|
|
<arg type="a{sv}" name="options" direction="in"/>
|
|
<arg type="u" name="stream" direction="in"/>
|
|
<arg type="u" name="slot" direction="in"/>
|
|
<arg type="d" name="x" direction="in"/>
|
|
<arg type="d" name="y" direction="in"/>
|
|
</method>
|
|
<!--
|
|
NotifyTouchUp:
|
|
@session_handle: Object path for the :ref:`org.freedesktop.portal.Session` object
|
|
@options: Vardict with optional further information
|
|
@slot: Touch slot where touch point appeared
|
|
|
|
May only be called if TOUCHSCREEN access was provided after starting the
|
|
session.
|
|
|
|
Notify about a new touch up event.
|
|
-->
|
|
<method name="NotifyTouchUp">
|
|
<arg type="o" name="session_handle" direction="in"/>
|
|
<annotation name="org.qtproject.QtDBus.QtTypeName.In1" value="QVariantMap"/>
|
|
<arg type="a{sv}" name="options" direction="in"/>
|
|
<arg type="u" name="slot" direction="in"/>
|
|
</method>
|
|
|
|
<!--
|
|
ConnectToEIS:
|
|
@session_handle: Object path for the :ref:`org.freedesktop.portal.Session` object
|
|
@options: Vardict with optional further information
|
|
@fd: A file descriptor to an EIS implementation that can be passed to a libei sender context
|
|
|
|
Request a connection to an EIS implementation. The returned handle can
|
|
be passed to ei_setup_backend_fd() for a libei sender context to
|
|
complete the connection. All information about available devices and the
|
|
event flow is subject to libei. Please see the libei documentation for details.
|
|
|
|
This method may only be called once per session, where the EIS
|
|
implementation disconnects the session should be closed.
|
|
|
|
This method must be called after org.freedesktop.portal.RemoteDesktop.Start()
|
|
|
|
Once an EIS connection is established, input events must be sent exclusively via
|
|
the EIS connection. Any events submitted via NotifyPointerMotion,
|
|
NotifyKeyboardKeycode and other Notify* methods will return an error.
|
|
|
|
To see how to pair a PipeWire stream with a libei device region, see the
|
|
documentation for the ``mapping_id`` stream property in
|
|
:ref:`org.freedesktop.portal.ScreenCast.Start`.
|
|
|
|
This method was added in version 2 of this interface.
|
|
-->
|
|
<method name="ConnectToEIS">
|
|
<annotation name="org.gtk.GDBus.C.Name" value="connect_to_eis"/>
|
|
<annotation name="org.gtk.GDBus.C.UnixFD" value="true"/>
|
|
<arg type="o" name="session_handle" direction="in"/>
|
|
<annotation name="org.qtproject.QtDBus.QtTypeName.In1" value="QVariantMap"/>
|
|
<arg type="a{sv}" name="options" direction="in"/>
|
|
<arg type="h" name="fd" direction="out"/>
|
|
</method>
|
|
|
|
<!--
|
|
AvailableDeviceTypes:
|
|
|
|
A bitmask of available source types. Currently defined types are:
|
|
|
|
- ``1``: KEYBOARD
|
|
- ``2``: POINTER
|
|
- ``4``: TOUCHSCREEN
|
|
-->
|
|
<property name="AvailableDeviceTypes" type="u" access="read"/>
|
|
<property name="version" type="u" access="read"/>
|
|
</interface>
|
|
</node>
|