Warning, /network/kdeconnect-kde/interfaces/systeminterfaces/org.freedesktop.portal.RemoteDesktop.xml is written in an unsupported language. File is not indexed.

0001 <?xml version="1.0"?>
0002 <!--
0003  Copyright (C) 2017-2018 Red Hat, Inc.
0004 
0005  This library is free software; you can redistribute it and/or
0006  modify it under the terms of the GNU Lesser General Public
0007  License as published by the Free Software Foundation; either
0008  version 2 of the License, or (at your option) any later version.
0009 
0010  This library is distributed in the hope that it will be useful,
0011  but WITHOUT ANY WARRANTY; without even the implied warranty of
0012  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0013  Lesser General Public License for more details.
0014 
0015  You should have received a copy of the GNU Lesser General Public
0016  License along with this library. If not, see <http://www.gnu.org/licenses/>.
0017 -->
0018 
0019 <node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd">
0020   <!--
0021       org.freedesktop.portal.RemoteDesktop:
0022       @short_description: Remote desktop portal
0023 
0024       The Remote desktop portal allows to create remote desktop sessions.
0025 
0026       This documentation describes version 2 of this interface.
0027   -->
0028   <interface name="org.freedesktop.portal.RemoteDesktop">
0029     <!--
0030         CreateSession:
0031         @options: Vardict with optional further information
0032         @handle: Object path for the #org.freedesktop.portal.Request object representing this call
0033 
0034         Create a remote desktop session.
0035 
0036         A remote desktop session is used to allow remote controlling a desktop
0037         session.
0038 
0039         A remote desktop session may only be started and stopped with this interface,
0040         but you can use the #org.freedesktop.portal.Session object created with this
0041         method together with certain methods on the #org.freedesktop.portal.ScreenCast and
0042         #org.freedesktop.portal.Clipboard interfaces. Specifically, you can call
0043         org.freedesktop.portal.ScreenCast.SelectSources() to also get screen content,
0044         and org.freedesktop.portal.ScreenCast.OpenPipeWireRemote() to acquire a file
0045         descriptor for a PipeWire remote. See #org.freedesktop.portal.ScreenCast for
0046         more information on how to use those methods. To capture clipboard content,
0047         you can call org.freedesktop.portal.Clipboard.RequestClipboard(). See
0048         #org.freedesktop.portal.Clipboard for more information on the clipboard
0049         integration.
0050 
0051         Supported keys in the @options vardict include:
0052         <variablelist>
0053           <varlistentry>
0054             <term>handle_token s</term>
0055             <listitem><para>
0056               A string that will be used as the last element of the @handle. Must be a valid
0057               object path element. See the #org.freedesktop.portal.Request documentation for
0058               more information about the @handle.
0059             </para></listitem>
0060           </varlistentry>
0061           <varlistentry>
0062             <term>session_handle_token s</term>
0063             <listitem><para>
0064               A string that will be used as the last element of the session handle. Must be a valid
0065               object path element. See the #org.freedesktop.portal.Session documentation for
0066               more information about the session handle.
0067             </para></listitem>
0068           </varlistentry>
0069         </variablelist>
0070 
0071         The following results get returned via the #org.freedesktop.portal.Request::Response signal:
0072         <variablelist>
0073           <varlistentry>
0074             <term>session_handle o</term>
0075             <listitem><para>
0076               The session handle. An object path for the
0077               #org.freedesktop.portal.Session object representing the created
0078               session.
0079             </para></listitem>
0080           </varlistentry>
0081         </variablelist>
0082     -->
0083     <method name="CreateSession">
0084       <arg type="a{sv}" name="options" direction="in"/>
0085       <annotation name="org.qtproject.QtDBus.QtTypeName.In0" value="QVariantMap"/>
0086       <arg type="o" name="handle" direction="out"/>
0087     </method>
0088     <!--
0089         SelectDevices:
0090         @session_handle: Object path for the #org.freedesktop.portal.Session object
0091         @options: Vardict with optional further information
0092         @handle: Object path for the #org.freedesktop.portal.Request object representing this call
0093 
0094         Select input devices to remote control.
0095 
0096         Supported keys in the @options vardict include:
0097         <variablelist>
0098           <varlistentry>
0099             <term>handle_token s</term>
0100             <listitem><para>
0101               A string that will be used as the last element of the @handle. Must be a valid
0102               object path element. See the #org.freedesktop.portal.Request documentation for
0103               more information about the @handle.
0104             </para></listitem>
0105           </varlistentry>
0106           <varlistentry>
0107             <term>types u</term>
0108             <listitem><para>
0109               Bitmask of what device types to request remote controlling of.
0110               Default is all.
0111             </para></listitem>
0112           </varlistentry>
0113           <varlistentry>
0114             <term>restore_token s</term>
0115             <listitem><para>
0116               The token to restore a previous session.
0117 
0118               If the stored session cannot be restored, this value is ignored
0119               and the user will be prompted normally. This may happen when, for
0120               example, the session contains a monitor or a window that is not
0121               available anymore, or when the stored permissions are withdrawn.
0122 
0123               The restore token is invalidated after using it once. To restore
0124               the same session again, use the new restore token sent in response
0125               to starting this session.
0126 
0127               This option was added in version 2 of this interface.
0128             </para></listitem>
0129           </varlistentry>
0130           <varlistentry>
0131             <term>persist_mode u</term>
0132             <listitem><para>
0133               How this session should persist. Default is 0. Accepted values are:
0134 
0135               <simplelist>
0136                 <member>0: Do not persist (default)</member>
0137                 <member>1: Permissions persist as long as the application is running</member>
0138                 <member>2: Permissions persist until explicitly revoked</member>
0139               </simplelist>
0140 
0141               If the permission for the session to persist is granted, a restore token will
0142               be returned via the #org.freedesktop.portal.Request::Response signal of the
0143               start method used to start the session.
0144 
0145               This option was added in version 2 of this interface.
0146             </para></listitem>
0147           </varlistentry>
0148         </variablelist>
0149 
0150         For available device types, see the AvailableDeviceTypes property.
0151     -->
0152     <method name="SelectDevices">
0153       <arg type="o" name="session_handle" direction="in"/>
0154       <arg type="a{sv}" name="options" direction="in"/>
0155       <annotation name="org.qtproject.QtDBus.QtTypeName.In1" value="QVariantMap"/>
0156       <arg type="o" name="handle" direction="out"/>
0157     </method>
0158     <!--
0159         Start:
0160         @session_handle: Object path for the #org.freedesktop.portal.Session object
0161         @parent_window: Identifier for the application window, see <link linkend="parent_window">Common Conventions</link>
0162         @options: Vardict with optional further information
0163         @handle: Object path for the #org.freedesktop.portal.Request object representing this call
0164 
0165         Start the remote desktop session. This will typically result in the portal
0166         presenting a dialog letting the user select what to share, including
0167         devices and optionally screen content if screen cast sources was
0168         selected.
0169 
0170         Supported keys in the @options vardict include:
0171         <variablelist>
0172           <varlistentry>
0173             <term>handle_token s</term>
0174             <listitem><para>
0175               A string that will be used as the last element of the @handle. Must be a valid
0176               object path element. See the #org.freedesktop.portal.Request documentation for
0177               more information about the @handle.
0178             </para></listitem>
0179           </varlistentry>
0180         </variablelist>
0181 
0182         The following results get returned via the
0183         #org.freedesktop.portal.Request::Response signal:
0184         <variablelist>
0185           <varlistentry>
0186             <term>devices u</term>
0187             <listitem><para>
0188               A bitmask of the devices selected by the user.
0189             </para></listitem>
0190           </varlistentry>
0191           <varlistentry>
0192             <term>clipboard_enabled b</term>
0193             <listitem><para>
0194               A boolean for whether the clipboard was enabled ('true') or not ('false').
0195               See the #org.freedesktop.portal.Clipboard documentation for more information.
0196               Since version 2.
0197             </para></listitem>
0198           </varlistentry>
0199           <varlistentry>
0200             <term>restore_token s</term>
0201             <listitem><para>
0202               The restore token. This token is a single use token that can later
0203               be used to restore a session. See
0204               org.freedesktop.portal.RemoteDesktop.SelectDevices() for details.
0205 
0206               This response option was added in version 2 of this interface.
0207             </para></listitem>
0208           </varlistentry>
0209         </variablelist>
0210 
0211         If a screen cast source was selected, the results of the
0212         #org.freedesktop.portal.ScreenCast.Start response signal may be
0213         included.
0214     -->
0215     <method name="Start">
0216       <arg type="o" name="session_handle" direction="in"/>
0217       <arg type="s" name="parent_window" direction="in"/>
0218       <arg type="a{sv}" name="options" direction="in"/>
0219       <annotation name="org.qtproject.QtDBus.QtTypeName.In2" value="QVariantMap"/>
0220       <arg type="o" name="handle" direction="out"/>
0221     </method>
0222     <!--
0223         NotifyPointerMotion:
0224         @session_handle: Object path for the #org.freedesktop.portal.Session object
0225         @options: Vardict with optional further information
0226         @dx: Relative movement on the x axis
0227         @dy: Relative movement on the y axis
0228 
0229         Notify about a new relative pointer motion event. The (dx, dy) vector
0230         represents the new pointer position in the streams logical coordinate
0231         space.
0232     -->
0233     <method name="NotifyPointerMotion">
0234       <arg type="o" name="session_handle" direction="in"/>
0235       <arg type="a{sv}" name="options" direction="in"/>
0236       <annotation name="org.qtproject.QtDBus.QtTypeName.In1" value="QVariantMap"/>
0237       <arg type="d" name="dx" direction="in"/>
0238       <arg type="d" name="dy" direction="in"/>
0239     </method>
0240     <!--
0241         NotifyPointerMotionAbsolute:
0242         @session_handle: Object path for the #org.freedesktop.portal.Session object
0243         @options: Vardict with optional further information
0244         @stream: The PipeWire stream node the coordinate is relative to
0245         @x: Pointer motion x coordinate
0246         @y: Pointer motion y coordinate
0247 
0248         Notify about a new absolute pointer motion event. The (x, y) position
0249         represents the new pointer position in the streams logical coordinate
0250         space (see the logical_size stream property in
0251         #org.freedesktop.portal.ScreenCast).
0252     -->
0253     <method name="NotifyPointerMotionAbsolute">
0254       <arg type="o" name="session_handle" direction="in"/>
0255       <arg type="a{sv}" name="options" direction="in"/>
0256       <annotation name="org.qtproject.QtDBus.QtTypeName.In1" value="QVariantMap"/>
0257       <arg type="u" name="stream" direction="in"/>
0258       <arg type="d" name="x" direction="in"/>
0259       <arg type="d" name="y" direction="in"/>
0260     </method>
0261     <!--
0262         NotifyPointerButton:
0263         @session_handle: Object path for the #org.freedesktop.portal.Session object
0264         @options: Vardict with optional further information
0265         @button: The pointer button was pressed or released
0266         @state: The new state of the button
0267 
0268         The pointer button is encoded according to Linux Evdev button codes.
0269 
0270         May only be called if POINTER access was provided after starting the
0271         session.
0272 
0273         Available button states:
0274         <simplelist>
0275           <member>0: Released</member>
0276           <member>1: Pressed</member>
0277         </simplelist>
0278     -->
0279     <method name="NotifyPointerButton">
0280       <arg type="o" name="session_handle" direction="in"/>
0281       <arg type="a{sv}" name="options" direction="in"/>
0282       <annotation name="org.qtproject.QtDBus.QtTypeName.In1" value="QVariantMap"/>
0283       <arg type="i" name="button" direction="in"/>
0284       <arg type="u" name="state" direction="in"/>
0285     </method>
0286     <!--
0287         NotifyPointerAxis:
0288         @session_handle: Object path for the #org.freedesktop.portal.Session object
0289         @options: Vardict with optional further information
0290         @dx: Relative axis movement on the x axis
0291         @dy: Relative axis movement on the y axis
0292 
0293         The axis movement from a 'smooth scroll' device, such as a touchpad.
0294         When applicable, the size of the motion delta should be equivalent to
0295         the motion vector of a pointer motion done using the same advice.
0296 
0297         May only be called if POINTER access was provided after starting the
0298         session.
0299 
0300         Supported keys in the @options vardict include:
0301         <variablelist>
0302           <varlistentry>
0303             <term>finish b</term>
0304             <listitem><para>
0305               If set to true, this is the last axis event in a series, for
0306               example as a result of the fingers being lifted from a touchpad
0307               after a two-finger scroll.  Default is false.
0308             </para></listitem>
0309           </varlistentry>
0310         </variablelist>
0311     -->
0312     <method name="NotifyPointerAxis">
0313       <arg type="o" name="session_handle" direction="in"/>
0314       <arg type="a{sv}" name="options" direction="in"/>
0315       <annotation name="org.qtproject.QtDBus.QtTypeName.In1" value="QVariantMap"/>
0316       <arg type="d" name="dx" direction="in"/>
0317       <arg type="d" name="dy" direction="in"/>
0318     </method>
0319     <!--
0320         NotifyPointerAxisDiscrete:
0321         @session_handle: Object path for the #org.freedesktop.portal.Session object
0322         @options: Vardict with optional further information
0323         @axis: The axis that was scrolled
0324         @steps: The number of steps scrolled
0325 
0326         May only be called if POINTER access was provided after starting the
0327         session.
0328 
0329         Available axes:
0330         <simplelist>
0331           <member>0: Vertical scroll</member>
0332           <member>1: Horizontal scroll</member>
0333         </simplelist>
0334     -->
0335     <method name="NotifyPointerAxisDiscrete">
0336       <arg type="o" name="session_handle" direction="in"/>
0337       <arg type="a{sv}" name="options" direction="in"/>
0338       <annotation name="org.qtproject.QtDBus.QtTypeName.In1" value="QVariantMap"/>
0339       <arg type="u" name="axis" direction="in"/>
0340       <arg type="i" name="steps" direction="in"/>
0341     </method>
0342     <!--
0343         NotifyKeyboardKeycode:
0344         @session_handle: Object path for the #org.freedesktop.portal.Session object
0345         @options: Vardict with optional further information
0346         @keycode: Keyboard code that was pressed or released
0347         @state: New state of keyboard keycode
0348 
0349         May only be called if KEYBOARD access was provided after starting the
0350         session.
0351 
0352         Available keyboard keycode states:
0353         <simplelist>
0354           <member>0: Released</member>
0355           <member>1: Pressed</member>
0356         </simplelist>
0357     -->
0358     <method name="NotifyKeyboardKeycode">
0359       <arg type="o" name="session_handle" direction="in"/>
0360       <arg type="a{sv}" name="options" direction="in"/>
0361       <annotation name="org.qtproject.QtDBus.QtTypeName.In1" value="QVariantMap"/>
0362       <arg type="i" name="keycode" direction="in"/>
0363       <arg type="u" name="state" direction="in"/>
0364     </method>
0365     <!--
0366         NotifyKeyboardKeysym:
0367         @session_handle: Object path for the #org.freedesktop.portal.Session object
0368         @options: Vardict with optional further information
0369         @keysym: Keyboard symbol that was pressed or released
0370         @state: New state of keyboard keysym
0371 
0372         May only be called if KEYBOARD access was provided after starting the
0373         session.
0374 
0375         Available keyboard keysym states:
0376         <simplelist>
0377           <member>0: Released</member>
0378           <member>1: Pressed</member>
0379         </simplelist>
0380     -->
0381     <method name="NotifyKeyboardKeysym">
0382       <arg type="o" name="session_handle" direction="in"/>
0383       <arg type="a{sv}" name="options" direction="in"/>
0384       <annotation name="org.qtproject.QtDBus.QtTypeName.In1" value="QVariantMap"/>
0385       <arg type="i" name="keysym" direction="in"/>
0386       <arg type="u" name="state" direction="in"/>
0387     </method>
0388     <!--
0389         NotifyTouchDown:
0390         @session_handle: Object path for the #org.freedesktop.portal.Session object
0391         @options: Vardict with optional further information
0392         @stream: The PipeWire stream node the coordinate is relative to
0393         @slot: Touch slot where touch point appeared
0394         @x: Touch down x coordinate
0395         @y: Touch down y coordinate
0396 
0397         May only be called if TOUCHSCREEN access was provided after starting the
0398         session.
0399 
0400         Notify about a new touch down event. The (x, y) position
0401         represents the new touch point position in the streams logical
0402         coordinate space (see the logical_size stream property in
0403         #org.freedesktop.portal.ScreenCast).
0404     -->
0405     <method name="NotifyTouchDown">
0406       <arg type="o" name="session_handle" direction="in"/>
0407       <arg type="a{sv}" name="options" direction="in"/>
0408       <annotation name="org.qtproject.QtDBus.QtTypeName.In1" value="QVariantMap"/>
0409       <arg type="u" name="stream" direction="in"/>
0410       <arg type="u" name="slot" direction="in"/>
0411       <arg type="d" name="x" direction="in"/>
0412       <arg type="d" name="y" direction="in"/>
0413     </method>
0414     <!--
0415         NotifyTouchMotion:
0416         @session_handle: Object path for the #org.freedesktop.portal.Session object
0417         @options: Vardict with optional further information
0418         @stream: The PipeWire stream node the coordinate is relative to
0419         @slot: Touch slot where touch point appeared
0420         @x: Touch motion x coordinate
0421         @y: Touch motion y coordinate
0422 
0423         May only be called if TOUCHSCREEN access was provided after starting the
0424         session.
0425 
0426         Notify about a new touch motion event. The (x, y) position
0427         represents where the touch point position in the streams logical
0428         coordinate space moved (see the logical_size stream property in
0429         #org.freedesktop.portal.ScreenCast).
0430     -->
0431     <method name="NotifyTouchMotion">
0432       <arg type="o" name="session_handle" direction="in"/>
0433       <arg type="a{sv}" name="options" direction="in"/>
0434       <annotation name="org.qtproject.QtDBus.QtTypeName.In1" value="QVariantMap"/>
0435       <arg type="u" name="stream" direction="in"/>
0436       <arg type="u" name="slot" direction="in"/>
0437       <arg type="d" name="x" direction="in"/>
0438       <arg type="d" name="y" direction="in"/>
0439     </method>
0440     <!--
0441         NotifyTouchUp:
0442         @session_handle: Object path for the #org.freedesktop.portal.Session object
0443         @options: Vardict with optional further information
0444         @slot: Touch slot where touch point appeared
0445 
0446         May only be called if TOUCHSCREEN access was provided after starting the
0447         session.
0448 
0449         Notify about a new touch up event.
0450     -->
0451     <method name="NotifyTouchUp">
0452       <arg type="o" name="session_handle" direction="in"/>
0453       <arg type="a{sv}" name="options" direction="in"/>
0454       <annotation name="org.qtproject.QtDBus.QtTypeName.In1" value="QVariantMap"/>
0455       <arg type="u" name="slot" direction="in"/>
0456     </method>
0457 
0458     <!--
0459         ConnectToEIS:
0460         @session_handle: Object path for the #org.freedesktop.portal.Session object
0461         @options: Vardict with optional further information
0462         @fd: A file descriptor to an EIS implementation that can be passed to a libei sender context
0463 
0464         Request a connection to an EIS implementation. The returned handle can
0465         be passed to ei_setup_backend_fd() for a libei sender context to
0466         complete the connection. All information about available devices and the
0467         event flow is subject to libei. Please see the libei documentation for details.
0468 
0469         This method may only be called once per session, where the EIS
0470         implementation disconnects the session should be closed.
0471 
0472         This method must be called after #org.freedesktop.portal.RemoteDesktop.Start()
0473 
0474         Once an EIS connection is established, input events must be sent exclusively via
0475         the EIS connection. Any events submitted via NotifyPointerMotion,
0476         NotifyKeyboardKeycode and other Notify* methods will return an error.
0477 
0478         To see how to pair a PipeWire stream with a libei device region, see the
0479         documentation for the mapping_id stream property in
0480         #org.freedesktop.portal.RemoteDesktop.Start().
0481 
0482         This method was added in version 2 of this interface.
0483     -->
0484     <method name="ConnectToEIS">
0485       <annotation name="org.gtk.GDBus.C.Name" value="connect_to_eis"/>
0486       <annotation name="org.gtk.GDBus.C.UnixFD" value="true"/>
0487       <arg type="o" name="session_handle" direction="in"/>
0488       <arg type="a{sv}" name="options" direction="in"/>
0489       <annotation name="org.qtproject.QtDBus.QtTypeName.In1" value="QVariantMap"/>
0490       <arg type="h" name="fd" direction="out"/>
0491     </method>
0492 
0493     <!--
0494         AvailableDeviceTypes:
0495 
0496         A bitmask of available source types. Currently defined types are:
0497 
0498         <simplelist>
0499           <member>1: KEYBOARD</member>
0500           <member>2: POINTER</member>
0501           <member>4: TOUCHSCREEN</member>
0502         </simplelist>
0503     -->
0504     <property name="AvailableDeviceTypes" type="u" access="read"/>
0505     <property name="version" type="u" access="read"/>
0506   </interface>
0507 </node>