]> git.proxmox.com Git - mirror_qemu.git/blob - ui/dbus-display1.xml
aff645220c88a309535d319c82e03a5333371eb7
[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
379 <!--
380 org.qemu.Display1.Audio:
381
382 Audio backend may be available on ``/org/qemu/Display1/Audio``.
383 -->
384 <interface name="org.qemu.Display1.Audio">
385 <!--
386 RegisterOutListener:
387 @listener: a Unix socket FD, for peer-to-peer D-Bus communication.
388
389 Register an audio backend playback handler.
390
391 Multiple listeners may be registered simultaneously.
392
393 The listener is expected to implement the
394 :dbus:iface:`org.qemu.Display1.AudioOutListener` interface.
395 -->
396 <method name="RegisterOutListener">
397 <arg type="h" name="listener" direction="in"/>
398 </method>
399
400 <!--
401 RegisterInListener:
402 @listener: a Unix socket FD, for peer-to-peer D-Bus communication.
403
404 Register an audio backend record handler.
405
406 Multiple listeners may be registered simultaneously.
407
408 The listener is expected to implement the
409 :dbus:iface:`org.qemu.Display1.AudioInListener` interface.
410 -->
411 <method name="RegisterInListener">
412 <arg type="h" name="listener" direction="in"/>
413 </method>
414 </interface>
415
416 <!--
417 org.qemu.Display1.AudioOutListener:
418
419 This client-side interface must be available on
420 ``/org/qemu/Display1/AudioOutListener`` when registering the peer-to-peer
421 connection with :dbus:meth:`~org.qemu.Display1.Audio.RegisterOutListener`.
422 -->
423 <interface name="org.qemu.Display1.AudioOutListener">
424 <!--
425 Init:
426 @id: the stream ID.
427 @bits: PCM bits per sample.
428 @is_signed: whether the PCM data is signed.
429 @is_float: PCM floating point format.
430 @freq: the PCM frequency in Hz.
431 @nchannels: the number of channels.
432 @bytes_per_frame: the bytes per frame.
433 @bytes_per_second: the bytes per second.
434 @be: whether using big-endian format.
435
436 Initializes a PCM playback stream.
437 -->
438 <method name="Init">
439 <arg name="id" type="t" direction="in"/>
440 <arg name="bits" type="y" direction="in"/>
441 <arg name="is_signed" type="b" direction="in"/>
442 <arg name="is_float" type="b" direction="in"/>
443 <arg name="freq" type="u" direction="in"/>
444 <arg name="nchannels" type="y" direction="in"/>
445 <arg name="bytes_per_frame" type="u" direction="in"/>
446 <arg name="bytes_per_second" type="u" direction="in"/>
447 <arg name="be" type="b" direction="in"/>
448 </method>
449
450 <!--
451 Fini:
452 @id: the stream ID.
453
454 Finish & close a playback stream.
455 -->
456 <method name="Fini">
457 <arg name="id" type="t" direction="in"/>
458 </method>
459
460 <!--
461 SetEnabled:
462 @id: the stream ID.
463
464 Resume or suspend the playback stream.
465 -->
466 <method name="SetEnabled">
467 <arg name="id" type="t" direction="in"/>
468 <arg name="enabled" type="b" direction="in"/>
469 </method>
470
471 <!--
472 SetVolume:
473 @id: the stream ID.
474 @mute: whether the stream is muted.
475 @volume: the volume per-channel.
476
477 Set the stream volume and mute state (volume without unit, 0-255).
478 -->
479 <method name="SetVolume">
480 <arg name="id" type="t" direction="in"/>
481 <arg name="mute" type="b" direction="in"/>
482 <arg name="volume" type="ay" direction="in">
483 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
484 </arg>
485 </method>
486
487 <!--
488 Write:
489 @id: the stream ID.
490 @data: the PCM data.
491
492 PCM stream to play.
493 -->
494 <method name="Write">
495 <arg name="id" type="t" direction="in"/>
496 <arg type="ay" name="data" direction="in">
497 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
498 </arg>
499 </method>
500 </interface>
501
502 <!--
503 org.qemu.Display1.AudioInListener:
504
505 This client-side interface must be available on
506 ``/org/qemu/Display1/AudioInListener`` when registering the peer-to-peer
507 connection with :dbus:meth:`~org.qemu.Display1.Audio.RegisterInListener`.
508 -->
509 <interface name="org.qemu.Display1.AudioInListener">
510 <!--
511 Init:
512 @id: the stream ID.
513 @bits: PCM bits per sample.
514 @is_signed: whether the PCM data is signed.
515 @is_float: PCM floating point format.
516 @freq: the PCM frequency in Hz.
517 @nchannels: the number of channels.
518 @bytes_per_frame: the bytes per frame.
519 @bytes_per_second: the bytes per second.
520 @be: whether using big-endian format.
521
522 Initializes a PCM record stream.
523 -->
524 <method name="Init">
525 <arg name="id" type="t" direction="in"/>
526 <arg name="bits" type="y" direction="in"/>
527 <arg name="is_signed" type="b" direction="in"/>
528 <arg name="is_float" type="b" direction="in"/>
529 <arg name="freq" type="u" direction="in"/>
530 <arg name="nchannels" type="y" direction="in"/>
531 <arg name="bytes_per_frame" type="u" direction="in"/>
532 <arg name="bytes_per_second" type="u" direction="in"/>
533 <arg name="be" type="b" direction="in"/>
534 </method>
535
536 <!--
537 Fini:
538 @id: the stream ID.
539
540 Finish & close a record stream.
541 -->
542 <method name="Fini">
543 <arg name="id" type="t" direction="in"/>
544 </method>
545
546 <!--
547 SetEnabled:
548 @id: the stream ID.
549
550 Resume or suspend the record stream.
551 -->
552 <method name="SetEnabled">
553 <arg name="id" type="t" direction="in"/>
554 <arg name="enabled" type="b" direction="in"/>
555 </method>
556
557 <!--
558 SetVolume:
559 @id: the stream ID.
560 @mute: whether the stream is muted.
561 @volume: the volume per-channel.
562
563 Set the stream volume and mute state (volume without unit, 0-255).
564 -->
565 <method name="SetVolume">
566 <arg name="id" type="t" direction="in"/>
567 <arg name="mute" type="b" direction="in"/>
568 <arg name="volume" type="ay" direction="in">
569 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
570 </arg>
571 </method>
572
573 <!--
574 Read:
575 @id: the stream ID.
576 @size: the amount to read, in bytes.
577 @data: the recorded data (which may be less than requested).
578
579 Read "size" bytes from the record stream.
580 -->
581 <method name="Read">
582 <arg name="id" type="t" direction="in"/>
583 <arg name="size" type="t" direction="in"/>
584 <arg type="ay" name="data" direction="out">
585 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
586 </arg>
587 </method>
588 </interface>
589 </node>