console/win32: allocate shareable display surface
[qemu/ar7.git] / ui / dbus-display1.xml
blob06e8779c046bfd76466794d2e3e32408932ee7b5
1 <?xml version="1.0" encoding="utf-8"?>
2 <node>
3   <!--
4       org.qemu.Display1.VM:
6       This interface is implemented on ``/org/qemu/Display1/VM``.
7   -->
8   <interface name="org.qemu.Display1.VM">
9     <!--
10         Name:
12         The name of the VM.
13     -->
14     <property name="Name" type="s" access="read"/>
16     <!--
17         UUID:
19         The UUID of the VM.
20     -->
21     <property name="UUID" type="s" access="read"/>
23     <!--
24         ConsoleIDs:
26         The list of consoles available on ``/org/qemu/Display1/Console_$id``.
27     -->
28     <property name="ConsoleIDs" type="au" access="read"/>
30     <!--
31         Interfaces:
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.
37         Unlike the standard D-Bus Introspectable interface, querying this
38         property does not require parsing XML.
40         (earlier version of the display interface do not provide this property)
41     -->
42     <property name="Interfaces" type="as" access="read"/>
43   </interface>
45   <!--
46       org.qemu.Display1.Console:
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.
52       A console is attached to a video device head. It may be "Graphic" or
53       "Text" (see :dbus:prop:`Type` and other properties).
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.
65         Register a console listener, which will receive display updates, until
66         it is disconnected.
68         Multiple listeners may be registered simultaneously.
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>
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.
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>
103     <!--
104         Label:
106         A user-friendly name for the console (for ex: "VGA").
107     -->
108     <property name="Label" type="s" access="read"/>
110     <!--
111         Head:
113         Graphical device head number.
114     -->
115     <property name="Head" type="u" access="read"/>
117     <!--
118         Type:
120         Console type ("Graphic" or "Text").
121     -->
122     <property name="Type" type="s" access="read"/>
124     <!--
125         Width:
127         Console width, in pixels.
128     -->
129     <property name="Width" type="u" access="read"/>
131     <!--
132         Height:
134         Console height, in pixels.
135     -->
136     <property name="Height" type="u" access="read"/>
138     <!--
139         DeviceAddress:
141         The device address (ex: "pci/0000/02.0").
142     -->
143     <property name="DeviceAddress" type="s" access="read"/>
145     <!--
146         Interfaces:
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.
152         Unlike the standard D-Bus Introspectable interface, querying this
153         property does not require parsing XML.
155         (earlier version of the display interface do not provide this property)
156     -->
157     <property name="Interfaces" type="as" access="read"/>
158   </interface>
160   <!--
161       org.qemu.Display1.Keyboard:
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)
172         Send a key press event.
173     -->
174     <method name="Press">
175       <arg type="u" name="keycode" direction="in"/>
176     </method>
178     <!--
179         Release:
180         @keycode: QEMU key number (xtkbd + special re-encoding of high bit)
182         Send a key release event.
183     -->
184     <method name="Release">
185       <arg type="u" name="keycode" direction="in"/>
186     </method>
188     <!--
189         Modifiers:
191         The active keyboard modifiers::
193           Scroll = 1 << 0
194           Num    = 1 << 1
195           Caps   = 1 << 2
196     -->
197     <property name="Modifiers" type="u" access="read"/>
198   </interface>
200   <!--
201       org.qemu.Display1.Mouse:
203       This interface is optionally implemented on
204       ``/org/qemu/Display1/Console_$id`` (see
205       :dbus:iface:`~org.qemu.Display1.Console` documentation).
207       .. _dbus-button-values:
209       **Button values**::
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>`.
224         Send a mouse button press event.
225     -->
226     <method name="Press">
227       <arg type="u" name="button" direction="in"/>
228     </method>
230     <!--
231         Release:
232         @button: :ref:`button value<dbus-button-values>`.
234         Send a mouse button release event.
235     -->
236     <method name="Release">
237       <arg type="u" name="button" direction="in"/>
238     </method>
240     <!--
241         SetAbsPosition:
242         @x: X position, in pixels.
243         @y: Y position, in pixels.
245         Set the mouse pointer position.
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>
254     <!--
255         RelMotion:
256         @dx: X-delta, in pixels.
257         @dy: Y-delta, in pixels.
259         Move the mouse pointer position, relative to the current position.
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>
268     <!--
269         IsAbsolute:
271         Whether the mouse is using absolute movements.
272     -->
273     <property name="IsAbsolute" type="b" access="read"/>
274   </interface>
276   <!--
277       org.qemu.Display1.MultiTouch:
279       This interface in implemented on ``/org/qemu/Display1/Console_$id`` (see
280       :dbus:iface:`~org.qemu.Display1.Console` documentation).
282       .. _dbus-kind-values:
284       **Kind values**::
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.
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>
308     <!--
309         MaxSlots:
311         The maximum number of slots.
312     -->
313     <property name="MaxSlots" type="i" access="read"/>
314   </interface>
316   <!--
317       org.qemu.Display1.Listener:
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.
332         Resize and update the display content.
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>
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.
357         Update the display content.
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>
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.
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>
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.
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?>
416     <!--
417         Disable:
419         Disable the display (turn it off).
420     -->
421     <method name="Disable">
422     </method>
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.
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>
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.
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>
459     <!--
460         Interfaces:
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.
466         Unlike the standard D-Bus Introspectable interface, querying this
467         property does not require parsing XML.
469         (earlier version of the display interface do not provide this property)
470     -->
471     <property name="Interfaces" type="as" access="read"/>
472   </interface>
474   <!--
475       org.qemu.Display1.Clipboard:
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.
481       Once :dbus:meth:`Register`'ed, method calls may be sent and received in both
482       directions. Unregistered callers will get error replies.
484       .. _dbus-clipboard-selection:
486       **Selection values**::
488         Clipboard   = 0
489         Primary     = 1
490         Secondary   = 2
492       .. _dbus-clipboard-serial:
494       **Serial counter**
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.
500       When a grab with a lower serial is received, it should be discarded.
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:
510         Register a clipboard session and reinitialize the serial counter.
512         The client must register itself, and is granted an exclusive
513         access for handling the clipboard.
515         The server can reinitialize the session as well (to reset the counter).
516     -->
517     <method name="Register"/>
519     <!--
520         Unregister:
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.
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>
539     <!--
540         Release:
541         @selection: a :ref:`selection value<dbus-clipboard-selection>`.
543         Release the clipboard (does nothing if not the current owner).
544     -->
545     <method name="Release">
546       <arg type="u" name="selection"/>
547     </method>
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.
556         Request the clipboard content.
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>
570     <!--
571         Interfaces:
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.
577         Unlike the standard D-Bus Introspectable interface, querying this
578         property does not require parsing XML.
580         (earlier version of the display interface do not provide this property)
581     -->
582     <property name="Interfaces" type="as" access="read"/>
583   </interface>
585   <!--
586       org.qemu.Display1.Audio:
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.
595         Register an audio backend playback handler.
597         Multiple listeners may be registered simultaneously.
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>
612     <!--
613         RegisterInListener:
614         @listener: a Unix socket FD, for peer-to-peer D-Bus communication.
616         Register an audio backend record handler.
618         Multiple listeners may be registered simultaneously.
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>
633     <!--
634         Interfaces:
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.
640         Unlike the standard D-Bus Introspectable interface, querying this
641         property does not require parsing XML.
643         (earlier version of the display interface do not provide this property)
644     -->
645     <property name="Interfaces" type="as" access="read"/>
646   </interface>
648   <!--
649       org.qemu.Display1.AudioOutListener:
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.
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>
682     <!--
683         Fini:
684         @id: the stream ID.
686         Finish & close a playback stream.
687     -->
688     <method name="Fini">
689       <arg name="id" type="t" direction="in"/>
690     </method>
692     <!--
693         SetEnabled:
694         @id: the stream ID.
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>
703     <!--
704         SetVolume:
705         @id: the stream ID.
706         @mute: whether the stream is muted.
707         @volume: the volume per-channel.
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>
719     <!--
720         Write:
721         @id: the stream ID.
722         @data: the PCM data.
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>
733     <!--
734         Interfaces:
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.
740         Unlike the standard D-Bus Introspectable interface, querying this
741         property does not require parsing XML.
743         (earlier version of the display interface do not provide this property)
744     -->
745     <property name="Interfaces" type="as" access="read"/>
746   </interface>
748   <!--
749       org.qemu.Display1.AudioInListener:
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.
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>
782     <!--
783         Fini:
784         @id: the stream ID.
786         Finish & close a record stream.
787     -->
788     <method name="Fini">
789       <arg name="id" type="t" direction="in"/>
790     </method>
792     <!--
793         SetEnabled:
794         @id: the stream ID.
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>
803     <!--
804         SetVolume:
805         @id: the stream ID.
806         @mute: whether the stream is muted.
807         @volume: the volume per-channel.
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>
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).
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>
835     <!--
836         Interfaces:
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.
842         Unlike the standard D-Bus Introspectable interface, querying this
843         property does not require parsing XML.
845         (earlier version of the display interface do not provide this property)
846     -->
847     <property name="Interfaces" type="as" access="read"/>
848   </interface>
850   <!--
851       org.qemu.Display1.Chardev:
853       Character devices may be available on ``/org/qemu/Display1/Chardev_$id``.
855       They may be used for different kind of streams, which are identified via
856       their FQDN :dbus:prop:`Name`.
858       .. _dbus-chardev-fqdn:
860       Here are some known reserved kind names (the ``org.qemu`` prefix is
861       reserved by QEMU):
863       org.qemu.console.serial.0
864         A serial console stream.
866       org.qemu.monitor.hmp.0
867         A QEMU HMP human monitor.
869       org.qemu.monitor.qmp.0
870         A QEMU QMP monitor.
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.
880         Register a file-descriptor for the stream handling.
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>
894     <!--
895         SendBreak:
897         Send a break event to the character device.
898     -->
899     <method name="SendBreak"/>
901     <!--
902         Name:
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"/>
909     <!--
910         FEOpened:
912         Whether the front-end side is opened.
913     -->
914     <property name="FEOpened" type="b" access="read"/>
916     <!--
917         Echo:
919         Whether the input should be echo'ed (for serial streams).
920     -->
921     <property name="Echo" type="b" access="read"/>
923     <!--
924         Owner:
926         The D-Bus unique name of the registered handler.
927     -->
928     <property name="Owner" type="s" access="read"/>
930     <!--
931         Interfaces:
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.
937         Unlike the standard D-Bus Introspectable interface, querying this
938         property does not require parsing XML.
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>