1<!DOCTYPE node PUBLIC
2'-//freedesktop//DTD D-BUS Object Introspection 1.0//EN'
3'http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd'>
4<node>
5
6  <!--
7      org.gnome.Mutter.ScreenCast:
8      @short_description: Screen cast interface
9
10      This API is private and not intended to be used outside of the integrated
11      system that uses libmutter. No compatibility between versions are
12      promised.
13  -->
14  <interface name="org.gnome.Mutter.ScreenCast">
15
16    <!--
17	CreateSession:
18	@properties: Properties
19	@session_path: Path to the new session object
20
21	* "remote-desktop-session-id" (s): The ID of a remote desktop session.
22					   Remote desktop driven screen casts
23					   are started and stopped by the remote
24					   desktop session.
25	* "disable-animations" (b): Set to "true" if the screen cast application
26				    would prefer animations to be globally
27				    disabled, while the session is running. Default
28				    is "false". Available since version 3.
29    -->
30    <method name="CreateSession">
31      <arg name="properties" type="a{sv}" direction="in" />
32      <arg name="session_path" type="o" direction="out" />
33    </method>
34
35    <!--
36        Version:
37        @short_description: API version
38    -->
39    <property name="Version" type="i" access="read" />
40
41  </interface>
42
43  <!--
44       org.gnome.Mutter.ScreenCast.Session:
45       @short_description: Screen cast session
46  -->
47  <interface name="org.gnome.Mutter.ScreenCast.Session">
48
49    <!--
50	Start:
51
52	Start the screen cast session
53    -->
54    <method name="Start" />
55
56    <!--
57	Stop:
58
59	Stop the screen cast session
60    -->
61    <method name="Stop" />
62
63    <!--
64	Closed:
65
66	The session has closed.
67    -->
68    <signal name="Closed" />
69
70    <!--
71	RecordMonitor:
72	@connector: Connector of the monitor to record
73	@properties: Properties
74	@stream_path: Path to the new stream object
75
76	Record a single monitor.
77
78	Available @properties include:
79
80	* "cursor-mode" (u): Cursor mode. Default: 'hidden' (see below)
81	                     Available since API version 2.
82	* "is-recording" (b): Whether this is a screen recording. May be
83			      be used for choosing panel icon.
84			      Default: false. Available since API version 4.
85
86	Available cursor mode values:
87
88	0: hidden - cursor is not included in the stream
89	1: embedded - cursor is included in the framebuffer
90	2: metadata - cursor is included as metadata in the PipeWire stream
91    -->
92    <method name="RecordMonitor">
93      <arg name="connector" type="s" direction="in" />
94      <arg name="properties" type="a{sv}" direction="in" />
95      <arg name="stream_path" type="o" direction="out" />
96    </method>
97
98    <!--
99	RecordWindow:
100	@properties: Properties used determining what window to select
101	@stream_path: Path to the new stream object
102
103	Supported since API version 2.
104
105	Record a single window. The cursor will not be included.
106
107	Available @properties include:
108
109	* "window-id" (t): Id of the window to record.
110	* "cursor-mode" (u): Cursor mode. Default: 'hidden' (see RecordMonitor).
111	* "is-recording" (b): Whether this is a screen recording. May be
112			      be used for choosing panel icon.
113			      Default: false. Available since API version 4.
114
115    -->
116    <method name="RecordWindow">
117      <arg name="properties" type="a{sv}" direction="in" />
118      <arg name="stream_path" type="o" direction="out" />
119    </method>
120
121    <!--
122	RecordArea:
123	@x: X position of the recorded area
124	@y: Y position of the recorded area
125	@width: width of the recorded area
126	@height: height of the recorded area
127	@properties: Properties
128	@stream_path: Path to the new stream object
129
130	Record an area of the stage. The coordinates are in stage coordinates.
131	The size of the stream does not necessarily match the size of the
132	recorded area, and will depend on DPI scale of the affected monitors.
133
134	Available @properties include:
135
136	* "cursor-mode" (u): Cursor mode. Default: 'hidden' (see below)
137	                     Available since API version 2.
138	* "is-recording" (b): Whether this is a screen recording. May be
139			      be used for choosing panel icon.
140			      Default: false. Available since API version 4.
141
142	Available cursor mode values:
143
144	0: hidden - cursor is not included in the stream
145	1: embedded - cursor is included in the framebuffer
146	2: metadata - cursor is included as metadata in the PipeWire stream
147    -->
148    <method name="RecordArea">
149      <arg name="x" type="i" direction="in" />
150      <arg name="y" type="i" direction="in" />
151      <arg name="width" type="i" direction="in" />
152      <arg name="height" type="i" direction="in" />
153      <arg name="properties" type="a{sv}" direction="in" />
154      <arg name="stream_path" type="o" direction="out" />
155    </method>
156  </interface>
157
158  <!--
159       org.gnome.Mutter.ScreenCast.Stream:
160       @short_description: Screen cast stream
161  -->
162  <interface name="org.gnome.Mutter.ScreenCast.Stream">
163
164    <!--
165	PipeWireStreamAdded:
166	@short_description: Pipewire stream added
167
168	A signal emitted when PipeWire stream for the screen cast stream has
169	been created. The @node_id corresponds to the PipeWire stream node.
170    -->
171    <signal name="PipeWireStreamAdded">
172      <annotation name="org.gtk.GDBus.C.Name" value="pipewire-stream-added"/>
173      <arg name="node_id" type="u" direction="out" />
174    </signal>
175
176    <!--
177	Parameters:
178	@short_description: Optional stream parameters
179
180	Available parameters include:
181
182	* "position" (ii): Position of the source of the stream in the
183	                   compositor coordinate space.
184	* "size" (ii): Size of the source of the stream in the compositor
185		       coordinate space.
186    -->
187    <property name="Parameters" type="a{sv}" access="read" />
188
189  </interface>
190
191</node>
192