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>