mirror of
https://github.com/brl/mutter.git
synced 2024-12-23 19:42:05 +00:00
97f2c7c161
This commit adds basic screen casting and remote desktoping functionalty. This works by exposing two D-Bus API services: org.gnome.Mutter.ScreenCast and org.gnome.Mutter.RemoteDesktop. The remote desktop API is used to create remote desktop sessions. For each session, a D-Bus object is created, and an application can manage the session by sending messages to the session object. A remote desktop session the user to emit input events using the D-Bus methods on the session object. To get framebuffer content, the application should create an associated screen cast session. The screen cast API is used to create screen cast sessions. One can so far either create stand-alone screen cast sessions, or a screen cast session associated with a remote desktop session. A remote desktop associated screen cast session is managed by the remote desktop session. So far only remote desktop managed screen cast sessions are implemented. Each screen cast session may have one or more streams. A screen cast stream is a stream of buffers of some part of the compositor content. So far API exists for creating streams of monitors and windows, but only monitor streams are implemented. When a screen cast session is started, the one PipeWire stream is created for each screen cast stream created for the session. When this has happened, a PipeWireStreamAdded signal is emitted on the stream object, passing a unique identifier. The application may use this identifier to find the associated stream being advertised by the PipeWire daemon. The remote desktop and screen cast functionality must be explicitly be enabled at ./configure time by passing --enable-remote-desktop to ./configure. Doing this will build both screen cast and remote desktop support. To actually enable the screen casting and remote desktop, the user must enable the experimental feature. See org.gnome.mutter.experimental-features. https://bugzilla.gnome.org/show_bug.cgi?id=784199
104 lines
2.3 KiB
XML
104 lines
2.3 KiB
XML
<!DOCTYPE node PUBLIC
|
|
'-//freedesktop//DTD D-BUS Object Introspection 1.0//EN'
|
|
'http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd'>
|
|
<node>
|
|
|
|
<!--
|
|
org.gnome.Mutter.RemoteDesktop:
|
|
@short_description: Remote desktop interface
|
|
-->
|
|
<interface name="org.gnome.Mutter.RemoteDesktop">
|
|
|
|
<!--
|
|
CreateSession:
|
|
@session_path: Path to the new session object
|
|
-->
|
|
<method name="CreateSession">
|
|
<arg name="session_path" type="o" direction="out" />
|
|
</method>
|
|
|
|
</interface>
|
|
|
|
<!--
|
|
org.gnome.Mutter.RemoteDesktop.Session:
|
|
@short_description: Remote desktop session
|
|
-->
|
|
<interface name="org.gnome.Mutter.RemoteDesktop.Session">
|
|
|
|
<!--
|
|
SessionId:
|
|
|
|
An identification string used for identifying a remote desktop session.
|
|
It can be used to associate screen cast sessions with a remote desktop session.
|
|
-->
|
|
<property name="SessionId" type="s" access="read" />
|
|
|
|
<!--
|
|
Start:
|
|
|
|
Start the remote desktop session
|
|
-->
|
|
<method name="Start" />
|
|
|
|
<!--
|
|
Stop:
|
|
|
|
Stop the remote desktop session
|
|
-->
|
|
<method name="Stop" />
|
|
|
|
<!--
|
|
Closed:
|
|
|
|
The session has closed.
|
|
|
|
A session doesn't have to have been started before it may be closed.
|
|
After it being closed, it can no longer be used.
|
|
-->
|
|
<signal name="Closed" />
|
|
|
|
<!--
|
|
NotifyKeyboardKeysym:
|
|
|
|
A key identified by a keysym was pressed or released
|
|
-->
|
|
<method name="NotifyKeyboardKeysym">
|
|
<arg name="keysym" type="u" direction="in" />
|
|
<arg name="state" type="b" direction="in" />
|
|
</method>
|
|
|
|
<!--
|
|
NotifyPointerButton:
|
|
|
|
A pointer button was pressed or released
|
|
-->
|
|
<method name="NotifyPointerButton">
|
|
<arg name="button" type="i" direction="in" />
|
|
<arg name="state" type="b" direction="in" />
|
|
</method>
|
|
|
|
<!--
|
|
NotifyPointerAxisDiscrete:
|
|
|
|
A discrete pointer axis event notification
|
|
-->
|
|
<method name="NotifyPointerAxisDiscrete">
|
|
<arg name="axis" type="u" direction="in" />
|
|
<arg name="steps" type="i" direction="in" />
|
|
</method>
|
|
|
|
<!--
|
|
NotifyPointerMotionAbsolute:
|
|
|
|
A absolute pointer motion event notification
|
|
-->
|
|
<method name="NotifyPointerMotionAbsolute">
|
|
<arg name="stream" type="s" direction="in" />
|
|
<arg name="x" type="d" direction="in" />
|
|
<arg name="y" type="d" direction="in" />
|
|
</method>
|
|
|
|
</interface>
|
|
|
|
</node>
|