##
# @SetPasswordOptionsVnc:
#
-# Options for set_password specific to the VNC procotol.
+# Options for set_password specific to the VNC protocol.
#
# @display: The id of the display where the password should be
# changed. Defaults to the first.
#
# Set the password of a remote display server.
#
-# Returns:
-# - Nothing on success
+# Errors:
# - If Spice is not enabled, DeviceNotFound
#
# Since: 0.14
#
# Example:
#
-# -> { "execute": "set_password", "arguments": { "protocol": "vnc",
-# "password": "secret" } }
-# <- { "return": {} }
+# -> { "execute": "set_password", "arguments": { "protocol": "vnc",
+# "password": "secret" } }
+# <- { "return": {} }
##
{ 'command': 'set_password', 'boxed': true, 'data': 'SetPasswordOptions' }
##
# @ExpirePasswordOptionsVnc:
#
-# Options for expire_password specific to the VNC procotol.
+# Options for expire_password specific to the VNC protocol.
#
# @display: The id of the display where the expiration should be
# changed. Defaults to the first.
#
# Expire the password of a remote display server.
#
-# Returns:
-# - Nothing on success
+# Errors:
# - If @protocol is 'spice' and Spice is not active,
# DeviceNotFound
#
#
# Example:
#
-# -> { "execute": "expire_password", "arguments": { "protocol": "vnc",
-# "time": "+60" } }
-# <- { "return": {} }
+# -> { "execute": "expire_password", "arguments": { "protocol": "vnc",
+# "time": "+60" } }
+# <- { "return": {} }
##
{ 'command': 'expire_password', 'boxed': true, 'data': 'ExpirePasswordOptions' }
# @head: head to use in case the device supports multiple heads. If
# this parameter is missing, head #0 will be used. Also note that
# the head can only be specified in conjunction with the device
-# ID. (Since 2.12)
+# ID. (Since 2.12)
#
# @format: image format for screendump. (default: ppm) (Since 7.1)
#
-# Returns: Nothing on success
-#
# Since: 0.14
#
# Example:
#
-# -> { "execute": "screendump",
-# "arguments": { "filename": "/tmp/image" } }
-# <- { "return": {} }
+# -> { "execute": "screendump",
+# "arguments": { "filename": "/tmp/image" } }
+# <- { "return": {} }
##
{ 'command': 'screendump',
'data': {'filename': 'str', '*device': 'str', '*head': 'int',
'*format': 'ImageFormat'},
- 'coroutine': true }
+ 'coroutine': true,
+ 'if': 'CONFIG_PIXMAN' }
##
# == Spice
# @enabled: true if the SPICE server is enabled, false otherwise
#
# @migrated: true if the last guest migration completed and spice
-# migration had completed as well. false otherwise. (since 1.4)
+# migration had completed as well, false otherwise (since 1.4)
#
# @host: The hostname the SPICE server is bound to. This depends on
# the name resolution on the host and may be an IP address.
#
# @auth: the current authentication type used by the server
#
-# - 'none' if no authentication is being used
+# - 'none' if no authentication is being used
# - 'spice' uses SASL or direct TLS authentication, depending on
# command line options
#
#
# Example:
#
-# -> { "execute": "query-spice" }
-# <- { "return": {
-# "enabled": true,
-# "auth": "spice",
-# "port": 5920,
-# "migrated":false,
-# "tls-port": 5921,
-# "host": "0.0.0.0",
-# "mouse-mode":"client",
-# "channels": [
-# {
-# "port": "54924",
-# "family": "ipv4",
-# "channel-type": 1,
-# "connection-id": 1804289383,
-# "host": "127.0.0.1",
-# "channel-id": 0,
-# "tls": true
-# },
-# {
-# "port": "36710",
-# "family": "ipv4",
-# "channel-type": 4,
-# "connection-id": 1804289383,
-# "host": "127.0.0.1",
-# "channel-id": 0,
-# "tls": false
-# },
-# [ ... more channels follow ... ]
-# ]
-# }
-# }
+# -> { "execute": "query-spice" }
+# <- { "return": {
+# "enabled": true,
+# "auth": "spice",
+# "port": 5920,
+# "migrated":false,
+# "tls-port": 5921,
+# "host": "0.0.0.0",
+# "mouse-mode":"client",
+# "channels": [
+# {
+# "port": "54924",
+# "family": "ipv4",
+# "channel-type": 1,
+# "connection-id": 1804289383,
+# "host": "127.0.0.1",
+# "channel-id": 0,
+# "tls": true
+# },
+# {
+# "port": "36710",
+# "family": "ipv4",
+# "channel-type": 4,
+# "connection-id": 1804289383,
+# "host": "127.0.0.1",
+# "channel-id": 0,
+# "tls": false
+# },
+# [ ... more channels follow ... ]
+# ]
+# }
+# }
##
{ 'command': 'query-spice', 'returns': 'SpiceInfo',
'if': 'CONFIG_SPICE' }
#
# Example:
#
-# <- { "timestamp": {"seconds": 1290688046, "microseconds": 388707},
-# "event": "SPICE_CONNECTED",
-# "data": {
-# "server": { "port": "5920", "family": "ipv4", "host": "127.0.0.1"},
-# "client": {"port": "52873", "family": "ipv4", "host": "127.0.0.1"}
-# }}
+# <- { "timestamp": {"seconds": 1290688046, "microseconds": 388707},
+# "event": "SPICE_CONNECTED",
+# "data": {
+# "server": { "port": "5920", "family": "ipv4", "host": "127.0.0.1"},
+# "client": {"port": "52873", "family": "ipv4", "host": "127.0.0.1"}
+# }}
##
{ 'event': 'SPICE_CONNECTED',
'data': { 'server': 'SpiceBasicInfo',
#
# Example:
#
-# <- { "timestamp": {"seconds": 1290688046, "microseconds": 417172},
-# "event": "SPICE_INITIALIZED",
-# "data": {"server": {"auth": "spice", "port": "5921",
-# "family": "ipv4", "host": "127.0.0.1"},
-# "client": {"port": "49004", "family": "ipv4", "channel-type": 3,
-# "connection-id": 1804289383, "host": "127.0.0.1",
-# "channel-id": 0, "tls": true}
-# }}
+# <- { "timestamp": {"seconds": 1290688046, "microseconds": 417172},
+# "event": "SPICE_INITIALIZED",
+# "data": {"server": {"auth": "spice", "port": "5921",
+# "family": "ipv4", "host": "127.0.0.1"},
+# "client": {"port": "49004", "family": "ipv4", "channel-type": 3,
+# "connection-id": 1804289383, "host": "127.0.0.1",
+# "channel-id": 0, "tls": true}
+# }}
##
{ 'event': 'SPICE_INITIALIZED',
'data': { 'server': 'SpiceServerInfo',
#
# Example:
#
-# <- { "timestamp": {"seconds": 1290688046, "microseconds": 388707},
-# "event": "SPICE_DISCONNECTED",
-# "data": {
-# "server": { "port": "5920", "family": "ipv4", "host": "127.0.0.1"},
-# "client": {"port": "52873", "family": "ipv4", "host": "127.0.0.1"}
-# }}
+# <- { "timestamp": {"seconds": 1290688046, "microseconds": 388707},
+# "event": "SPICE_DISCONNECTED",
+# "data": {
+# "server": { "port": "5920", "family": "ipv4", "host": "127.0.0.1"},
+# "client": {"port": "52873", "family": "ipv4", "host": "127.0.0.1"}
+# }}
##
{ 'event': 'SPICE_DISCONNECTED',
'data': { 'server': 'SpiceBasicInfo',
#
# Example:
#
-# <- { "timestamp": {"seconds": 1290688046, "microseconds": 417172},
-# "event": "SPICE_MIGRATE_COMPLETED" }
+# <- { "timestamp": {"seconds": 1290688046, "microseconds": 417172},
+# "event": "SPICE_MIGRATE_COMPLETED" }
##
{ 'event': 'SPICE_MIGRATE_COMPLETED',
'if': 'CONFIG_SPICE' }
#
# Example:
#
-# -> { "execute": "query-vnc" }
-# <- { "return": {
-# "enabled":true,
-# "host":"0.0.0.0",
-# "service":"50402",
-# "auth":"vnc",
-# "family":"ipv4",
-# "clients":[
-# {
-# "host":"127.0.0.1",
-# "service":"50401",
-# "family":"ipv4",
-# "websocket":false
-# }
-# ]
-# }
-# }
+# -> { "execute": "query-vnc" }
+# <- { "return": {
+# "enabled":true,
+# "host":"0.0.0.0",
+# "service":"50402",
+# "auth":"vnc",
+# "family":"ipv4",
+# "clients":[
+# {
+# "host":"127.0.0.1",
+# "service":"50401",
+# "family":"ipv4",
+# "websocket":false
+# }
+# ]
+# }
+# }
##
{ 'command': 'query-vnc', 'returns': 'VncInfo',
'if': 'CONFIG_VNC' }
#
# Example:
#
-# <- { "event": "VNC_CONNECTED",
-# "data": {
-# "server": { "auth": "sasl", "family": "ipv4", "websocket": false,
-# "service": "5901", "host": "0.0.0.0" },
-# "client": { "family": "ipv4", "service": "58425",
-# "host": "127.0.0.1", "websocket": false } },
-# "timestamp": { "seconds": 1262976601, "microseconds": 975795 } }
+# <- { "event": "VNC_CONNECTED",
+# "data": {
+# "server": { "auth": "sasl", "family": "ipv4", "websocket": false,
+# "service": "5901", "host": "0.0.0.0" },
+# "client": { "family": "ipv4", "service": "58425",
+# "host": "127.0.0.1", "websocket": false } },
+# "timestamp": { "seconds": 1262976601, "microseconds": 975795 } }
##
{ 'event': 'VNC_CONNECTED',
'data': { 'server': 'VncServerInfo',
#
# Example:
#
-# <- { "event": "VNC_INITIALIZED",
-# "data": {
-# "server": { "auth": "sasl", "family": "ipv4", "websocket": false,
-# "service": "5901", "host": "0.0.0.0"},
-# "client": { "family": "ipv4", "service": "46089", "websocket": false,
-# "host": "127.0.0.1", "sasl_username": "luiz" } },
-# "timestamp": { "seconds": 1263475302, "microseconds": 150772 } }
+# <- { "event": "VNC_INITIALIZED",
+# "data": {
+# "server": { "auth": "sasl", "family": "ipv4", "websocket": false,
+# "service": "5901", "host": "0.0.0.0"},
+# "client": { "family": "ipv4", "service": "46089", "websocket": false,
+# "host": "127.0.0.1", "sasl_username": "luiz" } },
+# "timestamp": { "seconds": 1263475302, "microseconds": 150772 } }
##
{ 'event': 'VNC_INITIALIZED',
'data': { 'server': 'VncServerInfo',
#
# Example:
#
-# <- { "event": "VNC_DISCONNECTED",
-# "data": {
-# "server": { "auth": "sasl", "family": "ipv4", "websocket": false,
-# "service": "5901", "host": "0.0.0.0" },
-# "client": { "family": "ipv4", "service": "58425", "websocket": false,
-# "host": "127.0.0.1", "sasl_username": "luiz" } },
-# "timestamp": { "seconds": 1262976601, "microseconds": 975795 } }
+# <- { "event": "VNC_DISCONNECTED",
+# "data": {
+# "server": { "auth": "sasl", "family": "ipv4", "websocket": false,
+# "service": "5901", "host": "0.0.0.0" },
+# "client": { "family": "ipv4", "service": "58425", "websocket": false,
+# "host": "127.0.0.1", "sasl_username": "luiz" } },
+# "timestamp": { "seconds": 1262976601, "microseconds": 975795 } }
##
{ 'event': 'VNC_DISCONNECTED',
'data': { 'server': 'VncServerInfo',
#
# Example:
#
-# -> { "execute": "query-mice" }
-# <- { "return": [
-# {
-# "name":"QEMU Microsoft Mouse",
-# "index":0,
-# "current":false,
-# "absolute":false
-# },
-# {
-# "name":"QEMU PS/2 Mouse",
-# "index":1,
-# "current":true,
-# "absolute":true
-# }
-# ]
-# }
+# -> { "execute": "query-mice" }
+# <- { "return": [
+# {
+# "name":"QEMU Microsoft Mouse",
+# "index":0,
+# "current":false,
+# "absolute":false
+# },
+# {
+# "name":"QEMU PS/2 Mouse",
+# "index":1,
+# "current":true,
+# "absolute":true
+# }
+# ]
+# }
##
{ 'command': 'query-mice', 'returns': ['MouseInfo'] }
##
# @IntWrapper:
#
+# @data: a numeric key code
+#
# Since: 1.3
##
{ 'struct': 'IntWrapper',
##
# @QKeyCodeWrapper:
#
+# @data: An enumeration of key name
+#
# Since: 1.3
##
{ 'struct': 'QKeyCodeWrapper',
#
# Represents a keyboard key.
#
+# @type: key encoding
+#
# Since: 1.3
##
{ 'union': 'KeyValue',
# @hold-time: time to delay key up events, milliseconds. Defaults to
# 100
#
-# Returns:
-# - Nothing on success
+# Errors:
# - If key is unknown or redundant, GenericError
#
# Since: 1.3
#
# Example:
#
-# -> { "execute": "send-key",
-# "arguments": { "keys": [ { "type": "qcode", "data": "ctrl" },
-# { "type": "qcode", "data": "alt" },
-# { "type": "qcode", "data": "delete" } ] } }
-# <- { "return": {} }
+# -> { "execute": "send-key",
+# "arguments": { "keys": [ { "type": "qcode", "data": "ctrl" },
+# { "type": "qcode", "data": "alt" },
+# { "type": "qcode", "data": "delete" } ] } }
+# <- { "return": {} }
##
{ 'command': 'send-key',
'data': { 'keys': ['KeyValue'], '*hold-time': 'int' } }
#
# Type of a multi-touch event.
#
+# @begin: A new touch event sequence has just started.
+#
+# @update: A touch event sequence has been updated.
+#
+# @end: A touch event sequence has finished.
+#
+# @cancel: A touch event sequence has been canceled.
+#
+# @data: Absolute position data.
+#
# Since: 8.1
##
{ 'enum' : 'InputMultiTouchType',
#
# MultiTouch input event.
#
+# @type: The type of multi-touch event.
+#
# @slot: Which slot has generated the event.
#
# @tracking-id: ID to correlate this event with previously generated
##
# @InputKeyEventWrapper:
#
+# @data: Keyboard input event
+#
# Since: 2.0
##
{ 'struct': 'InputKeyEventWrapper',
##
# @InputBtnEventWrapper:
#
+# @data: Pointer button input event
+#
# Since: 2.0
##
{ 'struct': 'InputBtnEventWrapper',
##
# @InputMoveEventWrapper:
#
+# @data: Pointer motion input event
+#
# Since: 2.0
##
{ 'struct': 'InputMoveEventWrapper',
##
# @InputMultiTouchEventWrapper:
#
+# @data: MultiTouch input event
+#
# Since: 8.1
##
{ 'struct': 'InputMultiTouchEventWrapper',
#
# @events: List of InputEvent union.
#
-# Returns: Nothing on success.
-#
# Since: 2.6
#
# Note: The consoles are visible in the qom tree, under
#
# Examples:
#
-# 1. Press left mouse button.
+# 1. Press left mouse button.
#
-# -> { "execute": "input-send-event",
-# "arguments": { "device": "video0",
-# "events": [ { "type": "btn",
-# "data" : { "down": true, "button": "left" } } ] } }
-# <- { "return": {} }
+# -> { "execute": "input-send-event",
+# "arguments": { "device": "video0",
+# "events": [ { "type": "btn",
+# "data" : { "down": true, "button": "left" } } ] } }
+# <- { "return": {} }
#
-# -> { "execute": "input-send-event",
-# "arguments": { "device": "video0",
-# "events": [ { "type": "btn",
-# "data" : { "down": false, "button": "left" } } ] } }
-# <- { "return": {} }
+# -> { "execute": "input-send-event",
+# "arguments": { "device": "video0",
+# "events": [ { "type": "btn",
+# "data" : { "down": false, "button": "left" } } ] } }
+# <- { "return": {} }
#
-# 2. Press ctrl-alt-del.
+# 2. Press ctrl-alt-del.
#
-# -> { "execute": "input-send-event",
-# "arguments": { "events": [
-# { "type": "key", "data" : { "down": true,
-# "key": {"type": "qcode", "data": "ctrl" } } },
-# { "type": "key", "data" : { "down": true,
-# "key": {"type": "qcode", "data": "alt" } } },
-# { "type": "key", "data" : { "down": true,
-# "key": {"type": "qcode", "data": "delete" } } } ] } }
-# <- { "return": {} }
+# -> { "execute": "input-send-event",
+# "arguments": { "events": [
+# { "type": "key", "data" : { "down": true,
+# "key": {"type": "qcode", "data": "ctrl" } } },
+# { "type": "key", "data" : { "down": true,
+# "key": {"type": "qcode", "data": "alt" } } },
+# { "type": "key", "data" : { "down": true,
+# "key": {"type": "qcode", "data": "delete" } } } ] } }
+# <- { "return": {} }
#
-# 3. Move mouse pointer to absolute coordinates (20000, 400).
+# 3. Move mouse pointer to absolute coordinates (20000, 400).
#
-# -> { "execute": "input-send-event" ,
-# "arguments": { "events": [
-# { "type": "abs", "data" : { "axis": "x", "value" : 20000 } },
-# { "type": "abs", "data" : { "axis": "y", "value" : 400 } } ] } }
-# <- { "return": {} }
+# -> { "execute": "input-send-event" ,
+# "arguments": { "events": [
+# { "type": "abs", "data" : { "axis": "x", "value" : 20000 } },
+# { "type": "abs", "data" : { "axis": "y", "value" : 400 } } ] } }
+# <- { "return": {} }
##
{ 'command': 'input-send-event',
'data': { '*device': 'str',
# display device can notify the guest on window resizes
# (virtio-gpu) this will default to "on", assuming the guest will
# resize the display to match the window size then. Otherwise it
-# defaults to "off". (Since 3.1)
+# defaults to "off". (Since 3.1)
#
# @show-tabs: Display the tab bar for switching between the various
-# graphical interfaces (e.g. VGA and virtual console character
+# graphical interfaces (e.g. VGA and virtual console character
# devices) by default. (Since 7.1)
#
# @show-menubar: Display the main window menubar. Defaults to "on".
# codes match their position on non-Mac keyboards and you can use
# Meta/Super and Alt where you expect them. (default: off)
#
+# @zoom-to-fit: Zoom guest display to fit into the host window. When
+# turned off the host window will be resized instead. Defaults to
+# "off". (Since 8.2)
+#
+# @zoom-interpolation: Apply interpolation to smooth output when
+# zoom-to-fit is enabled. Defaults to "off". (Since 9.0)
+#
# Since: 7.0
##
{ 'struct': 'DisplayCocoa',
'data': {
'*left-command-key': 'bool',
'*full-grab': 'bool',
- '*swap-opt-cmd': 'bool'
+ '*swap-opt-cmd': 'bool',
+ '*zoom-to-fit': 'bool',
+ '*zoom-interpolation': 'bool'
} }
##
{ 'name': 'none' },
{ 'name': 'gtk', 'if': 'CONFIG_GTK' },
{ 'name': 'sdl', 'if': 'CONFIG_SDL' },
- { 'name': 'egl-headless',
- 'if': { 'all': ['CONFIG_OPENGL', 'CONFIG_GBM'] } },
+ { 'name': 'egl-headless', 'if': 'CONFIG_OPENGL' },
{ 'name': 'curses', 'if': 'CONFIG_CURSES' },
{ 'name': 'cocoa', 'if': 'CONFIG_COCOA' },
{ 'name': 'spice-app', 'if': 'CONFIG_SPICE' },
'cocoa': { 'type': 'DisplayCocoa', 'if': 'CONFIG_COCOA' },
'curses': { 'type': 'DisplayCurses', 'if': 'CONFIG_CURSES' },
'egl-headless': { 'type': 'DisplayEGLHeadless',
- 'if': { 'all': ['CONFIG_OPENGL', 'CONFIG_GBM'] } },
+ 'if': 'CONFIG_OPENGL' },
'dbus': { 'type': 'DisplayDBus', 'if': 'CONFIG_DBUS_DISPLAY' },
'sdl': { 'type': 'DisplaySDL', 'if': 'CONFIG_SDL' }
}
#
# Reload display configuration.
#
-# Returns: Nothing on success.
-#
# Since: 6.0
#
# Example:
#
-# -> { "execute": "display-reload",
-# "arguments": { "type": "vnc", "tls-certs": true } }
-# <- { "return": {} }
+# -> { "execute": "display-reload",
+# "arguments": { "type": "vnc", "tls-certs": true } }
+# <- { "return": {} }
##
{ 'command': 'display-reload',
'data': 'DisplayReloadOptions',
#
# Update display configuration.
#
-# Returns: Nothing on success.
-#
# Since: 7.1
#
# Example:
#
-# -> { "execute": "display-update",
-# "arguments": { "type": "vnc", "addresses":
-# [ { "type": "inet", "host": "0.0.0.0",
-# "port": "5901" } ] } }
-# <- { "return": {} }
+# -> { "execute": "display-update",
+# "arguments": { "type": "vnc", "addresses":
+# [ { "type": "inet", "host": "0.0.0.0",
+# "port": "5901" } ] } }
+# <- { "return": {} }
##
{ 'command': 'display-update',
'data': 'DisplayUpdateOptions',
#
# Example:
#
-# -> { "execute": "client_migrate_info",
-# "arguments": { "protocol": "spice",
-# "hostname": "virt42.lab.kraxel.org",
-# "port": 1234 } }
-# <- { "return": {} }
+# -> { "execute": "client_migrate_info",
+# "arguments": { "protocol": "spice",
+# "hostname": "virt42.lab.kraxel.org",
+# "port": 1234 } }
+# <- { "return": {} }
##
{ 'command': 'client_migrate_info',
'data': { 'protocol': 'str', 'hostname': 'str', '*port': 'int',