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"/>
32 org.qemu.Display1.Console:
34 This interface is implemented on ``/org/qemu/Display1/Console_$id``. You
35 may discover available consoles through introspection or with the
36 :dbus:prop:`org.qemu.Display1.VM.ConsoleIDs` property.
38 A console is attached to a video device head. It may be "Graphic" or
39 "Text" (see :dbus:prop:`Type` and other properties).
41 Interactions with a console may be done with
42 :dbus:iface:`org.qemu.Display1.Keyboard` and
43 :dbus:iface:`org.qemu.Display1.Mouse` interfaces when available.
45 <interface name="org.qemu.Display1.Console">
48 @listener: a Unix socket FD, for peer-to-peer D-Bus communication.
50 Register a console listener, which will receive display updates, until
53 Multiple listeners may be registered simultaneously.
55 The listener is expected to implement the
56 :dbus:iface:`org.qemu.Display1.Listener` interface.
58 <method name="RegisterListener">
59 <arg type="h" name="listener" direction="in"/>
64 @width_mm: the physical display width in millimeters.
65 @height_mm: the physical display height in millimeters.
66 @xoff: horizontal offset, in pixels.
67 @yoff: vertical offset, in pixels.
68 @width: console width, in pixels.
69 @height: console height, in pixels.
71 Modify the dimensions and display settings.
73 <method name="SetUIInfo">
74 <arg name="width_mm" type="q" direction="in"/>
75 <arg name="height_mm" type="q" direction="in"/>
76 <arg name="xoff" type="i" direction="in"/>
77 <arg name="yoff" type="i" direction="in"/>
78 <arg name="width" type="u" direction="in"/>
79 <arg name="height" type="u" direction="in"/>
85 A user-friendly name for the console (for ex: "VGA").
87 <property name="Label" type="s" access="read"/>
92 Graphical device head number.
94 <property name="Head" type="u" access="read"/>
99 Console type ("Graphic" or "Text").
101 <property name="Type" type="s" access="read"/>
106 Console width, in pixels.
108 <property name="Width" type="u" access="read"/>
113 Console height, in pixels.
115 <property name="Height" type="u" access="read"/>
120 The device address (ex: "pci/0000/02.0").
122 <property name="DeviceAddress" type="s" access="read"/>
126 org.qemu.Display1.Keyboard:
128 This interface in implemented on ``/org/qemu/Display1/Console_$id`` (see
129 :dbus:iface:`~org.qemu.Display1.Console`).
131 <interface name="org.qemu.Display1.Keyboard">
134 @keycode: QEMU key number (xtkbd + special re-encoding of high bit)
136 Send a key press event.
138 <method name="Press">
139 <arg type="u" name="keycode" direction="in"/>
144 @keycode: QEMU key number (xtkbd + special re-encoding of high bit)
146 Send a key release event.
148 <method name="Release">
149 <arg type="u" name="keycode" direction="in"/>
155 The active keyboard modifiers::
161 <property name="Modifiers" type="u" access="read"/>
165 org.qemu.Display1.Mouse:
167 This interface in implemented on ``/org/qemu/Display1/Console_$id`` (see
168 :dbus:iface:`~org.qemu.Display1.Console` documentation).
170 .. _dbus-button-values:
182 <interface name="org.qemu.Display1.Mouse">
185 @button: :ref:`button value<dbus-button-values>`.
187 Send a mouse button press event.
189 <method name="Press">
190 <arg type="u" name="button" direction="in"/>
195 @button: :ref:`button value<dbus-button-values>`.
197 Send a mouse button release event.
199 <method name="Release">
200 <arg type="u" name="button" direction="in"/>
205 @x: X position, in pixels.
206 @y: Y position, in pixels.
208 Set the mouse pointer position.
210 Returns an error if not :dbus:prop:`IsAbsolute`.
212 <method name="SetAbsPosition">
213 <arg type="u" name="x" direction="in"/>
214 <arg type="u" name="y" direction="in"/>
219 @dx: X-delta, in pixels.
220 @dy: Y-delta, in pixels.
222 Move the mouse pointer position, relative to the current position.
224 Returns an error if :dbus:prop:`IsAbsolute`.
226 <method name="RelMotion">
227 <arg type="i" name="dx" direction="in"/>
228 <arg type="i" name="dy" direction="in"/>
234 Whether the mouse is using absolute movements.
236 <property name="IsAbsolute" type="b" access="read"/>
240 org.qemu.Display1.Listener:
242 This client-side interface must be available on
243 ``/org/qemu/Display1/Listener`` when registering the peer-to-peer
244 connection with :dbus:meth:`~org.qemu.Display1.Console.Register`.
246 <interface name="org.qemu.Display1.Listener">
249 @width: display width, in pixels.
250 @height: display height, in pixels.
251 @stride: data stride, in bytes.
252 @pixman_format: image format (ex: ``PIXMAN_X8R8G8B8``).
255 Resize and update the display content.
257 The data to transfer for the display update may be large. The preferred
258 scanout method is :dbus:meth:`ScanoutDMABUF`, used whenever possible.
260 <method name="Scanout">
261 <arg type="u" name="width" direction="in"/>
262 <arg type="u" name="height" direction="in"/>
263 <arg type="u" name="stride" direction="in"/>
264 <arg type="u" name="pixman_format" direction="in"/>
265 <arg type="ay" name="data" direction="in">
266 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
272 @x: X update position, in pixels.
273 @y: Y update position, in pixels.
274 @width: update width, in pixels.
275 @height: update height, in pixels.
276 @stride: data stride, in bytes.
277 @pixman_format: image format (ex: ``PIXMAN_X8R8G8B8``).
278 @data: display image data.
280 Update the display content.
282 This method is only called after a :dbus:meth:`Scanout` call.
284 <method name="Update">
285 <arg type="i" name="x" direction="in"/>
286 <arg type="i" name="y" direction="in"/>
287 <arg type="i" name="width" direction="in"/>
288 <arg type="i" name="height" direction="in"/>
289 <arg type="u" name="stride" direction="in"/>
290 <arg type="u" name="pixman_format" direction="in"/>
291 <arg type="ay" name="data" direction="in">
292 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
298 @dmabuf: the DMABUF file descriptor.
299 @width: display width, in pixels.
300 @height: display height, in pixels.
301 @stride: stride, in bytes.
302 @fourcc: DMABUF fourcc.
303 @modifier: DMABUF modifier.
304 @y0_top: whether Y position 0 is the top or not.
306 Resize and update the display content with a DMABUF.
308 <method name="ScanoutDMABUF">
309 <arg type="h" name="dmabuf" direction="in"/>
310 <arg type="u" name="width" direction="in"/>
311 <arg type="u" name="height" direction="in"/>
312 <arg type="u" name="stride" direction="in"/>
313 <arg type="u" name="fourcc" direction="in"/>
315 <arg type="t" name="modifier" direction="in"/>
316 <arg type="b" name="y0_top" direction="in"/>
321 @x: the X update position, in pixels.
322 @y: the Y update position, in pixels.
323 @width: the update width, in pixels.
324 @height: the update height, in pixels.
326 Update the display content with the current DMABUF and the given region.
328 <method name="UpdateDMABUF">
329 <arg type="i" name="x" direction="in"/>
330 <arg type="i" name="y" direction="in"/>
331 <arg type="i" name="width" direction="in"/>
332 <arg type="i" name="height" direction="in"/>
338 Disable the display (turn it off).
340 <method name="Disable">
345 @x: X mouse position, in pixels.
346 @y: Y mouse position, in pixels.
347 @on: whether the mouse is visible or not.
349 Set the mouse position and visibility.
351 <method name="MouseSet">
352 <arg type="i" name="x" direction="in"/>
353 <arg type="i" name="y" direction="in"/>
354 <arg type="i" name="on" direction="in"/>
359 @width: cursor width, in pixels.
360 @height: cursor height, in pixels.
361 @hot_x: hot-spot X position, in pixels.
362 @hot_y: hot-spot Y position, in pixels.
363 @data: the cursor data.
365 Set the mouse cursor shape and hot-spot. The "data" must be ARGB, 32-bit
368 <method name="CursorDefine">
369 <arg type="i" name="width" direction="in"/>
370 <arg type="i" name="height" direction="in"/>
371 <arg type="i" name="hot_x" direction="in"/>
372 <arg type="i" name="hot_y" direction="in"/>
373 <arg type="ay" name="data" direction="in">
374 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
380 org.qemu.Display1.Clipboard:
382 This interface must be implemented by both the client and the server on
383 ``/org/qemu/Display1/Clipboard`` to support clipboard sharing between
384 the client and the guest.
386 Once :dbus:meth:`Register`'ed, method calls may be sent and received in both
387 directions. Unregistered callers will get error replies.
389 .. _dbus-clipboard-selection:
391 **Selection values**::
397 .. _dbus-clipboard-serial:
401 To solve potential clipboard races, clipboard grabs have an associated
402 serial counter. It is set to 0 on registration, and incremented by 1 for
403 each grab. The peer with the highest serial is the clipboard grab owner.
405 When a grab with a lower serial is received, it should be discarded.
407 When a grab is attempted with the same serial number as the current grab,
408 the one coming from the client should have higher priority, and the client
409 should gain clipboard grab ownership.
411 <interface name="org.qemu.Display1.Clipboard">
415 Register a clipboard session and reinitialize the serial counter.
417 The client must register itself, and is granted an exclusive
418 access for handling the clipboard.
420 The server can reinitialize the session as well (to reset the counter).
422 <method name="Register"/>
427 Unregister the clipboard session.
429 <method name="Unregister"/>
432 @selection: a :ref:`selection value<dbus-clipboard-selection>`.
433 @serial: the current grab :ref:`serial<dbus-clipboard-serial>`.
434 @mimes: the list of available content MIME types.
436 Grab the clipboard, claiming current clipboard content.
439 <arg type="u" name="selection"/>
440 <arg type="u" name="serial"/>
441 <arg type="as" name="mimes"/>
446 @selection: a :ref:`selection value<dbus-clipboard-selection>`.
448 Release the clipboard (does nothing if not the current owner).
450 <method name="Release">
451 <arg type="u" name="selection"/>
456 @selection: a :ref:`selection value<dbus-clipboard-selection>`
457 @mimes: requested MIME types (by order of preference).
458 @reply_mime: the returned data MIME type.
459 @data: the clipboard data.
461 Request the clipboard content.
463 Return an error if the clipboard is empty, or the requested MIME types
466 <method name="Request">
467 <arg type="u" name="selection"/>
468 <arg type="as" name="mimes"/>
469 <arg type="s" name="reply_mime" direction="out"/>
470 <arg type="ay" name="data" direction="out">
471 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
477 org.qemu.Display1.Audio:
479 Audio backend may be available on ``/org/qemu/Display1/Audio``.
481 <interface name="org.qemu.Display1.Audio">
484 @listener: a Unix socket FD, for peer-to-peer D-Bus communication.
486 Register an audio backend playback handler.
488 Multiple listeners may be registered simultaneously.
490 The listener is expected to implement the
491 :dbus:iface:`org.qemu.Display1.AudioOutListener` interface.
493 <method name="RegisterOutListener">
494 <arg type="h" name="listener" direction="in"/>
499 @listener: a Unix socket FD, for peer-to-peer D-Bus communication.
501 Register an audio backend record handler.
503 Multiple listeners may be registered simultaneously.
505 The listener is expected to implement the
506 :dbus:iface:`org.qemu.Display1.AudioInListener` interface.
508 <method name="RegisterInListener">
509 <arg type="h" name="listener" direction="in"/>
514 org.qemu.Display1.AudioOutListener:
516 This client-side interface must be available on
517 ``/org/qemu/Display1/AudioOutListener`` when registering the peer-to-peer
518 connection with :dbus:meth:`~org.qemu.Display1.Audio.RegisterOutListener`.
520 <interface name="org.qemu.Display1.AudioOutListener">
524 @bits: PCM bits per sample.
525 @is_signed: whether the PCM data is signed.
526 @is_float: PCM floating point format.
527 @freq: the PCM frequency in Hz.
528 @nchannels: the number of channels.
529 @bytes_per_frame: the bytes per frame.
530 @bytes_per_second: the bytes per second.
531 @be: whether using big-endian format.
533 Initializes a PCM playback stream.
536 <arg name="id" type="t" direction="in"/>
537 <arg name="bits" type="y" direction="in"/>
538 <arg name="is_signed" type="b" direction="in"/>
539 <arg name="is_float" type="b" direction="in"/>
540 <arg name="freq" type="u" direction="in"/>
541 <arg name="nchannels" type="y" direction="in"/>
542 <arg name="bytes_per_frame" type="u" direction="in"/>
543 <arg name="bytes_per_second" type="u" direction="in"/>
544 <arg name="be" type="b" direction="in"/>
551 Finish & close a playback stream.
554 <arg name="id" type="t" direction="in"/>
561 Resume or suspend the playback stream.
563 <method name="SetEnabled">
564 <arg name="id" type="t" direction="in"/>
565 <arg name="enabled" type="b" direction="in"/>
571 @mute: whether the stream is muted.
572 @volume: the volume per-channel.
574 Set the stream volume and mute state (volume without unit, 0-255).
576 <method name="SetVolume">
577 <arg name="id" type="t" direction="in"/>
578 <arg name="mute" type="b" direction="in"/>
579 <arg name="volume" type="ay" direction="in">
580 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
591 <method name="Write">
592 <arg name="id" type="t" direction="in"/>
593 <arg type="ay" name="data" direction="in">
594 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
600 org.qemu.Display1.AudioInListener:
602 This client-side interface must be available on
603 ``/org/qemu/Display1/AudioInListener`` when registering the peer-to-peer
604 connection with :dbus:meth:`~org.qemu.Display1.Audio.RegisterInListener`.
606 <interface name="org.qemu.Display1.AudioInListener">
610 @bits: PCM bits per sample.
611 @is_signed: whether the PCM data is signed.
612 @is_float: PCM floating point format.
613 @freq: the PCM frequency in Hz.
614 @nchannels: the number of channels.
615 @bytes_per_frame: the bytes per frame.
616 @bytes_per_second: the bytes per second.
617 @be: whether using big-endian format.
619 Initializes a PCM record stream.
622 <arg name="id" type="t" direction="in"/>
623 <arg name="bits" type="y" direction="in"/>
624 <arg name="is_signed" type="b" direction="in"/>
625 <arg name="is_float" type="b" direction="in"/>
626 <arg name="freq" type="u" direction="in"/>
627 <arg name="nchannels" type="y" direction="in"/>
628 <arg name="bytes_per_frame" type="u" direction="in"/>
629 <arg name="bytes_per_second" type="u" direction="in"/>
630 <arg name="be" type="b" direction="in"/>
637 Finish & close a record stream.
640 <arg name="id" type="t" direction="in"/>
647 Resume or suspend the record stream.
649 <method name="SetEnabled">
650 <arg name="id" type="t" direction="in"/>
651 <arg name="enabled" type="b" direction="in"/>
657 @mute: whether the stream is muted.
658 @volume: the volume per-channel.
660 Set the stream volume and mute state (volume without unit, 0-255).
662 <method name="SetVolume">
663 <arg name="id" type="t" direction="in"/>
664 <arg name="mute" type="b" direction="in"/>
665 <arg name="volume" type="ay" direction="in">
666 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
673 @size: the amount to read, in bytes.
674 @data: the recorded data (which may be less than requested).
676 Read "size" bytes from the record stream.
679 <arg name="id" type="t" direction="in"/>
680 <arg name="size" type="t" direction="in"/>
681 <arg type="ay" name="data" direction="out">
682 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
688 org.qemu.Display1.Chardev:
690 Character devices may be available on ``/org/qemu/Display1/Chardev_$id``.
692 They may be used for different kind of streams, which are identified via
693 their FQDN :dbus:prop:`Name`.
695 .. _dbus-chardev-fqdn:
697 Here are some known reserved kind names (the ``org.qemu`` prefix is
700 org.qemu.console.serial.0
701 A serial console stream.
703 org.qemu.monitor.hmp.0
704 A QEMU HMP human monitor.
706 org.qemu.monitor.qmp.0
712 <interface name="org.qemu.Display1.Chardev">
715 @stream: a Unix FD to redirect the stream to.
717 Register a file-descriptor for the stream handling.
719 The current handler, if any, will be replaced.
721 <method name="Register">
722 <arg type="h" name="stream" direction="in"/>
728 Send a break event to the character device.
730 <method name="SendBreak"/>
735 The FQDN name to identify the kind of stream. See :ref:`reserved
736 names<dbus-chardev-fqdn>`.
738 <property name="Name" type="s" access="read"/>
743 Whether the front-end side is opened.
745 <property name="FEOpened" type="b" access="read"/>
750 Whether the input should be echo'ed (for serial streams).
752 <property name="Echo" type="b" access="read"/>
757 The D-Bus unique name of the registered handler.
759 <property name="Owner" type="s" access="read"/>