]> git.proxmox.com Git - mirror_qemu.git/blob - ui/dbus-display1.xml
ui/dbus: introduce "Interfaces" properties
[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
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"/>
43 </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
56 :dbus:iface:`org.qemu.Display1.Keyboard`,
57 :dbus:iface:`org.qemu.Display1.Mouse` and
58 :dbus:iface:`org.qemu.Display1.MultiTouch` interfaces when available.
59 -->
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">
74 <?if $(env.TARGETOS) == windows?>
75 <arg type="ay" name="listener" direction="in">
76 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
77 </arg>
78 <?else?>
79 <arg type="h" name="listener" direction="in"/>
80 <?endif?>
81 </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"/>
144
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"/>
158 </interface>
159
160 <!--
161 org.qemu.Display1.Keyboard:
162
163 This interface is optionally implemented on
164 ``/org/qemu/Display1/Console_$id`` (see
165 :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
203 This interface is optionally implemented on
204 ``/org/qemu/Display1/Console_$id`` (see
205 :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 <!--
277 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 <!--
317 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
373 <?if $(env.TARGETOS) == windows?>
374 <!-- Add shared memory/texture support -->
375 <?else?>
376 <!--
377 ScanoutDMABUF:
378 @dmabuf: the DMABUF file descriptor.
379 @width: display width, in pixels.
380 @height: display height, in pixels.
381 @stride: stride, in bytes.
382 @fourcc: DMABUF fourcc.
383 @modifier: DMABUF modifier.
384 @y0_top: whether Y position 0 is the top or not.
385
386 Resize and update the display content with a DMABUF.
387 -->
388 <method name="ScanoutDMABUF">
389 <arg type="h" name="dmabuf" direction="in"/>
390 <arg type="u" name="width" direction="in"/>
391 <arg type="u" name="height" direction="in"/>
392 <arg type="u" name="stride" direction="in"/>
393 <arg type="u" name="fourcc" direction="in"/>
394 <!-- xywh? -->
395 <arg type="t" name="modifier" direction="in"/>
396 <arg type="b" name="y0_top" direction="in"/>
397 </method>
398
399 <!--
400 UpdateDMABUF:
401 @x: the X update position, in pixels.
402 @y: the Y update position, in pixels.
403 @width: the update width, in pixels.
404 @height: the update height, in pixels.
405
406 Update the display content with the current DMABUF and the given region.
407 -->
408 <method name="UpdateDMABUF">
409 <arg type="i" name="x" direction="in"/>
410 <arg type="i" name="y" direction="in"/>
411 <arg type="i" name="width" direction="in"/>
412 <arg type="i" name="height" direction="in"/>
413 </method>
414 <?endif?>
415
416 <!--
417 Disable:
418
419 Disable the display (turn it off).
420 -->
421 <method name="Disable">
422 </method>
423
424 <!--
425 MouseSet:
426 @x: X mouse position, in pixels.
427 @y: Y mouse position, in pixels.
428 @on: whether the mouse is visible or not.
429
430 Set the mouse position and visibility.
431 -->
432 <method name="MouseSet">
433 <arg type="i" name="x" direction="in"/>
434 <arg type="i" name="y" direction="in"/>
435 <arg type="i" name="on" direction="in"/>
436 </method>
437
438 <!--
439 CursorDefine:
440 @width: cursor width, in pixels.
441 @height: cursor height, in pixels.
442 @hot_x: hot-spot X position, in pixels.
443 @hot_y: hot-spot Y position, in pixels.
444 @data: the cursor data.
445
446 Set the mouse cursor shape and hot-spot. The "data" must be ARGB, 32-bit
447 per pixel.
448 -->
449 <method name="CursorDefine">
450 <arg type="i" name="width" direction="in"/>
451 <arg type="i" name="height" direction="in"/>
452 <arg type="i" name="hot_x" direction="in"/>
453 <arg type="i" name="hot_y" direction="in"/>
454 <arg type="ay" name="data" direction="in">
455 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
456 </arg>
457 </method>
458
459 <!--
460 Interfaces:
461
462 This property lists extra interfaces provided by the
463 /org/qemu/Display1/Listener object, and can be used to detect
464 the capabilities with which they are communicating.
465
466 Unlike the standard D-Bus Introspectable interface, querying this
467 property does not require parsing XML.
468
469 (earlier version of the display interface do not provide this property)
470 -->
471 <property name="Interfaces" type="as" access="read"/>
472 </interface>
473
474 <!--
475 org.qemu.Display1.Clipboard:
476
477 This interface must be implemented by both the client and the server on
478 ``/org/qemu/Display1/Clipboard`` to support clipboard sharing between
479 the client and the guest.
480
481 Once :dbus:meth:`Register`'ed, method calls may be sent and received in both
482 directions. Unregistered callers will get error replies.
483
484 .. _dbus-clipboard-selection:
485
486 **Selection values**::
487
488 Clipboard = 0
489 Primary = 1
490 Secondary = 2
491
492 .. _dbus-clipboard-serial:
493
494 **Serial counter**
495
496 To solve potential clipboard races, clipboard grabs have an associated
497 serial counter. It is set to 0 on registration, and incremented by 1 for
498 each grab. The peer with the highest serial is the clipboard grab owner.
499
500 When a grab with a lower serial is received, it should be discarded.
501
502 When a grab is attempted with the same serial number as the current grab,
503 the one coming from the client should have higher priority, and the client
504 should gain clipboard grab ownership.
505 -->
506 <interface name="org.qemu.Display1.Clipboard">
507 <!--
508 Register:
509
510 Register a clipboard session and reinitialize the serial counter.
511
512 The client must register itself, and is granted an exclusive
513 access for handling the clipboard.
514
515 The server can reinitialize the session as well (to reset the counter).
516 -->
517 <method name="Register"/>
518
519 <!--
520 Unregister:
521
522 Unregister the clipboard session.
523 -->
524 <method name="Unregister"/>
525 <!--
526 Grab:
527 @selection: a :ref:`selection value<dbus-clipboard-selection>`.
528 @serial: the current grab :ref:`serial<dbus-clipboard-serial>`.
529 @mimes: the list of available content MIME types.
530
531 Grab the clipboard, claiming current clipboard content.
532 -->
533 <method name="Grab">
534 <arg type="u" name="selection"/>
535 <arg type="u" name="serial"/>
536 <arg type="as" name="mimes"/>
537 </method>
538
539 <!--
540 Release:
541 @selection: a :ref:`selection value<dbus-clipboard-selection>`.
542
543 Release the clipboard (does nothing if not the current owner).
544 -->
545 <method name="Release">
546 <arg type="u" name="selection"/>
547 </method>
548
549 <!--
550 Request:
551 @selection: a :ref:`selection value<dbus-clipboard-selection>`
552 @mimes: requested MIME types (by order of preference).
553 @reply_mime: the returned data MIME type.
554 @data: the clipboard data.
555
556 Request the clipboard content.
557
558 Return an error if the clipboard is empty, or the requested MIME types
559 are unavailable.
560 -->
561 <method name="Request">
562 <arg type="u" name="selection"/>
563 <arg type="as" name="mimes"/>
564 <arg type="s" name="reply_mime" direction="out"/>
565 <arg type="ay" name="data" direction="out">
566 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
567 </arg>
568 </method>
569
570 <!--
571 Interfaces:
572
573 This property lists extra interfaces provided by the
574 /org/qemu/Display1/Clipboard object, and can be used to detect
575 the capabilities with which they are communicating.
576
577 Unlike the standard D-Bus Introspectable interface, querying this
578 property does not require parsing XML.
579
580 (earlier version of the display interface do not provide this property)
581 -->
582 <property name="Interfaces" type="as" access="read"/>
583 </interface>
584
585 <!--
586 org.qemu.Display1.Audio:
587
588 Audio backend may be available on ``/org/qemu/Display1/Audio``.
589 -->
590 <interface name="org.qemu.Display1.Audio">
591 <!--
592 RegisterOutListener:
593 @listener: a Unix socket FD, for peer-to-peer D-Bus communication.
594
595 Register an audio backend playback handler.
596
597 Multiple listeners may be registered simultaneously.
598
599 The listener is expected to implement the
600 :dbus:iface:`org.qemu.Display1.AudioOutListener` interface.
601 -->
602 <method name="RegisterOutListener">
603 <?if $(env.TARGETOS) == windows?>
604 <arg type="ay" name="listener" direction="in">
605 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
606 </arg>
607 <?else?>
608 <arg type="h" name="listener" direction="in"/>
609 <?endif?>
610 </method>
611
612 <!--
613 RegisterInListener:
614 @listener: a Unix socket FD, for peer-to-peer D-Bus communication.
615
616 Register an audio backend record handler.
617
618 Multiple listeners may be registered simultaneously.
619
620 The listener is expected to implement the
621 :dbus:iface:`org.qemu.Display1.AudioInListener` interface.
622 -->
623 <method name="RegisterInListener">
624 <?if $(env.TARGETOS) == windows?>
625 <arg type="ay" name="listener" direction="in">
626 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
627 </arg>
628 <?else?>
629 <arg type="h" name="listener" direction="in"/>
630 <?endif?>
631 </method>
632
633 <!--
634 Interfaces:
635
636 This property lists extra interfaces provided by the
637 /org/qemu/Display1/Audio object, and can be used to detect
638 the capabilities with which they are communicating.
639
640 Unlike the standard D-Bus Introspectable interface, querying this
641 property does not require parsing XML.
642
643 (earlier version of the display interface do not provide this property)
644 -->
645 <property name="Interfaces" type="as" access="read"/>
646 </interface>
647
648 <!--
649 org.qemu.Display1.AudioOutListener:
650
651 This client-side interface must be available on
652 ``/org/qemu/Display1/AudioOutListener`` when registering the peer-to-peer
653 connection with :dbus:meth:`~org.qemu.Display1.Audio.RegisterOutListener`.
654 -->
655 <interface name="org.qemu.Display1.AudioOutListener">
656 <!--
657 Init:
658 @id: the stream ID.
659 @bits: PCM bits per sample.
660 @is_signed: whether the PCM data is signed.
661 @is_float: PCM floating point format.
662 @freq: the PCM frequency in Hz.
663 @nchannels: the number of channels.
664 @bytes_per_frame: the bytes per frame.
665 @bytes_per_second: the bytes per second.
666 @be: whether using big-endian format.
667
668 Initializes a PCM playback stream.
669 -->
670 <method name="Init">
671 <arg name="id" type="t" direction="in"/>
672 <arg name="bits" type="y" direction="in"/>
673 <arg name="is_signed" type="b" direction="in"/>
674 <arg name="is_float" type="b" direction="in"/>
675 <arg name="freq" type="u" direction="in"/>
676 <arg name="nchannels" type="y" direction="in"/>
677 <arg name="bytes_per_frame" type="u" direction="in"/>
678 <arg name="bytes_per_second" type="u" direction="in"/>
679 <arg name="be" type="b" direction="in"/>
680 </method>
681
682 <!--
683 Fini:
684 @id: the stream ID.
685
686 Finish & close a playback stream.
687 -->
688 <method name="Fini">
689 <arg name="id" type="t" direction="in"/>
690 </method>
691
692 <!--
693 SetEnabled:
694 @id: the stream ID.
695
696 Resume or suspend the playback stream.
697 -->
698 <method name="SetEnabled">
699 <arg name="id" type="t" direction="in"/>
700 <arg name="enabled" type="b" direction="in"/>
701 </method>
702
703 <!--
704 SetVolume:
705 @id: the stream ID.
706 @mute: whether the stream is muted.
707 @volume: the volume per-channel.
708
709 Set the stream volume and mute state (volume without unit, 0-255).
710 -->
711 <method name="SetVolume">
712 <arg name="id" type="t" direction="in"/>
713 <arg name="mute" type="b" direction="in"/>
714 <arg name="volume" type="ay" direction="in">
715 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
716 </arg>
717 </method>
718
719 <!--
720 Write:
721 @id: the stream ID.
722 @data: the PCM data.
723
724 PCM stream to play.
725 -->
726 <method name="Write">
727 <arg name="id" type="t" direction="in"/>
728 <arg type="ay" name="data" direction="in">
729 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
730 </arg>
731 </method>
732
733 <!--
734 Interfaces:
735
736 This property lists extra interfaces provided by the
737 /org/qemu/Display1/AudioOutListener object, and can be used to detect
738 the capabilities with which they are communicating.
739
740 Unlike the standard D-Bus Introspectable interface, querying this
741 property does not require parsing XML.
742
743 (earlier version of the display interface do not provide this property)
744 -->
745 <property name="Interfaces" type="as" access="read"/>
746 </interface>
747
748 <!--
749 org.qemu.Display1.AudioInListener:
750
751 This client-side interface must be available on
752 ``/org/qemu/Display1/AudioInListener`` when registering the peer-to-peer
753 connection with :dbus:meth:`~org.qemu.Display1.Audio.RegisterInListener`.
754 -->
755 <interface name="org.qemu.Display1.AudioInListener">
756 <!--
757 Init:
758 @id: the stream ID.
759 @bits: PCM bits per sample.
760 @is_signed: whether the PCM data is signed.
761 @is_float: PCM floating point format.
762 @freq: the PCM frequency in Hz.
763 @nchannels: the number of channels.
764 @bytes_per_frame: the bytes per frame.
765 @bytes_per_second: the bytes per second.
766 @be: whether using big-endian format.
767
768 Initializes a PCM record stream.
769 -->
770 <method name="Init">
771 <arg name="id" type="t" direction="in"/>
772 <arg name="bits" type="y" direction="in"/>
773 <arg name="is_signed" type="b" direction="in"/>
774 <arg name="is_float" type="b" direction="in"/>
775 <arg name="freq" type="u" direction="in"/>
776 <arg name="nchannels" type="y" direction="in"/>
777 <arg name="bytes_per_frame" type="u" direction="in"/>
778 <arg name="bytes_per_second" type="u" direction="in"/>
779 <arg name="be" type="b" direction="in"/>
780 </method>
781
782 <!--
783 Fini:
784 @id: the stream ID.
785
786 Finish & close a record stream.
787 -->
788 <method name="Fini">
789 <arg name="id" type="t" direction="in"/>
790 </method>
791
792 <!--
793 SetEnabled:
794 @id: the stream ID.
795
796 Resume or suspend the record stream.
797 -->
798 <method name="SetEnabled">
799 <arg name="id" type="t" direction="in"/>
800 <arg name="enabled" type="b" direction="in"/>
801 </method>
802
803 <!--
804 SetVolume:
805 @id: the stream ID.
806 @mute: whether the stream is muted.
807 @volume: the volume per-channel.
808
809 Set the stream volume and mute state (volume without unit, 0-255).
810 -->
811 <method name="SetVolume">
812 <arg name="id" type="t" direction="in"/>
813 <arg name="mute" type="b" direction="in"/>
814 <arg name="volume" type="ay" direction="in">
815 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
816 </arg>
817 </method>
818
819 <!--
820 Read:
821 @id: the stream ID.
822 @size: the amount to read, in bytes.
823 @data: the recorded data (which may be less than requested).
824
825 Read "size" bytes from the record stream.
826 -->
827 <method name="Read">
828 <arg name="id" type="t" direction="in"/>
829 <arg name="size" type="t" direction="in"/>
830 <arg type="ay" name="data" direction="out">
831 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
832 </arg>
833 </method>
834
835 <!--
836 Interfaces:
837
838 This property lists extra interfaces provided by the
839 /org/qemu/Display1/AudioInListener object, and can be used to detect
840 the capabilities with which they are communicating.
841
842 Unlike the standard D-Bus Introspectable interface, querying this
843 property does not require parsing XML.
844
845 (earlier version of the display interface do not provide this property)
846 -->
847 <property name="Interfaces" type="as" access="read"/>
848 </interface>
849
850 <!--
851 org.qemu.Display1.Chardev:
852
853 Character devices may be available on ``/org/qemu/Display1/Chardev_$id``.
854
855 They may be used for different kind of streams, which are identified via
856 their FQDN :dbus:prop:`Name`.
857
858 .. _dbus-chardev-fqdn:
859
860 Here are some known reserved kind names (the ``org.qemu`` prefix is
861 reserved by QEMU):
862
863 org.qemu.console.serial.0
864 A serial console stream.
865
866 org.qemu.monitor.hmp.0
867 A QEMU HMP human monitor.
868
869 org.qemu.monitor.qmp.0
870 A QEMU QMP monitor.
871
872 org.qemu.usbredir
873 A usbredir stream.
874 -->
875 <interface name="org.qemu.Display1.Chardev">
876 <!--
877 Register:
878 @stream: a Unix FD to redirect the stream to.
879
880 Register a file-descriptor for the stream handling.
881
882 The current handler, if any, will be replaced.
883 -->
884 <method name="Register">
885 <?if $(env.TARGETOS) == windows?>
886 <arg type="ay" name="listener" direction="in">
887 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
888 </arg>
889 <?else?>
890 <arg type="h" name="stream" direction="in"/>
891 <?endif?>
892 </method>
893
894 <!--
895 SendBreak:
896
897 Send a break event to the character device.
898 -->
899 <method name="SendBreak"/>
900
901 <!--
902 Name:
903
904 The FQDN name to identify the kind of stream. See :ref:`reserved
905 names<dbus-chardev-fqdn>`.
906 -->
907 <property name="Name" type="s" access="read"/>
908
909 <!--
910 FEOpened:
911
912 Whether the front-end side is opened.
913 -->
914 <property name="FEOpened" type="b" access="read"/>
915
916 <!--
917 Echo:
918
919 Whether the input should be echo'ed (for serial streams).
920 -->
921 <property name="Echo" type="b" access="read"/>
922
923 <!--
924 Owner:
925
926 The D-Bus unique name of the registered handler.
927 -->
928 <property name="Owner" type="s" access="read"/>
929
930 <!--
931 Interfaces:
932
933 This property lists extra interfaces provided by the
934 ``/org/qemu/Display1/Chardev_$i`` object, and can be used to detect
935 the capabilities with which they are communicating.
936
937 Unlike the standard D-Bus Introspectable interface, querying this
938 property does not require parsing XML.
939
940 (earlier version of the display interface do not provide this property)
941 -->
942 <property name="Interfaces" type="as" access="read"/>
943 </interface>
944 </node>