blob: e70f2848b77754b090ded078dd306c0a857cb1c3 [file] [log] [blame]
Marc-André Lureau142ca622021-07-15 11:53:53 +04001<?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"/>
Marc-André Lureau439e0162023-06-06 15:56:45 +040029
30 <!--
31 Interfaces:
32
33 This property lists extra interfaces provided by the
34 /org/qemu/Display1/VM object, and can be used to detect
35 the capabilities with which they are communicating.
36
37 Unlike the standard D-Bus Introspectable interface, querying this
38 property does not require parsing XML.
39
40 (earlier version of the display interface do not provide this property)
41 -->
42 <property name="Interfaces" type="as" access="read"/>
Marc-André Lureau142ca622021-07-15 11:53:53 +040043 </interface>
44
45 <!--
46 org.qemu.Display1.Console:
47
48 This interface is implemented on ``/org/qemu/Display1/Console_$id``. You
49 may discover available consoles through introspection or with the
50 :dbus:prop:`org.qemu.Display1.VM.ConsoleIDs` property.
51
52 A console is attached to a video device head. It may be "Graphic" or
53 "Text" (see :dbus:prop:`Type` and other properties).
54
55 Interactions with a console may be done with
Bilal Elmoussaouide9f8442023-06-19 11:53:37 +020056 :dbus:iface:`org.qemu.Display1.Keyboard`,
57 :dbus:iface:`org.qemu.Display1.Mouse` and
58 :dbus:iface:`org.qemu.Display1.MultiTouch` interfaces when available.
Marc-André Lureau142ca622021-07-15 11:53:53 +040059 -->
60 <interface name="org.qemu.Display1.Console">
61 <!--
62 RegisterListener:
63 @listener: a Unix socket FD, for peer-to-peer D-Bus communication.
64
65 Register a console listener, which will receive display updates, until
66 it is disconnected.
67
68 Multiple listeners may be registered simultaneously.
69
70 The listener is expected to implement the
71 :dbus:iface:`org.qemu.Display1.Listener` interface.
72 -->
73 <method name="RegisterListener">
Paolo Bonzinid0cda6f2023-11-03 09:17:48 +010074 <?if $(env.HOST_OS) == windows?>
Marc-André Lureau6cc5a612023-06-06 15:56:42 +040075 <arg type="ay" name="listener" direction="in">
76 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
77 </arg>
78 <?else?>
Marc-André Lureau142ca622021-07-15 11:53:53 +040079 <arg type="h" name="listener" direction="in"/>
Marc-André Lureau6cc5a612023-06-06 15:56:42 +040080 <?endif?>
Marc-André Lureau142ca622021-07-15 11:53:53 +040081 </method>
82
83 <!--
84 SetUIInfo:
85 @width_mm: the physical display width in millimeters.
86 @height_mm: the physical display height in millimeters.
87 @xoff: horizontal offset, in pixels.
88 @yoff: vertical offset, in pixels.
89 @width: console width, in pixels.
90 @height: console height, in pixels.
91
92 Modify the dimensions and display settings.
93 -->
94 <method name="SetUIInfo">
95 <arg name="width_mm" type="q" direction="in"/>
96 <arg name="height_mm" type="q" direction="in"/>
97 <arg name="xoff" type="i" direction="in"/>
98 <arg name="yoff" type="i" direction="in"/>
99 <arg name="width" type="u" direction="in"/>
100 <arg name="height" type="u" direction="in"/>
101 </method>
102
103 <!--
104 Label:
105
106 A user-friendly name for the console (for ex: "VGA").
107 -->
108 <property name="Label" type="s" access="read"/>
109
110 <!--
111 Head:
112
113 Graphical device head number.
114 -->
115 <property name="Head" type="u" access="read"/>
116
117 <!--
118 Type:
119
120 Console type ("Graphic" or "Text").
121 -->
122 <property name="Type" type="s" access="read"/>
123
124 <!--
125 Width:
126
127 Console width, in pixels.
128 -->
129 <property name="Width" type="u" access="read"/>
130
131 <!--
132 Height:
133
134 Console height, in pixels.
135 -->
136 <property name="Height" type="u" access="read"/>
137
138 <!--
139 DeviceAddress:
140
141 The device address (ex: "pci/0000/02.0").
142 -->
143 <property name="DeviceAddress" type="s" access="read"/>
Marc-André Lureau439e0162023-06-06 15:56:45 +0400144
145 <!--
146 Interfaces:
147
148 This property lists extra interfaces provided by the
149 ``/org/qemu/Display1/Console_$id`` object, and can be used to detect the
150 capabilities with which they are communicating.
151
152 Unlike the standard D-Bus Introspectable interface, querying this
153 property does not require parsing XML.
154
155 (earlier version of the display interface do not provide this property)
156 -->
157 <property name="Interfaces" type="as" access="read"/>
Marc-André Lureau142ca622021-07-15 11:53:53 +0400158 </interface>
159
160 <!--
161 org.qemu.Display1.Keyboard:
162
Marc-André Lureau439e0162023-06-06 15:56:45 +0400163 This interface is optionally implemented on
164 ``/org/qemu/Display1/Console_$id`` (see
Marc-André Lureau142ca622021-07-15 11:53:53 +0400165 :dbus:iface:`~org.qemu.Display1.Console`).
166 -->
167 <interface name="org.qemu.Display1.Keyboard">
168 <!--
169 Press:
170 @keycode: QEMU key number (xtkbd + special re-encoding of high bit)
171
172 Send a key press event.
173 -->
174 <method name="Press">
175 <arg type="u" name="keycode" direction="in"/>
176 </method>
177
178 <!--
179 Release:
180 @keycode: QEMU key number (xtkbd + special re-encoding of high bit)
181
182 Send a key release event.
183 -->
184 <method name="Release">
185 <arg type="u" name="keycode" direction="in"/>
186 </method>
187
188 <!--
189 Modifiers:
190
191 The active keyboard modifiers::
192
193 Scroll = 1 << 0
194 Num = 1 << 1
195 Caps = 1 << 2
196 -->
197 <property name="Modifiers" type="u" access="read"/>
198 </interface>
199
200 <!--
201 org.qemu.Display1.Mouse:
202
Marc-André Lureau439e0162023-06-06 15:56:45 +0400203 This interface is optionally implemented on
204 ``/org/qemu/Display1/Console_$id`` (see
Marc-André Lureau142ca622021-07-15 11:53:53 +0400205 :dbus:iface:`~org.qemu.Display1.Console` documentation).
206
207 .. _dbus-button-values:
208
209 **Button values**::
210
211 Left = 0
212 Middle = 1
213 Right = 2
214 Wheel-up = 3
215 Wheel-down = 4
216 Side = 5
217 Extra = 6
218 -->
219 <interface name="org.qemu.Display1.Mouse">
220 <!--
221 Press:
222 @button: :ref:`button value<dbus-button-values>`.
223
224 Send a mouse button press event.
225 -->
226 <method name="Press">
227 <arg type="u" name="button" direction="in"/>
228 </method>
229
230 <!--
231 Release:
232 @button: :ref:`button value<dbus-button-values>`.
233
234 Send a mouse button release event.
235 -->
236 <method name="Release">
237 <arg type="u" name="button" direction="in"/>
238 </method>
239
240 <!--
241 SetAbsPosition:
242 @x: X position, in pixels.
243 @y: Y position, in pixels.
244
245 Set the mouse pointer position.
246
247 Returns an error if not :dbus:prop:`IsAbsolute`.
248 -->
249 <method name="SetAbsPosition">
250 <arg type="u" name="x" direction="in"/>
251 <arg type="u" name="y" direction="in"/>
252 </method>
253
254 <!--
255 RelMotion:
256 @dx: X-delta, in pixels.
257 @dy: Y-delta, in pixels.
258
259 Move the mouse pointer position, relative to the current position.
260
261 Returns an error if :dbus:prop:`IsAbsolute`.
262 -->
263 <method name="RelMotion">
264 <arg type="i" name="dx" direction="in"/>
265 <arg type="i" name="dy" direction="in"/>
266 </method>
267
268 <!--
269 IsAbsolute:
270
271 Whether the mouse is using absolute movements.
272 -->
273 <property name="IsAbsolute" type="b" access="read"/>
274 </interface>
275
276 <!--
Bilal Elmoussaouide9f8442023-06-19 11:53:37 +0200277 org.qemu.Display1.MultiTouch:
278
279 This interface in implemented on ``/org/qemu/Display1/Console_$id`` (see
280 :dbus:iface:`~org.qemu.Display1.Console` documentation).
281
282 .. _dbus-kind-values:
283
284 **Kind values**::
285
286 Begin = 0
287 Update = 1
288 End = 2
289 Cancel = 3
290 -->
291 <interface name="org.qemu.Display1.MultiTouch">
292 <!--
293 SendEvent:
294 @kind: The touch event kind
295 @num_slot: The slot number.
296 @x: The x coordinates.
297 @y: The y coordinates.
298
299 Send a touch gesture event.
300 -->
301 <method name="SendEvent">
302 <arg type="u" name="kind" direction="in"/>
303 <arg type="t" name="num_slot" direction="in"/>
304 <arg type="d" name="x" direction="in"/>
305 <arg type="d" name="y" direction="in"/>
306 </method>
307
308 <!--
309 MaxSlots:
310
311 The maximum number of slots.
312 -->
313 <property name="MaxSlots" type="i" access="read"/>
314 </interface>
315
316 <!--
Marc-André Lureau142ca622021-07-15 11:53:53 +0400317 org.qemu.Display1.Listener:
318
319 This client-side interface must be available on
320 ``/org/qemu/Display1/Listener`` when registering the peer-to-peer
321 connection with :dbus:meth:`~org.qemu.Display1.Console.Register`.
322 -->
323 <interface name="org.qemu.Display1.Listener">
324 <!--
325 Scanout:
326 @width: display width, in pixels.
327 @height: display height, in pixels.
328 @stride: data stride, in bytes.
329 @pixman_format: image format (ex: ``PIXMAN_X8R8G8B8``).
330 @data: image data.
331
332 Resize and update the display content.
333
334 The data to transfer for the display update may be large. The preferred
335 scanout method is :dbus:meth:`ScanoutDMABUF`, used whenever possible.
336 -->
337 <method name="Scanout">
338 <arg type="u" name="width" direction="in"/>
339 <arg type="u" name="height" direction="in"/>
340 <arg type="u" name="stride" direction="in"/>
341 <arg type="u" name="pixman_format" direction="in"/>
342 <arg type="ay" name="data" direction="in">
343 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
344 </arg>
345 </method>
346
347 <!--
348 Update:
349 @x: X update position, in pixels.
350 @y: Y update position, in pixels.
351 @width: update width, in pixels.
352 @height: update height, in pixels.
353 @stride: data stride, in bytes.
354 @pixman_format: image format (ex: ``PIXMAN_X8R8G8B8``).
355 @data: display image data.
356
357 Update the display content.
358
359 This method is only called after a :dbus:meth:`Scanout` call.
360 -->
361 <method name="Update">
362 <arg type="i" name="x" direction="in"/>
363 <arg type="i" name="y" direction="in"/>
364 <arg type="i" name="width" direction="in"/>
365 <arg type="i" name="height" direction="in"/>
366 <arg type="u" name="stride" direction="in"/>
367 <arg type="u" name="pixman_format" direction="in"/>
368 <arg type="ay" name="data" direction="in">
369 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
370 </arg>
371 </method>
372
Paolo Bonzinid0cda6f2023-11-03 09:17:48 +0100373 <?if $(env.HOST_OS) != windows?>
Marc-André Lureau142ca622021-07-15 11:53:53 +0400374 <!--
375 ScanoutDMABUF:
376 @dmabuf: the DMABUF file descriptor.
377 @width: display width, in pixels.
378 @height: display height, in pixels.
379 @stride: stride, in bytes.
380 @fourcc: DMABUF fourcc.
381 @modifier: DMABUF modifier.
382 @y0_top: whether Y position 0 is the top or not.
383
384 Resize and update the display content with a DMABUF.
385 -->
386 <method name="ScanoutDMABUF">
387 <arg type="h" name="dmabuf" direction="in"/>
388 <arg type="u" name="width" direction="in"/>
389 <arg type="u" name="height" direction="in"/>
390 <arg type="u" name="stride" direction="in"/>
391 <arg type="u" name="fourcc" direction="in"/>
392 <!-- xywh? -->
393 <arg type="t" name="modifier" direction="in"/>
394 <arg type="b" name="y0_top" direction="in"/>
395 </method>
396
397 <!--
398 UpdateDMABUF:
399 @x: the X update position, in pixels.
400 @y: the Y update position, in pixels.
401 @width: the update width, in pixels.
402 @height: the update height, in pixels.
403
404 Update the display content with the current DMABUF and the given region.
405 -->
406 <method name="UpdateDMABUF">
407 <arg type="i" name="x" direction="in"/>
408 <arg type="i" name="y" direction="in"/>
409 <arg type="i" name="width" direction="in"/>
410 <arg type="i" name="height" direction="in"/>
411 </method>
Marc-André Lureau6cc5a612023-06-06 15:56:42 +0400412 <?endif?>
Marc-André Lureau142ca622021-07-15 11:53:53 +0400413
414 <!--
415 Disable:
416
417 Disable the display (turn it off).
418 -->
419 <method name="Disable">
420 </method>
421
422 <!--
423 MouseSet:
424 @x: X mouse position, in pixels.
425 @y: Y mouse position, in pixels.
426 @on: whether the mouse is visible or not.
427
428 Set the mouse position and visibility.
429 -->
430 <method name="MouseSet">
431 <arg type="i" name="x" direction="in"/>
432 <arg type="i" name="y" direction="in"/>
433 <arg type="i" name="on" direction="in"/>
434 </method>
435
436 <!--
437 CursorDefine:
438 @width: cursor width, in pixels.
439 @height: cursor height, in pixels.
440 @hot_x: hot-spot X position, in pixels.
441 @hot_y: hot-spot Y position, in pixels.
442 @data: the cursor data.
443
444 Set the mouse cursor shape and hot-spot. The "data" must be ARGB, 32-bit
445 per pixel.
446 -->
447 <method name="CursorDefine">
448 <arg type="i" name="width" direction="in"/>
449 <arg type="i" name="height" direction="in"/>
450 <arg type="i" name="hot_x" direction="in"/>
451 <arg type="i" name="hot_y" direction="in"/>
452 <arg type="ay" name="data" direction="in">
453 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
454 </arg>
455 </method>
Marc-André Lureau439e0162023-06-06 15:56:45 +0400456
457 <!--
458 Interfaces:
459
460 This property lists extra interfaces provided by the
461 /org/qemu/Display1/Listener object, and can be used to detect
462 the capabilities with which they are communicating.
463
464 Unlike the standard D-Bus Introspectable interface, querying this
465 property does not require parsing XML.
466
467 (earlier version of the display interface do not provide this property)
468 -->
469 <property name="Interfaces" type="as" access="read"/>
Marc-André Lureau142ca622021-07-15 11:53:53 +0400470 </interface>
Marc-André Lureau739362d2021-03-09 17:15:28 +0400471
472 <!--
Marc-André Lureau4de1797ff62024-10-08 16:50:24 +0400473 org.qemu.Display1.Listener.Unix.Map:
474
475 This optional client-side interface can complement
476 org.qemu.Display1.Listener on ``/org/qemu/Display1/Listener`` for
477 Unix-specific shared memory scanouts.
478 -->
479 <?if $(env.HOST_OS) != windows?>
480 <interface name="org.qemu.Display1.Listener.Unix.Map">
481 <!--
482 ScanoutMap:
483 @handle: the shared map FD.
484 @offset: mapping offset, in bytes.
485 @width: display width, in pixels.
486 @height: display height, in pixels.
487 @stride: stride, in bytes.
488 @pixman_format: image format (ex: ``PIXMAN_X8R8G8B8``).
489
490 Resize and update the display content with a shared map.
491 -->
492 <method name="ScanoutMap">
493 <arg type="h" name="handle" direction="in"/>
494 <arg type="u" name="offset" direction="in"/>
495 <arg type="u" name="width" direction="in"/>
496 <arg type="u" name="height" direction="in"/>
497 <arg type="u" name="stride" direction="in"/>
498 <arg type="u" name="pixman_format" direction="in"/>
499 </method>
500
501 <!--
502 UpdateMap:
503 @x: the X update position, in pixels.
504 @y: the Y update position, in pixels.
505 @width: the update width, in pixels.
506 @height: the update height, in pixels.
507
508 Update the display content with the current shared map and the given region.
509 -->
510 <method name="UpdateMap">
511 <arg type="i" name="x" direction="in"/>
512 <arg type="i" name="y" direction="in"/>
513 <arg type="i" name="width" direction="in"/>
514 <arg type="i" name="height" direction="in"/>
515 </method>
516 </interface>
517 <?endif?>
518
519 <!--
Marc-André Lureau48dddba2023-06-06 15:56:48 +0400520 org.qemu.Display1.Listener.Win32.Map:
521
Marc-André Lureaude1f8ce2023-06-06 15:56:58 +0400522 This optional client-side interface can complement
523 org.qemu.Display1.Listener on ``/org/qemu/Display1/Listener`` for Windows
524 specific shared memory scanouts.
Marc-André Lureau48dddba2023-06-06 15:56:48 +0400525 -->
Marc-André Lureau3a9d38d2024-10-08 16:50:23 +0400526 <?if $(env.HOST_OS) == windows?>
Marc-André Lureau48dddba2023-06-06 15:56:48 +0400527 <interface name="org.qemu.Display1.Listener.Win32.Map">
528 <!--
529 ScanoutMap:
530 @handle: the shared map handle value.
531 @offset: mapping offset.
532 @width: display width, in pixels.
533 @height: display height, in pixels.
534 @stride: stride, in bytes.
535 @pixman_format: image format (ex: ``PIXMAN_X8R8G8B8``).
536
537 Resize and update the display content with a shared map.
538 -->
539 <method name="ScanoutMap">
540 <arg type="t" name="handle" direction="in"/>
541 <arg type="u" name="offset" direction="in"/>
542 <arg type="u" name="width" direction="in"/>
543 <arg type="u" name="height" direction="in"/>
544 <arg type="u" name="stride" direction="in"/>
545 <arg type="u" name="pixman_format" direction="in"/>
546 </method>
547
548 <!--
549 UpdateMap:
550 @x: the X update position, in pixels.
551 @y: the Y update position, in pixels.
552 @width: the update width, in pixels.
553 @height: the update height, in pixels.
554
555 Update the display content with the current shared map and the given region.
556 -->
557 <method name="UpdateMap">
558 <arg type="i" name="x" direction="in"/>
559 <arg type="i" name="y" direction="in"/>
560 <arg type="i" name="width" direction="in"/>
561 <arg type="i" name="height" direction="in"/>
562 </method>
563 </interface>
Marc-André Lureau3a9d38d2024-10-08 16:50:23 +0400564 <?endif?>
Marc-André Lureau48dddba2023-06-06 15:56:48 +0400565
566 <!--
Marc-André Lureaude1f8ce2023-06-06 15:56:58 +0400567 org.qemu.Display1.Listener.Win32.D3d11:
568
569 This optional client-side interface can complement
570 org.qemu.Display1.Listener on ``/org/qemu/Display1/Listener`` for Windows
571 specific Direct3D texture sharing of the scanouts.
572 -->
573 <interface name="org.qemu.Display1.Listener.Win32.D3d11">
574 <!--
575 ScanoutTexture2d:
576 @handle: the NT handle for the shared texture (to be opened back with ID3D11Device1::OpenSharedResource1).
577 @texture_width: texture width, in pixels.
578 @texture_height: texture height, in pixels.
579 @y0_top: whether Y position 0 is the top or not.
580 @x: the X scanout position, in pixels.
581 @y: the Y scanout position, in pixels.
582 @width: the scanout width, in pixels.
583 @height: the scanout height, in pixels.
584
585 Resize and update the display content with a Direct3D 11 2D texture.
586 You must acquire and release the associated KeyedMutex 0 during rendering.
587 -->
588 <method name="ScanoutTexture2d">
589 <arg type="t" name="handle" direction="in"/>
590 <arg type="u" name="texture_width" direction="in"/>
591 <arg type="u" name="texture_height" direction="in"/>
592 <arg type="b" name="y0_top" direction="in"/>
593 <arg type="u" name="x" direction="in"/>
594 <arg type="u" name="y" direction="in"/>
595 <arg type="u" name="width" direction="in"/>
596 <arg type="u" name="height" direction="in"/>
597 </method>
598
599 <!--
600 UpdateTexture2d:
601 @x: the X update position, in pixels.
602 @y: the Y update position, in pixels.
603 @width: the update width, in pixels.
604 @height: the update height, in pixels.
605
606 Update the display content with the current Direct3D 2D texture and the given region.
607 You must acquire and release the associated KeyedMutex 0 during rendering.
608 -->
609 <method name="UpdateTexture2d">
610 <arg type="i" name="x" direction="in"/>
611 <arg type="i" name="y" direction="in"/>
612 <arg type="i" name="width" direction="in"/>
613 <arg type="i" name="height" direction="in"/>
614 </method>
615 </interface>
616
617 <!--
Marc-André Lureauff1a5812021-07-20 16:02:52 +0400618 org.qemu.Display1.Clipboard:
619
620 This interface must be implemented by both the client and the server on
621 ``/org/qemu/Display1/Clipboard`` to support clipboard sharing between
622 the client and the guest.
623
624 Once :dbus:meth:`Register`'ed, method calls may be sent and received in both
625 directions. Unregistered callers will get error replies.
626
627 .. _dbus-clipboard-selection:
628
629 **Selection values**::
630
631 Clipboard = 0
632 Primary = 1
633 Secondary = 2
634
635 .. _dbus-clipboard-serial:
636
637 **Serial counter**
638
639 To solve potential clipboard races, clipboard grabs have an associated
640 serial counter. It is set to 0 on registration, and incremented by 1 for
641 each grab. The peer with the highest serial is the clipboard grab owner.
642
643 When a grab with a lower serial is received, it should be discarded.
644
645 When a grab is attempted with the same serial number as the current grab,
646 the one coming from the client should have higher priority, and the client
647 should gain clipboard grab ownership.
648 -->
649 <interface name="org.qemu.Display1.Clipboard">
650 <!--
651 Register:
652
653 Register a clipboard session and reinitialize the serial counter.
654
655 The client must register itself, and is granted an exclusive
656 access for handling the clipboard.
657
658 The server can reinitialize the session as well (to reset the counter).
659 -->
660 <method name="Register"/>
661
662 <!--
663 Unregister:
664
665 Unregister the clipboard session.
666 -->
667 <method name="Unregister"/>
668 <!--
669 Grab:
670 @selection: a :ref:`selection value<dbus-clipboard-selection>`.
671 @serial: the current grab :ref:`serial<dbus-clipboard-serial>`.
672 @mimes: the list of available content MIME types.
673
674 Grab the clipboard, claiming current clipboard content.
675 -->
676 <method name="Grab">
677 <arg type="u" name="selection"/>
678 <arg type="u" name="serial"/>
679 <arg type="as" name="mimes"/>
680 </method>
681
682 <!--
683 Release:
684 @selection: a :ref:`selection value<dbus-clipboard-selection>`.
685
686 Release the clipboard (does nothing if not the current owner).
687 -->
688 <method name="Release">
689 <arg type="u" name="selection"/>
690 </method>
691
692 <!--
693 Request:
694 @selection: a :ref:`selection value<dbus-clipboard-selection>`
695 @mimes: requested MIME types (by order of preference).
696 @reply_mime: the returned data MIME type.
697 @data: the clipboard data.
698
699 Request the clipboard content.
700
701 Return an error if the clipboard is empty, or the requested MIME types
702 are unavailable.
703 -->
704 <method name="Request">
705 <arg type="u" name="selection"/>
706 <arg type="as" name="mimes"/>
707 <arg type="s" name="reply_mime" direction="out"/>
708 <arg type="ay" name="data" direction="out">
709 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
710 </arg>
711 </method>
Marc-André Lureau439e0162023-06-06 15:56:45 +0400712
713 <!--
714 Interfaces:
715
716 This property lists extra interfaces provided by the
717 /org/qemu/Display1/Clipboard object, and can be used to detect
718 the capabilities with which they are communicating.
719
720 Unlike the standard D-Bus Introspectable interface, querying this
721 property does not require parsing XML.
722
723 (earlier version of the display interface do not provide this property)
724 -->
725 <property name="Interfaces" type="as" access="read"/>
Marc-André Lureauff1a5812021-07-20 16:02:52 +0400726 </interface>
727
728 <!--
Marc-André Lureau739362d2021-03-09 17:15:28 +0400729 org.qemu.Display1.Audio:
730
731 Audio backend may be available on ``/org/qemu/Display1/Audio``.
732 -->
733 <interface name="org.qemu.Display1.Audio">
734 <!--
735 RegisterOutListener:
736 @listener: a Unix socket FD, for peer-to-peer D-Bus communication.
737
738 Register an audio backend playback handler.
739
740 Multiple listeners may be registered simultaneously.
741
742 The listener is expected to implement the
743 :dbus:iface:`org.qemu.Display1.AudioOutListener` interface.
744 -->
745 <method name="RegisterOutListener">
Paolo Bonzinid0cda6f2023-11-03 09:17:48 +0100746 <?if $(env.HOST_OS) == windows?>
Marc-André Lureau6cc5a612023-06-06 15:56:42 +0400747 <arg type="ay" name="listener" direction="in">
748 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
749 </arg>
750 <?else?>
Marc-André Lureau739362d2021-03-09 17:15:28 +0400751 <arg type="h" name="listener" direction="in"/>
Marc-André Lureau6cc5a612023-06-06 15:56:42 +0400752 <?endif?>
Marc-André Lureau739362d2021-03-09 17:15:28 +0400753 </method>
754
755 <!--
756 RegisterInListener:
757 @listener: a Unix socket FD, for peer-to-peer D-Bus communication.
758
759 Register an audio backend record handler.
760
761 Multiple listeners may be registered simultaneously.
762
763 The listener is expected to implement the
764 :dbus:iface:`org.qemu.Display1.AudioInListener` interface.
765 -->
766 <method name="RegisterInListener">
Paolo Bonzinid0cda6f2023-11-03 09:17:48 +0100767 <?if $(env.HOST_OS) == windows?>
Marc-André Lureau6cc5a612023-06-06 15:56:42 +0400768 <arg type="ay" name="listener" direction="in">
769 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
770 </arg>
771 <?else?>
Marc-André Lureau739362d2021-03-09 17:15:28 +0400772 <arg type="h" name="listener" direction="in"/>
Marc-André Lureau6cc5a612023-06-06 15:56:42 +0400773 <?endif?>
Marc-André Lureau739362d2021-03-09 17:15:28 +0400774 </method>
Marc-André Lureau439e0162023-06-06 15:56:45 +0400775
776 <!--
777 Interfaces:
778
779 This property lists extra interfaces provided by the
780 /org/qemu/Display1/Audio object, and can be used to detect
781 the capabilities with which they are communicating.
782
783 Unlike the standard D-Bus Introspectable interface, querying this
784 property does not require parsing XML.
785
786 (earlier version of the display interface do not provide this property)
787 -->
788 <property name="Interfaces" type="as" access="read"/>
Marc-André Lureau739362d2021-03-09 17:15:28 +0400789 </interface>
790
791 <!--
792 org.qemu.Display1.AudioOutListener:
793
794 This client-side interface must be available on
795 ``/org/qemu/Display1/AudioOutListener`` when registering the peer-to-peer
796 connection with :dbus:meth:`~org.qemu.Display1.Audio.RegisterOutListener`.
797 -->
798 <interface name="org.qemu.Display1.AudioOutListener">
799 <!--
800 Init:
801 @id: the stream ID.
802 @bits: PCM bits per sample.
803 @is_signed: whether the PCM data is signed.
804 @is_float: PCM floating point format.
805 @freq: the PCM frequency in Hz.
806 @nchannels: the number of channels.
807 @bytes_per_frame: the bytes per frame.
808 @bytes_per_second: the bytes per second.
809 @be: whether using big-endian format.
810
811 Initializes a PCM playback stream.
812 -->
813 <method name="Init">
814 <arg name="id" type="t" direction="in"/>
815 <arg name="bits" type="y" direction="in"/>
816 <arg name="is_signed" type="b" direction="in"/>
817 <arg name="is_float" type="b" direction="in"/>
818 <arg name="freq" type="u" direction="in"/>
819 <arg name="nchannels" type="y" direction="in"/>
820 <arg name="bytes_per_frame" type="u" direction="in"/>
821 <arg name="bytes_per_second" type="u" direction="in"/>
822 <arg name="be" type="b" direction="in"/>
823 </method>
824
825 <!--
826 Fini:
827 @id: the stream ID.
828
829 Finish & close a playback stream.
830 -->
831 <method name="Fini">
832 <arg name="id" type="t" direction="in"/>
833 </method>
834
835 <!--
836 SetEnabled:
837 @id: the stream ID.
838
839 Resume or suspend the playback stream.
840 -->
841 <method name="SetEnabled">
842 <arg name="id" type="t" direction="in"/>
843 <arg name="enabled" type="b" direction="in"/>
844 </method>
845
846 <!--
847 SetVolume:
848 @id: the stream ID.
849 @mute: whether the stream is muted.
850 @volume: the volume per-channel.
851
852 Set the stream volume and mute state (volume without unit, 0-255).
853 -->
854 <method name="SetVolume">
855 <arg name="id" type="t" direction="in"/>
856 <arg name="mute" type="b" direction="in"/>
857 <arg name="volume" type="ay" direction="in">
858 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
859 </arg>
860 </method>
861
862 <!--
863 Write:
864 @id: the stream ID.
865 @data: the PCM data.
866
867 PCM stream to play.
868 -->
869 <method name="Write">
870 <arg name="id" type="t" direction="in"/>
871 <arg type="ay" name="data" direction="in">
872 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
873 </arg>
874 </method>
Marc-André Lureau439e0162023-06-06 15:56:45 +0400875
876 <!--
877 Interfaces:
878
879 This property lists extra interfaces provided by the
880 /org/qemu/Display1/AudioOutListener object, and can be used to detect
881 the capabilities with which they are communicating.
882
883 Unlike the standard D-Bus Introspectable interface, querying this
884 property does not require parsing XML.
885
886 (earlier version of the display interface do not provide this property)
887 -->
888 <property name="Interfaces" type="as" access="read"/>
Marc-André Lureau739362d2021-03-09 17:15:28 +0400889 </interface>
890
891 <!--
892 org.qemu.Display1.AudioInListener:
893
894 This client-side interface must be available on
895 ``/org/qemu/Display1/AudioInListener`` when registering the peer-to-peer
896 connection with :dbus:meth:`~org.qemu.Display1.Audio.RegisterInListener`.
897 -->
898 <interface name="org.qemu.Display1.AudioInListener">
899 <!--
900 Init:
901 @id: the stream ID.
902 @bits: PCM bits per sample.
903 @is_signed: whether the PCM data is signed.
904 @is_float: PCM floating point format.
905 @freq: the PCM frequency in Hz.
906 @nchannels: the number of channels.
907 @bytes_per_frame: the bytes per frame.
908 @bytes_per_second: the bytes per second.
909 @be: whether using big-endian format.
910
911 Initializes a PCM record stream.
912 -->
913 <method name="Init">
914 <arg name="id" type="t" direction="in"/>
915 <arg name="bits" type="y" direction="in"/>
916 <arg name="is_signed" type="b" direction="in"/>
917 <arg name="is_float" type="b" direction="in"/>
918 <arg name="freq" type="u" direction="in"/>
919 <arg name="nchannels" type="y" direction="in"/>
920 <arg name="bytes_per_frame" type="u" direction="in"/>
921 <arg name="bytes_per_second" type="u" direction="in"/>
922 <arg name="be" type="b" direction="in"/>
923 </method>
924
925 <!--
926 Fini:
927 @id: the stream ID.
928
929 Finish & close a record stream.
930 -->
931 <method name="Fini">
932 <arg name="id" type="t" direction="in"/>
933 </method>
934
935 <!--
936 SetEnabled:
937 @id: the stream ID.
938
939 Resume or suspend the record stream.
940 -->
941 <method name="SetEnabled">
942 <arg name="id" type="t" direction="in"/>
943 <arg name="enabled" type="b" direction="in"/>
944 </method>
945
946 <!--
947 SetVolume:
948 @id: the stream ID.
949 @mute: whether the stream is muted.
950 @volume: the volume per-channel.
951
952 Set the stream volume and mute state (volume without unit, 0-255).
953 -->
954 <method name="SetVolume">
955 <arg name="id" type="t" direction="in"/>
956 <arg name="mute" type="b" direction="in"/>
957 <arg name="volume" type="ay" direction="in">
958 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
959 </arg>
960 </method>
961
962 <!--
963 Read:
964 @id: the stream ID.
965 @size: the amount to read, in bytes.
966 @data: the recorded data (which may be less than requested).
967
968 Read "size" bytes from the record stream.
969 -->
970 <method name="Read">
971 <arg name="id" type="t" direction="in"/>
972 <arg name="size" type="t" direction="in"/>
973 <arg type="ay" name="data" direction="out">
974 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
975 </arg>
976 </method>
Marc-André Lureau439e0162023-06-06 15:56:45 +0400977
978 <!--
979 Interfaces:
980
981 This property lists extra interfaces provided by the
982 /org/qemu/Display1/AudioInListener object, and can be used to detect
983 the capabilities with which they are communicating.
984
985 Unlike the standard D-Bus Introspectable interface, querying this
986 property does not require parsing XML.
987
988 (earlier version of the display interface do not provide this property)
989 -->
990 <property name="Interfaces" type="as" access="read"/>
Marc-André Lureau739362d2021-03-09 17:15:28 +0400991 </interface>
Marc-André Lureau3e301c82021-07-22 19:43:29 +0400992
993 <!--
994 org.qemu.Display1.Chardev:
995
996 Character devices may be available on ``/org/qemu/Display1/Chardev_$id``.
997
998 They may be used for different kind of streams, which are identified via
999 their FQDN :dbus:prop:`Name`.
1000
1001 .. _dbus-chardev-fqdn:
1002
1003 Here are some known reserved kind names (the ``org.qemu`` prefix is
1004 reserved by QEMU):
1005
1006 org.qemu.console.serial.0
1007 A serial console stream.
1008
1009 org.qemu.monitor.hmp.0
1010 A QEMU HMP human monitor.
1011
1012 org.qemu.monitor.qmp.0
1013 A QEMU QMP monitor.
1014
1015 org.qemu.usbredir
1016 A usbredir stream.
1017 -->
1018 <interface name="org.qemu.Display1.Chardev">
1019 <!--
1020 Register:
1021 @stream: a Unix FD to redirect the stream to.
1022
1023 Register a file-descriptor for the stream handling.
1024
1025 The current handler, if any, will be replaced.
1026 -->
1027 <method name="Register">
Paolo Bonzinid0cda6f2023-11-03 09:17:48 +01001028 <?if $(env.HOST_OS) == windows?>
Marc-André Lureau6cc5a612023-06-06 15:56:42 +04001029 <arg type="ay" name="listener" direction="in">
1030 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
1031 </arg>
1032 <?else?>
Marc-André Lureau3e301c82021-07-22 19:43:29 +04001033 <arg type="h" name="stream" direction="in"/>
Marc-André Lureau6cc5a612023-06-06 15:56:42 +04001034 <?endif?>
Marc-André Lureau3e301c82021-07-22 19:43:29 +04001035 </method>
1036
1037 <!--
1038 SendBreak:
1039
1040 Send a break event to the character device.
1041 -->
1042 <method name="SendBreak"/>
1043
1044 <!--
1045 Name:
1046
1047 The FQDN name to identify the kind of stream. See :ref:`reserved
1048 names<dbus-chardev-fqdn>`.
1049 -->
1050 <property name="Name" type="s" access="read"/>
1051
1052 <!--
1053 FEOpened:
1054
1055 Whether the front-end side is opened.
1056 -->
1057 <property name="FEOpened" type="b" access="read"/>
1058
1059 <!--
1060 Echo:
1061
1062 Whether the input should be echo'ed (for serial streams).
1063 -->
1064 <property name="Echo" type="b" access="read"/>
1065
1066 <!--
1067 Owner:
1068
1069 The D-Bus unique name of the registered handler.
1070 -->
1071 <property name="Owner" type="s" access="read"/>
Marc-André Lureau439e0162023-06-06 15:56:45 +04001072
1073 <!--
1074 Interfaces:
1075
1076 This property lists extra interfaces provided by the
1077 ``/org/qemu/Display1/Chardev_$i`` object, and can be used to detect
1078 the capabilities with which they are communicating.
1079
1080 Unlike the standard D-Bus Introspectable interface, querying this
1081 property does not require parsing XML.
1082
1083 (earlier version of the display interface do not provide this property)
1084 -->
1085 <property name="Interfaces" type="as" access="read"/>
Marc-André Lureau3e301c82021-07-22 19:43:29 +04001086 </interface>
Marc-André Lureau142ca622021-07-15 11:53:53 +04001087</node>