1 <?xml version="1.0" encoding="utf-8"?>
6 This interface is implemented on ``/org/qemu/Display1/VM``.
8 <interface name="org.qemu.Display1.VM">
14 <property name="Name" type="s" access="read"/>
21 <property name="UUID" type="s" access="read"/>
26 The list of consoles available on ``/org/qemu/Display1/Console_$id``.
28 <property name="ConsoleIDs" type="au" access="read"/>
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)
42 <property name="Interfaces" type="as" access="read"/>
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.
60 <interface name="org.qemu.Display1.Console">
63 @listener: a Unix socket FD, for peer-to-peer D-Bus communication.
65 Register a console listener, which will receive display updates, until
68 Multiple listeners may be registered simultaneously.
70 The listener is expected to implement the
71 :dbus:iface:`org.qemu.Display1.Listener` interface.
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"/>
79 <arg type="h" name="listener" direction="in"/>
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.
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"/>
106 A user-friendly name for the console (for ex: "VGA").
108 <property name="Label" type="s" access="read"/>
113 Graphical device head number.
115 <property name="Head" type="u" access="read"/>
120 Console type ("Graphic" or "Text").
122 <property name="Type" type="s" access="read"/>
127 Console width, in pixels.
129 <property name="Width" type="u" access="read"/>
134 Console height, in pixels.
136 <property name="Height" type="u" access="read"/>
141 The device address (ex: "pci/0000/02.0").
143 <property name="DeviceAddress" type="s" access="read"/>
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)
157 <property name="Interfaces" type="as" access="read"/>
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`).
167 <interface name="org.qemu.Display1.Keyboard">
170 @keycode: QEMU key number (xtkbd + special re-encoding of high bit)
172 Send a key press event.
174 <method name="Press">
175 <arg type="u" name="keycode" direction="in"/>
180 @keycode: QEMU key number (xtkbd + special re-encoding of high bit)
182 Send a key release event.
184 <method name="Release">
185 <arg type="u" name="keycode" direction="in"/>
191 The active keyboard modifiers::
197 <property name="Modifiers" type="u" access="read"/>
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:
219 <interface name="org.qemu.Display1.Mouse">
222 @button: :ref:`button value<dbus-button-values>`.
224 Send a mouse button press event.
226 <method name="Press">
227 <arg type="u" name="button" direction="in"/>
232 @button: :ref:`button value<dbus-button-values>`.
234 Send a mouse button release event.
236 <method name="Release">
237 <arg type="u" name="button" direction="in"/>
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`.
249 <method name="SetAbsPosition">
250 <arg type="u" name="x" direction="in"/>
251 <arg type="u" name="y" direction="in"/>
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`.
263 <method name="RelMotion">
264 <arg type="i" name="dx" direction="in"/>
265 <arg type="i" name="dy" direction="in"/>
271 Whether the mouse is using absolute movements.
273 <property name="IsAbsolute" type="b" access="read"/>
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:
291 <interface name="org.qemu.Display1.MultiTouch">
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.
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"/>
311 The maximum number of slots.
313 <property name="MaxSlots" type="i" access="read"/>
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`.
323 <interface name="org.qemu.Display1.Listener">
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``).
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.
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"/>
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.
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"/>
373 <?if $(env.TARGETOS) == windows?>
374 <!-- Add shared memory/texture support -->
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.
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"/>
395 <arg type="t" name="modifier" direction="in"/>
396 <arg type="b" name="y0_top" direction="in"/>
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.
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"/>
419 Disable the display (turn it off).
421 <method name="Disable">
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.
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"/>
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
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"/>
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)
471 <property name="Interfaces" type="as" access="read"/>
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**::
492 .. _dbus-clipboard-serial:
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.
506 <interface name="org.qemu.Display1.Clipboard">
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).
517 <method name="Register"/>
522 Unregister the clipboard session.
524 <method name="Unregister"/>
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.
534 <arg type="u" name="selection"/>
535 <arg type="u" name="serial"/>
536 <arg type="as" name="mimes"/>
541 @selection: a :ref:`selection value<dbus-clipboard-selection>`.
543 Release the clipboard (does nothing if not the current owner).
545 <method name="Release">
546 <arg type="u" name="selection"/>
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
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"/>
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)
582 <property name="Interfaces" type="as" access="read"/>
586 org.qemu.Display1.Audio:
588 Audio backend may be available on ``/org/qemu/Display1/Audio``.
590 <interface name="org.qemu.Display1.Audio">
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.
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"/>
608 <arg type="h" name="listener" direction="in"/>
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.
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"/>
629 <arg type="h" name="listener" direction="in"/>
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)
645 <property name="Interfaces" type="as" access="read"/>
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`.
655 <interface name="org.qemu.Display1.AudioOutListener">
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.
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"/>
686 Finish & close a playback stream.
689 <arg name="id" type="t" direction="in"/>
696 Resume or suspend the playback stream.
698 <method name="SetEnabled">
699 <arg name="id" type="t" direction="in"/>
700 <arg name="enabled" type="b" direction="in"/>
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).
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"/>
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"/>
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)
745 <property name="Interfaces" type="as" access="read"/>
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`.
755 <interface name="org.qemu.Display1.AudioInListener">
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.
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"/>
786 Finish & close a record stream.
789 <arg name="id" type="t" direction="in"/>
796 Resume or suspend the record stream.
798 <method name="SetEnabled">
799 <arg name="id" type="t" direction="in"/>
800 <arg name="enabled" type="b" direction="in"/>
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).
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"/>
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.
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"/>
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)
847 <property name="Interfaces" type="as" access="read"/>
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
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
875 <interface name="org.qemu.Display1.Chardev">
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.
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"/>
890 <arg type="h" name="stream" direction="in"/>
897 Send a break event to the character device.
899 <method name="SendBreak"/>
904 The FQDN name to identify the kind of stream. See :ref:`reserved
905 names<dbus-chardev-fqdn>`.
907 <property name="Name" type="s" access="read"/>
912 Whether the front-end side is opened.
914 <property name="FEOpened" type="b" access="read"/>
919 Whether the input should be echo'ed (for serial streams).
921 <property name="Echo" type="b" access="read"/>
926 The D-Bus unique name of the registered handler.
928 <property name="Owner" type="s" access="read"/>
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)
942 <property name="Interfaces" type="as" access="read"/>