]> git.proxmox.com Git - mirror_qemu.git/blob - ui/dbus-display1.xml
ui: add a D-Bus display backend
[mirror_qemu.git] / ui / dbus-display1.xml
1 <?xml version="1.0" encoding="utf-8"?>
2 <node>
3 <!--
4 org.qemu.Display1.VM:
5
6 This interface is implemented on ``/org/qemu/Display1/VM``.
7 -->
8 <interface name="org.qemu.Display1.VM">
9 <!--
10 Name:
11
12 The name of the VM.
13 -->
14 <property name="Name" type="s" access="read"/>
15
16 <!--
17 UUID:
18
19 The UUID of the VM.
20 -->
21 <property name="UUID" type="s" access="read"/>
22
23 <!--
24 ConsoleIDs:
25
26 The list of consoles available on ``/org/qemu/Display1/Console_$id``.
27 -->
28 <property name="ConsoleIDs" type="au" access="read"/>
29 </interface>
30
31 <!--
32 org.qemu.Display1.Console:
33
34 This interface is implemented on ``/org/qemu/Display1/Console_$id``. You
35 may discover available consoles through introspection or with the
36 :dbus:prop:`org.qemu.Display1.VM.ConsoleIDs` property.
37
38 A console is attached to a video device head. It may be "Graphic" or
39 "Text" (see :dbus:prop:`Type` and other properties).
40
41 Interactions with a console may be done with
42 :dbus:iface:`org.qemu.Display1.Keyboard` and
43 :dbus:iface:`org.qemu.Display1.Mouse` interfaces when available.
44 -->
45 <interface name="org.qemu.Display1.Console">
46 <!--
47 RegisterListener:
48 @listener: a Unix socket FD, for peer-to-peer D-Bus communication.
49
50 Register a console listener, which will receive display updates, until
51 it is disconnected.
52
53 Multiple listeners may be registered simultaneously.
54
55 The listener is expected to implement the
56 :dbus:iface:`org.qemu.Display1.Listener` interface.
57 -->
58 <method name="RegisterListener">
59 <arg type="h" name="listener" direction="in"/>
60 </method>
61
62 <!--
63 SetUIInfo:
64 @width_mm: the physical display width in millimeters.
65 @height_mm: the physical display height in millimeters.
66 @xoff: horizontal offset, in pixels.
67 @yoff: vertical offset, in pixels.
68 @width: console width, in pixels.
69 @height: console height, in pixels.
70
71 Modify the dimensions and display settings.
72 -->
73 <method name="SetUIInfo">
74 <arg name="width_mm" type="q" direction="in"/>
75 <arg name="height_mm" type="q" direction="in"/>
76 <arg name="xoff" type="i" direction="in"/>
77 <arg name="yoff" type="i" direction="in"/>
78 <arg name="width" type="u" direction="in"/>
79 <arg name="height" type="u" direction="in"/>
80 </method>
81
82 <!--
83 Label:
84
85 A user-friendly name for the console (for ex: "VGA").
86 -->
87 <property name="Label" type="s" access="read"/>
88
89 <!--
90 Head:
91
92 Graphical device head number.
93 -->
94 <property name="Head" type="u" access="read"/>
95
96 <!--
97 Type:
98
99 Console type ("Graphic" or "Text").
100 -->
101 <property name="Type" type="s" access="read"/>
102
103 <!--
104 Width:
105
106 Console width, in pixels.
107 -->
108 <property name="Width" type="u" access="read"/>
109
110 <!--
111 Height:
112
113 Console height, in pixels.
114 -->
115 <property name="Height" type="u" access="read"/>
116
117 <!--
118 DeviceAddress:
119
120 The device address (ex: "pci/0000/02.0").
121 -->
122 <property name="DeviceAddress" type="s" access="read"/>
123 </interface>
124
125 <!--
126 org.qemu.Display1.Keyboard:
127
128 This interface in implemented on ``/org/qemu/Display1/Console_$id`` (see
129 :dbus:iface:`~org.qemu.Display1.Console`).
130 -->
131 <interface name="org.qemu.Display1.Keyboard">
132 <!--
133 Press:
134 @keycode: QEMU key number (xtkbd + special re-encoding of high bit)
135
136 Send a key press event.
137 -->
138 <method name="Press">
139 <arg type="u" name="keycode" direction="in"/>
140 </method>
141
142 <!--
143 Release:
144 @keycode: QEMU key number (xtkbd + special re-encoding of high bit)
145
146 Send a key release event.
147 -->
148 <method name="Release">
149 <arg type="u" name="keycode" direction="in"/>
150 </method>
151
152 <!--
153 Modifiers:
154
155 The active keyboard modifiers::
156
157 Scroll = 1 << 0
158 Num = 1 << 1
159 Caps = 1 << 2
160 -->
161 <property name="Modifiers" type="u" access="read"/>
162 </interface>
163
164 <!--
165 org.qemu.Display1.Mouse:
166
167 This interface in implemented on ``/org/qemu/Display1/Console_$id`` (see
168 :dbus:iface:`~org.qemu.Display1.Console` documentation).
169
170 .. _dbus-button-values:
171
172 **Button values**::
173
174 Left = 0
175 Middle = 1
176 Right = 2
177 Wheel-up = 3
178 Wheel-down = 4
179 Side = 5
180 Extra = 6
181 -->
182 <interface name="org.qemu.Display1.Mouse">
183 <!--
184 Press:
185 @button: :ref:`button value<dbus-button-values>`.
186
187 Send a mouse button press event.
188 -->
189 <method name="Press">
190 <arg type="u" name="button" direction="in"/>
191 </method>
192
193 <!--
194 Release:
195 @button: :ref:`button value<dbus-button-values>`.
196
197 Send a mouse button release event.
198 -->
199 <method name="Release">
200 <arg type="u" name="button" direction="in"/>
201 </method>
202
203 <!--
204 SetAbsPosition:
205 @x: X position, in pixels.
206 @y: Y position, in pixels.
207
208 Set the mouse pointer position.
209
210 Returns an error if not :dbus:prop:`IsAbsolute`.
211 -->
212 <method name="SetAbsPosition">
213 <arg type="u" name="x" direction="in"/>
214 <arg type="u" name="y" direction="in"/>
215 </method>
216
217 <!--
218 RelMotion:
219 @dx: X-delta, in pixels.
220 @dy: Y-delta, in pixels.
221
222 Move the mouse pointer position, relative to the current position.
223
224 Returns an error if :dbus:prop:`IsAbsolute`.
225 -->
226 <method name="RelMotion">
227 <arg type="i" name="dx" direction="in"/>
228 <arg type="i" name="dy" direction="in"/>
229 </method>
230
231 <!--
232 IsAbsolute:
233
234 Whether the mouse is using absolute movements.
235 -->
236 <property name="IsAbsolute" type="b" access="read"/>
237 </interface>
238
239 <!--
240 org.qemu.Display1.Listener:
241
242 This client-side interface must be available on
243 ``/org/qemu/Display1/Listener`` when registering the peer-to-peer
244 connection with :dbus:meth:`~org.qemu.Display1.Console.Register`.
245 -->
246 <interface name="org.qemu.Display1.Listener">
247 <!--
248 Scanout:
249 @width: display width, in pixels.
250 @height: display height, in pixels.
251 @stride: data stride, in bytes.
252 @pixman_format: image format (ex: ``PIXMAN_X8R8G8B8``).
253 @data: image data.
254
255 Resize and update the display content.
256
257 The data to transfer for the display update may be large. The preferred
258 scanout method is :dbus:meth:`ScanoutDMABUF`, used whenever possible.
259 -->
260 <method name="Scanout">
261 <arg type="u" name="width" direction="in"/>
262 <arg type="u" name="height" direction="in"/>
263 <arg type="u" name="stride" direction="in"/>
264 <arg type="u" name="pixman_format" direction="in"/>
265 <arg type="ay" name="data" direction="in">
266 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
267 </arg>
268 </method>
269
270 <!--
271 Update:
272 @x: X update position, in pixels.
273 @y: Y update position, in pixels.
274 @width: update width, in pixels.
275 @height: update height, in pixels.
276 @stride: data stride, in bytes.
277 @pixman_format: image format (ex: ``PIXMAN_X8R8G8B8``).
278 @data: display image data.
279
280 Update the display content.
281
282 This method is only called after a :dbus:meth:`Scanout` call.
283 -->
284 <method name="Update">
285 <arg type="i" name="x" direction="in"/>
286 <arg type="i" name="y" direction="in"/>
287 <arg type="i" name="width" direction="in"/>
288 <arg type="i" name="height" direction="in"/>
289 <arg type="u" name="stride" direction="in"/>
290 <arg type="u" name="pixman_format" direction="in"/>
291 <arg type="ay" name="data" direction="in">
292 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
293 </arg>
294 </method>
295
296 <!--
297 ScanoutDMABUF:
298 @dmabuf: the DMABUF file descriptor.
299 @width: display width, in pixels.
300 @height: display height, in pixels.
301 @stride: stride, in bytes.
302 @fourcc: DMABUF fourcc.
303 @modifier: DMABUF modifier.
304 @y0_top: whether Y position 0 is the top or not.
305
306 Resize and update the display content with a DMABUF.
307 -->
308 <method name="ScanoutDMABUF">
309 <arg type="h" name="dmabuf" direction="in"/>
310 <arg type="u" name="width" direction="in"/>
311 <arg type="u" name="height" direction="in"/>
312 <arg type="u" name="stride" direction="in"/>
313 <arg type="u" name="fourcc" direction="in"/>
314 <!-- xywh? -->
315 <arg type="t" name="modifier" direction="in"/>
316 <arg type="b" name="y0_top" direction="in"/>
317 </method>
318
319 <!--
320 UpdateDMABUF:
321 @x: the X update position, in pixels.
322 @y: the Y update position, in pixels.
323 @width: the update width, in pixels.
324 @height: the update height, in pixels.
325
326 Update the display content with the current DMABUF and the given region.
327 -->
328 <method name="UpdateDMABUF">
329 <arg type="i" name="x" direction="in"/>
330 <arg type="i" name="y" direction="in"/>
331 <arg type="i" name="width" direction="in"/>
332 <arg type="i" name="height" direction="in"/>
333 </method>
334
335 <!--
336 Disable:
337
338 Disable the display (turn it off).
339 -->
340 <method name="Disable">
341 </method>
342
343 <!--
344 MouseSet:
345 @x: X mouse position, in pixels.
346 @y: Y mouse position, in pixels.
347 @on: whether the mouse is visible or not.
348
349 Set the mouse position and visibility.
350 -->
351 <method name="MouseSet">
352 <arg type="i" name="x" direction="in"/>
353 <arg type="i" name="y" direction="in"/>
354 <arg type="i" name="on" direction="in"/>
355 </method>
356
357 <!--
358 CursorDefine:
359 @width: cursor width, in pixels.
360 @height: cursor height, in pixels.
361 @hot_x: hot-spot X position, in pixels.
362 @hot_y: hot-spot Y position, in pixels.
363 @data: the cursor data.
364
365 Set the mouse cursor shape and hot-spot. The "data" must be ARGB, 32-bit
366 per pixel.
367 -->
368 <method name="CursorDefine">
369 <arg type="i" name="width" direction="in"/>
370 <arg type="i" name="height" direction="in"/>
371 <arg type="i" name="hot_x" direction="in"/>
372 <arg type="i" name="hot_y" direction="in"/>
373 <arg type="ay" name="data" direction="in">
374 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
375 </arg>
376 </method>
377 </interface>
378 </node>