ui.json 34 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333
  1. # -*- Mode: Python -*-
  2. # vim: filetype=python
  3. #
  4. ##
  5. # = Remote desktop
  6. ##
  7. { 'include': 'common.json' }
  8. { 'include': 'sockets.json' }
  9. ##
  10. # @set_password:
  11. #
  12. # Sets the password of a remote display session.
  13. #
  14. # @protocol: - 'vnc' to modify the VNC server password
  15. # - 'spice' to modify the Spice server password
  16. #
  17. # @password: the new password
  18. #
  19. # @connected: how to handle existing clients when changing the
  20. # password. If nothing is specified, defaults to 'keep'
  21. # 'fail' to fail the command if clients are connected
  22. # 'disconnect' to disconnect existing clients
  23. # 'keep' to maintain existing clients
  24. #
  25. # Returns: - Nothing on success
  26. # - If Spice is not enabled, DeviceNotFound
  27. #
  28. # Since: 0.14
  29. #
  30. # Example:
  31. #
  32. # -> { "execute": "set_password", "arguments": { "protocol": "vnc",
  33. # "password": "secret" } }
  34. # <- { "return": {} }
  35. #
  36. ##
  37. { 'command': 'set_password',
  38. 'data': {'protocol': 'str', 'password': 'str', '*connected': 'str'} }
  39. ##
  40. # @expire_password:
  41. #
  42. # Expire the password of a remote display server.
  43. #
  44. # @protocol: the name of the remote display protocol 'vnc' or 'spice'
  45. #
  46. # @time: when to expire the password.
  47. #
  48. # - 'now' to expire the password immediately
  49. # - 'never' to cancel password expiration
  50. # - '+INT' where INT is the number of seconds from now (integer)
  51. # - 'INT' where INT is the absolute time in seconds
  52. #
  53. # Returns: - Nothing on success
  54. # - If @protocol is 'spice' and Spice is not active, DeviceNotFound
  55. #
  56. # Since: 0.14
  57. #
  58. # Notes: Time is relative to the server and currently there is no way to
  59. # coordinate server time with client time. It is not recommended to
  60. # use the absolute time version of the @time parameter unless you're
  61. # sure you are on the same machine as the QEMU instance.
  62. #
  63. # Example:
  64. #
  65. # -> { "execute": "expire_password", "arguments": { "protocol": "vnc",
  66. # "time": "+60" } }
  67. # <- { "return": {} }
  68. #
  69. ##
  70. { 'command': 'expire_password', 'data': {'protocol': 'str', 'time': 'str'} }
  71. ##
  72. # @screendump:
  73. #
  74. # Write a PPM of the VGA screen to a file.
  75. #
  76. # @filename: the path of a new PPM file to store the image
  77. #
  78. # @device: ID of the display device that should be dumped. If this parameter
  79. # is missing, the primary display will be used. (Since 2.12)
  80. #
  81. # @head: head to use in case the device supports multiple heads. If this
  82. # parameter is missing, head #0 will be used. Also note that the head
  83. # can only be specified in conjunction with the device ID. (Since 2.12)
  84. #
  85. # Returns: Nothing on success
  86. #
  87. # Since: 0.14
  88. #
  89. # Example:
  90. #
  91. # -> { "execute": "screendump",
  92. # "arguments": { "filename": "/tmp/image" } }
  93. # <- { "return": {} }
  94. #
  95. ##
  96. { 'command': 'screendump',
  97. 'data': {'filename': 'str', '*device': 'str', '*head': 'int'},
  98. 'coroutine': true }
  99. ##
  100. # == Spice
  101. ##
  102. ##
  103. # @SpiceBasicInfo:
  104. #
  105. # The basic information for SPICE network connection
  106. #
  107. # @host: IP address
  108. #
  109. # @port: port number
  110. #
  111. # @family: address family
  112. #
  113. # Since: 2.1
  114. ##
  115. { 'struct': 'SpiceBasicInfo',
  116. 'data': { 'host': 'str',
  117. 'port': 'str',
  118. 'family': 'NetworkAddressFamily' },
  119. 'if': 'CONFIG_SPICE' }
  120. ##
  121. # @SpiceServerInfo:
  122. #
  123. # Information about a SPICE server
  124. #
  125. # @auth: authentication method
  126. #
  127. # Since: 2.1
  128. ##
  129. { 'struct': 'SpiceServerInfo',
  130. 'base': 'SpiceBasicInfo',
  131. 'data': { '*auth': 'str' },
  132. 'if': 'CONFIG_SPICE' }
  133. ##
  134. # @SpiceChannel:
  135. #
  136. # Information about a SPICE client channel.
  137. #
  138. # @connection-id: SPICE connection id number. All channels with the same id
  139. # belong to the same SPICE session.
  140. #
  141. # @channel-type: SPICE channel type number. "1" is the main control
  142. # channel, filter for this one if you want to track spice
  143. # sessions only
  144. #
  145. # @channel-id: SPICE channel ID number. Usually "0", might be different when
  146. # multiple channels of the same type exist, such as multiple
  147. # display channels in a multihead setup
  148. #
  149. # @tls: true if the channel is encrypted, false otherwise.
  150. #
  151. # Since: 0.14
  152. ##
  153. { 'struct': 'SpiceChannel',
  154. 'base': 'SpiceBasicInfo',
  155. 'data': {'connection-id': 'int', 'channel-type': 'int', 'channel-id': 'int',
  156. 'tls': 'bool'},
  157. 'if': 'CONFIG_SPICE' }
  158. ##
  159. # @SpiceQueryMouseMode:
  160. #
  161. # An enumeration of Spice mouse states.
  162. #
  163. # @client: Mouse cursor position is determined by the client.
  164. #
  165. # @server: Mouse cursor position is determined by the server.
  166. #
  167. # @unknown: No information is available about mouse mode used by
  168. # the spice server.
  169. #
  170. # Note: spice/enums.h has a SpiceMouseMode already, hence the name.
  171. #
  172. # Since: 1.1
  173. ##
  174. { 'enum': 'SpiceQueryMouseMode',
  175. 'data': [ 'client', 'server', 'unknown' ],
  176. 'if': 'CONFIG_SPICE' }
  177. ##
  178. # @SpiceInfo:
  179. #
  180. # Information about the SPICE session.
  181. #
  182. # @enabled: true if the SPICE server is enabled, false otherwise
  183. #
  184. # @migrated: true if the last guest migration completed and spice
  185. # migration had completed as well. false otherwise. (since 1.4)
  186. #
  187. # @host: The hostname the SPICE server is bound to. This depends on
  188. # the name resolution on the host and may be an IP address.
  189. #
  190. # @port: The SPICE server's port number.
  191. #
  192. # @compiled-version: SPICE server version.
  193. #
  194. # @tls-port: The SPICE server's TLS port number.
  195. #
  196. # @auth: the current authentication type used by the server
  197. #
  198. # - 'none' if no authentication is being used
  199. # - 'spice' uses SASL or direct TLS authentication, depending on command
  200. # line options
  201. #
  202. # @mouse-mode: The mode in which the mouse cursor is displayed currently. Can
  203. # be determined by the client or the server, or unknown if spice
  204. # server doesn't provide this information. (since: 1.1)
  205. #
  206. # @channels: a list of @SpiceChannel for each active spice channel
  207. #
  208. # Since: 0.14
  209. ##
  210. { 'struct': 'SpiceInfo',
  211. 'data': {'enabled': 'bool', 'migrated': 'bool', '*host': 'str', '*port': 'int',
  212. '*tls-port': 'int', '*auth': 'str', '*compiled-version': 'str',
  213. 'mouse-mode': 'SpiceQueryMouseMode', '*channels': ['SpiceChannel']},
  214. 'if': 'CONFIG_SPICE' }
  215. ##
  216. # @query-spice:
  217. #
  218. # Returns information about the current SPICE server
  219. #
  220. # Returns: @SpiceInfo
  221. #
  222. # Since: 0.14
  223. #
  224. # Example:
  225. #
  226. # -> { "execute": "query-spice" }
  227. # <- { "return": {
  228. # "enabled": true,
  229. # "auth": "spice",
  230. # "port": 5920,
  231. # "tls-port": 5921,
  232. # "host": "0.0.0.0",
  233. # "channels": [
  234. # {
  235. # "port": "54924",
  236. # "family": "ipv4",
  237. # "channel-type": 1,
  238. # "connection-id": 1804289383,
  239. # "host": "127.0.0.1",
  240. # "channel-id": 0,
  241. # "tls": true
  242. # },
  243. # {
  244. # "port": "36710",
  245. # "family": "ipv4",
  246. # "channel-type": 4,
  247. # "connection-id": 1804289383,
  248. # "host": "127.0.0.1",
  249. # "channel-id": 0,
  250. # "tls": false
  251. # },
  252. # [ ... more channels follow ... ]
  253. # ]
  254. # }
  255. # }
  256. #
  257. ##
  258. { 'command': 'query-spice', 'returns': 'SpiceInfo',
  259. 'if': 'CONFIG_SPICE' }
  260. ##
  261. # @SPICE_CONNECTED:
  262. #
  263. # Emitted when a SPICE client establishes a connection
  264. #
  265. # @server: server information
  266. #
  267. # @client: client information
  268. #
  269. # Since: 0.14
  270. #
  271. # Example:
  272. #
  273. # <- { "timestamp": {"seconds": 1290688046, "microseconds": 388707},
  274. # "event": "SPICE_CONNECTED",
  275. # "data": {
  276. # "server": { "port": "5920", "family": "ipv4", "host": "127.0.0.1"},
  277. # "client": {"port": "52873", "family": "ipv4", "host": "127.0.0.1"}
  278. # }}
  279. #
  280. ##
  281. { 'event': 'SPICE_CONNECTED',
  282. 'data': { 'server': 'SpiceBasicInfo',
  283. 'client': 'SpiceBasicInfo' },
  284. 'if': 'CONFIG_SPICE' }
  285. ##
  286. # @SPICE_INITIALIZED:
  287. #
  288. # Emitted after initial handshake and authentication takes place (if any)
  289. # and the SPICE channel is up and running
  290. #
  291. # @server: server information
  292. #
  293. # @client: client information
  294. #
  295. # Since: 0.14
  296. #
  297. # Example:
  298. #
  299. # <- { "timestamp": {"seconds": 1290688046, "microseconds": 417172},
  300. # "event": "SPICE_INITIALIZED",
  301. # "data": {"server": {"auth": "spice", "port": "5921",
  302. # "family": "ipv4", "host": "127.0.0.1"},
  303. # "client": {"port": "49004", "family": "ipv4", "channel-type": 3,
  304. # "connection-id": 1804289383, "host": "127.0.0.1",
  305. # "channel-id": 0, "tls": true}
  306. # }}
  307. #
  308. ##
  309. { 'event': 'SPICE_INITIALIZED',
  310. 'data': { 'server': 'SpiceServerInfo',
  311. 'client': 'SpiceChannel' },
  312. 'if': 'CONFIG_SPICE' }
  313. ##
  314. # @SPICE_DISCONNECTED:
  315. #
  316. # Emitted when the SPICE connection is closed
  317. #
  318. # @server: server information
  319. #
  320. # @client: client information
  321. #
  322. # Since: 0.14
  323. #
  324. # Example:
  325. #
  326. # <- { "timestamp": {"seconds": 1290688046, "microseconds": 388707},
  327. # "event": "SPICE_DISCONNECTED",
  328. # "data": {
  329. # "server": { "port": "5920", "family": "ipv4", "host": "127.0.0.1"},
  330. # "client": {"port": "52873", "family": "ipv4", "host": "127.0.0.1"}
  331. # }}
  332. #
  333. ##
  334. { 'event': 'SPICE_DISCONNECTED',
  335. 'data': { 'server': 'SpiceBasicInfo',
  336. 'client': 'SpiceBasicInfo' },
  337. 'if': 'CONFIG_SPICE' }
  338. ##
  339. # @SPICE_MIGRATE_COMPLETED:
  340. #
  341. # Emitted when SPICE migration has completed
  342. #
  343. # Since: 1.3
  344. #
  345. # Example:
  346. #
  347. # <- { "timestamp": {"seconds": 1290688046, "microseconds": 417172},
  348. # "event": "SPICE_MIGRATE_COMPLETED" }
  349. #
  350. ##
  351. { 'event': 'SPICE_MIGRATE_COMPLETED',
  352. 'if': 'CONFIG_SPICE' }
  353. ##
  354. # == VNC
  355. ##
  356. ##
  357. # @VncBasicInfo:
  358. #
  359. # The basic information for vnc network connection
  360. #
  361. # @host: IP address
  362. #
  363. # @service: The service name of the vnc port. This may depend on the host
  364. # system's service database so symbolic names should not be relied
  365. # on.
  366. #
  367. # @family: address family
  368. #
  369. # @websocket: true in case the socket is a websocket (since 2.3).
  370. #
  371. # Since: 2.1
  372. ##
  373. { 'struct': 'VncBasicInfo',
  374. 'data': { 'host': 'str',
  375. 'service': 'str',
  376. 'family': 'NetworkAddressFamily',
  377. 'websocket': 'bool' },
  378. 'if': 'CONFIG_VNC' }
  379. ##
  380. # @VncServerInfo:
  381. #
  382. # The network connection information for server
  383. #
  384. # @auth: authentication method used for
  385. # the plain (non-websocket) VNC server
  386. #
  387. # Since: 2.1
  388. ##
  389. { 'struct': 'VncServerInfo',
  390. 'base': 'VncBasicInfo',
  391. 'data': { '*auth': 'str' },
  392. 'if': 'CONFIG_VNC' }
  393. ##
  394. # @VncClientInfo:
  395. #
  396. # Information about a connected VNC client.
  397. #
  398. # @x509_dname: If x509 authentication is in use, the Distinguished
  399. # Name of the client.
  400. #
  401. # @sasl_username: If SASL authentication is in use, the SASL username
  402. # used for authentication.
  403. #
  404. # Since: 0.14
  405. ##
  406. { 'struct': 'VncClientInfo',
  407. 'base': 'VncBasicInfo',
  408. 'data': { '*x509_dname': 'str', '*sasl_username': 'str' },
  409. 'if': 'CONFIG_VNC' }
  410. ##
  411. # @VncInfo:
  412. #
  413. # Information about the VNC session.
  414. #
  415. # @enabled: true if the VNC server is enabled, false otherwise
  416. #
  417. # @host: The hostname the VNC server is bound to. This depends on
  418. # the name resolution on the host and may be an IP address.
  419. #
  420. # @family: - 'ipv6' if the host is listening for IPv6 connections
  421. # - 'ipv4' if the host is listening for IPv4 connections
  422. # - 'unix' if the host is listening on a unix domain socket
  423. # - 'unknown' otherwise
  424. #
  425. # @service: The service name of the server's port. This may depends
  426. # on the host system's service database so symbolic names should not
  427. # be relied on.
  428. #
  429. # @auth: the current authentication type used by the server
  430. #
  431. # - 'none' if no authentication is being used
  432. # - 'vnc' if VNC authentication is being used
  433. # - 'vencrypt+plain' if VEncrypt is used with plain text authentication
  434. # - 'vencrypt+tls+none' if VEncrypt is used with TLS and no authentication
  435. # - 'vencrypt+tls+vnc' if VEncrypt is used with TLS and VNC authentication
  436. # - 'vencrypt+tls+plain' if VEncrypt is used with TLS and plain text auth
  437. # - 'vencrypt+x509+none' if VEncrypt is used with x509 and no auth
  438. # - 'vencrypt+x509+vnc' if VEncrypt is used with x509 and VNC auth
  439. # - 'vencrypt+x509+plain' if VEncrypt is used with x509 and plain text auth
  440. # - 'vencrypt+tls+sasl' if VEncrypt is used with TLS and SASL auth
  441. # - 'vencrypt+x509+sasl' if VEncrypt is used with x509 and SASL auth
  442. #
  443. # @clients: a list of @VncClientInfo of all currently connected clients
  444. #
  445. # Since: 0.14
  446. ##
  447. { 'struct': 'VncInfo',
  448. 'data': {'enabled': 'bool', '*host': 'str',
  449. '*family': 'NetworkAddressFamily',
  450. '*service': 'str', '*auth': 'str', '*clients': ['VncClientInfo']},
  451. 'if': 'CONFIG_VNC' }
  452. ##
  453. # @VncPrimaryAuth:
  454. #
  455. # vnc primary authentication method.
  456. #
  457. # Since: 2.3
  458. ##
  459. { 'enum': 'VncPrimaryAuth',
  460. 'data': [ 'none', 'vnc', 'ra2', 'ra2ne', 'tight', 'ultra',
  461. 'tls', 'vencrypt', 'sasl' ],
  462. 'if': 'CONFIG_VNC' }
  463. ##
  464. # @VncVencryptSubAuth:
  465. #
  466. # vnc sub authentication method with vencrypt.
  467. #
  468. # Since: 2.3
  469. ##
  470. { 'enum': 'VncVencryptSubAuth',
  471. 'data': [ 'plain',
  472. 'tls-none', 'x509-none',
  473. 'tls-vnc', 'x509-vnc',
  474. 'tls-plain', 'x509-plain',
  475. 'tls-sasl', 'x509-sasl' ],
  476. 'if': 'CONFIG_VNC' }
  477. ##
  478. # @VncServerInfo2:
  479. #
  480. # The network connection information for server
  481. #
  482. # @auth: The current authentication type used by the servers
  483. #
  484. # @vencrypt: The vencrypt sub authentication type used by the
  485. # servers, only specified in case auth == vencrypt.
  486. #
  487. # Since: 2.9
  488. ##
  489. { 'struct': 'VncServerInfo2',
  490. 'base': 'VncBasicInfo',
  491. 'data': { 'auth' : 'VncPrimaryAuth',
  492. '*vencrypt' : 'VncVencryptSubAuth' },
  493. 'if': 'CONFIG_VNC' }
  494. ##
  495. # @VncInfo2:
  496. #
  497. # Information about a vnc server
  498. #
  499. # @id: vnc server name.
  500. #
  501. # @server: A list of @VncBasincInfo describing all listening sockets.
  502. # The list can be empty (in case the vnc server is disabled).
  503. # It also may have multiple entries: normal + websocket,
  504. # possibly also ipv4 + ipv6 in the future.
  505. #
  506. # @clients: A list of @VncClientInfo of all currently connected clients.
  507. # The list can be empty, for obvious reasons.
  508. #
  509. # @auth: The current authentication type used by the non-websockets servers
  510. #
  511. # @vencrypt: The vencrypt authentication type used by the servers,
  512. # only specified in case auth == vencrypt.
  513. #
  514. # @display: The display device the vnc server is linked to.
  515. #
  516. # Since: 2.3
  517. ##
  518. { 'struct': 'VncInfo2',
  519. 'data': { 'id' : 'str',
  520. 'server' : ['VncServerInfo2'],
  521. 'clients' : ['VncClientInfo'],
  522. 'auth' : 'VncPrimaryAuth',
  523. '*vencrypt' : 'VncVencryptSubAuth',
  524. '*display' : 'str' },
  525. 'if': 'CONFIG_VNC' }
  526. ##
  527. # @query-vnc:
  528. #
  529. # Returns information about the current VNC server
  530. #
  531. # Returns: @VncInfo
  532. #
  533. # Since: 0.14
  534. #
  535. # Example:
  536. #
  537. # -> { "execute": "query-vnc" }
  538. # <- { "return": {
  539. # "enabled":true,
  540. # "host":"0.0.0.0",
  541. # "service":"50402",
  542. # "auth":"vnc",
  543. # "family":"ipv4",
  544. # "clients":[
  545. # {
  546. # "host":"127.0.0.1",
  547. # "service":"50401",
  548. # "family":"ipv4"
  549. # }
  550. # ]
  551. # }
  552. # }
  553. #
  554. ##
  555. { 'command': 'query-vnc', 'returns': 'VncInfo',
  556. 'if': 'CONFIG_VNC' }
  557. ##
  558. # @query-vnc-servers:
  559. #
  560. # Returns a list of vnc servers. The list can be empty.
  561. #
  562. # Returns: a list of @VncInfo2
  563. #
  564. # Since: 2.3
  565. ##
  566. { 'command': 'query-vnc-servers', 'returns': ['VncInfo2'],
  567. 'if': 'CONFIG_VNC' }
  568. ##
  569. # @change-vnc-password:
  570. #
  571. # Change the VNC server password.
  572. #
  573. # @password: the new password to use with VNC authentication
  574. #
  575. # Since: 1.1
  576. #
  577. # Notes: An empty password in this command will set the password to the empty
  578. # string. Existing clients are unaffected by executing this command.
  579. ##
  580. { 'command': 'change-vnc-password',
  581. 'data': { 'password': 'str' },
  582. 'if': 'CONFIG_VNC' }
  583. ##
  584. # @VNC_CONNECTED:
  585. #
  586. # Emitted when a VNC client establishes a connection
  587. #
  588. # @server: server information
  589. #
  590. # @client: client information
  591. #
  592. # Note: This event is emitted before any authentication takes place, thus
  593. # the authentication ID is not provided
  594. #
  595. # Since: 0.13
  596. #
  597. # Example:
  598. #
  599. # <- { "event": "VNC_CONNECTED",
  600. # "data": {
  601. # "server": { "auth": "sasl", "family": "ipv4",
  602. # "service": "5901", "host": "0.0.0.0" },
  603. # "client": { "family": "ipv4", "service": "58425",
  604. # "host": "127.0.0.1" } },
  605. # "timestamp": { "seconds": 1262976601, "microseconds": 975795 } }
  606. #
  607. ##
  608. { 'event': 'VNC_CONNECTED',
  609. 'data': { 'server': 'VncServerInfo',
  610. 'client': 'VncBasicInfo' },
  611. 'if': 'CONFIG_VNC' }
  612. ##
  613. # @VNC_INITIALIZED:
  614. #
  615. # Emitted after authentication takes place (if any) and the VNC session is
  616. # made active
  617. #
  618. # @server: server information
  619. #
  620. # @client: client information
  621. #
  622. # Since: 0.13
  623. #
  624. # Example:
  625. #
  626. # <- { "event": "VNC_INITIALIZED",
  627. # "data": {
  628. # "server": { "auth": "sasl", "family": "ipv4",
  629. # "service": "5901", "host": "0.0.0.0"},
  630. # "client": { "family": "ipv4", "service": "46089",
  631. # "host": "127.0.0.1", "sasl_username": "luiz" } },
  632. # "timestamp": { "seconds": 1263475302, "microseconds": 150772 } }
  633. #
  634. ##
  635. { 'event': 'VNC_INITIALIZED',
  636. 'data': { 'server': 'VncServerInfo',
  637. 'client': 'VncClientInfo' },
  638. 'if': 'CONFIG_VNC' }
  639. ##
  640. # @VNC_DISCONNECTED:
  641. #
  642. # Emitted when the connection is closed
  643. #
  644. # @server: server information
  645. #
  646. # @client: client information
  647. #
  648. # Since: 0.13
  649. #
  650. # Example:
  651. #
  652. # <- { "event": "VNC_DISCONNECTED",
  653. # "data": {
  654. # "server": { "auth": "sasl", "family": "ipv4",
  655. # "service": "5901", "host": "0.0.0.0" },
  656. # "client": { "family": "ipv4", "service": "58425",
  657. # "host": "127.0.0.1", "sasl_username": "luiz" } },
  658. # "timestamp": { "seconds": 1262976601, "microseconds": 975795 } }
  659. #
  660. ##
  661. { 'event': 'VNC_DISCONNECTED',
  662. 'data': { 'server': 'VncServerInfo',
  663. 'client': 'VncClientInfo' },
  664. 'if': 'CONFIG_VNC' }
  665. ##
  666. # = Input
  667. ##
  668. ##
  669. # @MouseInfo:
  670. #
  671. # Information about a mouse device.
  672. #
  673. # @name: the name of the mouse device
  674. #
  675. # @index: the index of the mouse device
  676. #
  677. # @current: true if this device is currently receiving mouse events
  678. #
  679. # @absolute: true if this device supports absolute coordinates as input
  680. #
  681. # Since: 0.14
  682. ##
  683. { 'struct': 'MouseInfo',
  684. 'data': {'name': 'str', 'index': 'int', 'current': 'bool',
  685. 'absolute': 'bool'} }
  686. ##
  687. # @query-mice:
  688. #
  689. # Returns information about each active mouse device
  690. #
  691. # Returns: a list of @MouseInfo for each device
  692. #
  693. # Since: 0.14
  694. #
  695. # Example:
  696. #
  697. # -> { "execute": "query-mice" }
  698. # <- { "return": [
  699. # {
  700. # "name":"QEMU Microsoft Mouse",
  701. # "index":0,
  702. # "current":false,
  703. # "absolute":false
  704. # },
  705. # {
  706. # "name":"QEMU PS/2 Mouse",
  707. # "index":1,
  708. # "current":true,
  709. # "absolute":true
  710. # }
  711. # ]
  712. # }
  713. #
  714. ##
  715. { 'command': 'query-mice', 'returns': ['MouseInfo'] }
  716. ##
  717. # @QKeyCode:
  718. #
  719. # An enumeration of key name.
  720. #
  721. # This is used by the @send-key command.
  722. #
  723. # @unmapped: since 2.0
  724. # @pause: since 2.0
  725. # @ro: since 2.4
  726. # @kp_comma: since 2.4
  727. # @kp_equals: since 2.6
  728. # @power: since 2.6
  729. # @hiragana: since 2.9
  730. # @henkan: since 2.9
  731. # @yen: since 2.9
  732. #
  733. # @sleep: since 2.10
  734. # @wake: since 2.10
  735. # @audionext: since 2.10
  736. # @audioprev: since 2.10
  737. # @audiostop: since 2.10
  738. # @audioplay: since 2.10
  739. # @audiomute: since 2.10
  740. # @volumeup: since 2.10
  741. # @volumedown: since 2.10
  742. # @mediaselect: since 2.10
  743. # @mail: since 2.10
  744. # @calculator: since 2.10
  745. # @computer: since 2.10
  746. # @ac_home: since 2.10
  747. # @ac_back: since 2.10
  748. # @ac_forward: since 2.10
  749. # @ac_refresh: since 2.10
  750. # @ac_bookmarks: since 2.10
  751. #
  752. # @muhenkan: since 2.12
  753. # @katakanahiragana: since 2.12
  754. #
  755. # @lang1: since 6.1
  756. # @lang2: since 6.1
  757. #
  758. # 'sysrq' was mistakenly added to hack around the fact that
  759. # the ps2 driver was not generating correct scancodes sequences
  760. # when 'alt+print' was pressed. This flaw is now fixed and the
  761. # 'sysrq' key serves no further purpose. Any further use of
  762. # 'sysrq' will be transparently changed to 'print', so they
  763. # are effectively synonyms.
  764. #
  765. # Since: 1.3
  766. #
  767. ##
  768. { 'enum': 'QKeyCode',
  769. 'data': [ 'unmapped',
  770. 'shift', 'shift_r', 'alt', 'alt_r', 'ctrl',
  771. 'ctrl_r', 'menu', 'esc', '1', '2', '3', '4', '5', '6', '7', '8',
  772. '9', '0', 'minus', 'equal', 'backspace', 'tab', 'q', 'w', 'e',
  773. 'r', 't', 'y', 'u', 'i', 'o', 'p', 'bracket_left', 'bracket_right',
  774. 'ret', 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'semicolon',
  775. 'apostrophe', 'grave_accent', 'backslash', 'z', 'x', 'c', 'v', 'b',
  776. 'n', 'm', 'comma', 'dot', 'slash', 'asterisk', 'spc', 'caps_lock',
  777. 'f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'f10',
  778. 'num_lock', 'scroll_lock', 'kp_divide', 'kp_multiply',
  779. 'kp_subtract', 'kp_add', 'kp_enter', 'kp_decimal', 'sysrq', 'kp_0',
  780. 'kp_1', 'kp_2', 'kp_3', 'kp_4', 'kp_5', 'kp_6', 'kp_7', 'kp_8',
  781. 'kp_9', 'less', 'f11', 'f12', 'print', 'home', 'pgup', 'pgdn', 'end',
  782. 'left', 'up', 'down', 'right', 'insert', 'delete', 'stop', 'again',
  783. 'props', 'undo', 'front', 'copy', 'open', 'paste', 'find', 'cut',
  784. 'lf', 'help', 'meta_l', 'meta_r', 'compose', 'pause',
  785. 'ro', 'hiragana', 'henkan', 'yen', 'muhenkan', 'katakanahiragana',
  786. 'kp_comma', 'kp_equals', 'power', 'sleep', 'wake',
  787. 'audionext', 'audioprev', 'audiostop', 'audioplay', 'audiomute',
  788. 'volumeup', 'volumedown', 'mediaselect',
  789. 'mail', 'calculator', 'computer',
  790. 'ac_home', 'ac_back', 'ac_forward', 'ac_refresh', 'ac_bookmarks',
  791. 'lang1', 'lang2' ] }
  792. ##
  793. # @KeyValueKind:
  794. #
  795. # Since: 1.3
  796. ##
  797. { 'enum': 'KeyValueKind',
  798. 'data': [ 'number', 'qcode' ] }
  799. ##
  800. # @IntWrapper:
  801. #
  802. # Since: 1.3
  803. ##
  804. { 'struct': 'IntWrapper',
  805. 'data': { 'data': 'int' } }
  806. ##
  807. # @QKeyCodeWrapper:
  808. #
  809. # Since: 1.3
  810. ##
  811. { 'struct': 'QKeyCodeWrapper',
  812. 'data': { 'data': 'QKeyCode' } }
  813. ##
  814. # @KeyValue:
  815. #
  816. # Represents a keyboard key.
  817. #
  818. # Since: 1.3
  819. ##
  820. { 'union': 'KeyValue',
  821. 'base': { 'type': 'KeyValueKind' },
  822. 'discriminator': 'type',
  823. 'data': {
  824. 'number': 'IntWrapper',
  825. 'qcode': 'QKeyCodeWrapper' } }
  826. ##
  827. # @send-key:
  828. #
  829. # Send keys to guest.
  830. #
  831. # @keys: An array of @KeyValue elements. All @KeyValues in this array are
  832. # simultaneously sent to the guest. A @KeyValue.number value is sent
  833. # directly to the guest, while @KeyValue.qcode must be a valid
  834. # @QKeyCode value
  835. #
  836. # @hold-time: time to delay key up events, milliseconds. Defaults
  837. # to 100
  838. #
  839. # Returns: - Nothing on success
  840. # - If key is unknown or redundant, InvalidParameter
  841. #
  842. # Since: 1.3
  843. #
  844. # Example:
  845. #
  846. # -> { "execute": "send-key",
  847. # "arguments": { "keys": [ { "type": "qcode", "data": "ctrl" },
  848. # { "type": "qcode", "data": "alt" },
  849. # { "type": "qcode", "data": "delete" } ] } }
  850. # <- { "return": {} }
  851. #
  852. ##
  853. { 'command': 'send-key',
  854. 'data': { 'keys': ['KeyValue'], '*hold-time': 'int' } }
  855. ##
  856. # @InputButton:
  857. #
  858. # Button of a pointer input device (mouse, tablet).
  859. #
  860. # @side: front side button of a 5-button mouse (since 2.9)
  861. #
  862. # @extra: rear side button of a 5-button mouse (since 2.9)
  863. #
  864. # Since: 2.0
  865. ##
  866. { 'enum' : 'InputButton',
  867. 'data' : [ 'left', 'middle', 'right', 'wheel-up', 'wheel-down', 'side',
  868. 'extra' ] }
  869. ##
  870. # @InputAxis:
  871. #
  872. # Position axis of a pointer input device (mouse, tablet).
  873. #
  874. # Since: 2.0
  875. ##
  876. { 'enum' : 'InputAxis',
  877. 'data' : [ 'x', 'y' ] }
  878. ##
  879. # @InputKeyEvent:
  880. #
  881. # Keyboard input event.
  882. #
  883. # @key: Which key this event is for.
  884. # @down: True for key-down and false for key-up events.
  885. #
  886. # Since: 2.0
  887. ##
  888. { 'struct' : 'InputKeyEvent',
  889. 'data' : { 'key' : 'KeyValue',
  890. 'down' : 'bool' } }
  891. ##
  892. # @InputBtnEvent:
  893. #
  894. # Pointer button input event.
  895. #
  896. # @button: Which button this event is for.
  897. # @down: True for key-down and false for key-up events.
  898. #
  899. # Since: 2.0
  900. ##
  901. { 'struct' : 'InputBtnEvent',
  902. 'data' : { 'button' : 'InputButton',
  903. 'down' : 'bool' } }
  904. ##
  905. # @InputMoveEvent:
  906. #
  907. # Pointer motion input event.
  908. #
  909. # @axis: Which axis is referenced by @value.
  910. # @value: Pointer position. For absolute coordinates the
  911. # valid range is 0 -> 0x7ffff
  912. #
  913. # Since: 2.0
  914. ##
  915. { 'struct' : 'InputMoveEvent',
  916. 'data' : { 'axis' : 'InputAxis',
  917. 'value' : 'int' } }
  918. ##
  919. # @InputEventKind:
  920. #
  921. # Since: 2.0
  922. ##
  923. { 'enum': 'InputEventKind',
  924. 'data': [ 'key', 'btn', 'rel', 'abs' ] }
  925. ##
  926. # @InputKeyEventWrapper:
  927. #
  928. # Since: 2.0
  929. ##
  930. { 'struct': 'InputKeyEventWrapper',
  931. 'data': { 'data': 'InputKeyEvent' } }
  932. ##
  933. # @InputBtnEventWrapper:
  934. #
  935. # Since: 2.0
  936. ##
  937. { 'struct': 'InputBtnEventWrapper',
  938. 'data': { 'data': 'InputBtnEvent' } }
  939. ##
  940. # @InputMoveEventWrapper:
  941. #
  942. # Since: 2.0
  943. ##
  944. { 'struct': 'InputMoveEventWrapper',
  945. 'data': { 'data': 'InputMoveEvent' } }
  946. ##
  947. # @InputEvent:
  948. #
  949. # Input event union.
  950. #
  951. # @type: the input type, one of:
  952. #
  953. # - 'key': Input event of Keyboard
  954. # - 'btn': Input event of pointer buttons
  955. # - 'rel': Input event of relative pointer motion
  956. # - 'abs': Input event of absolute pointer motion
  957. #
  958. # Since: 2.0
  959. ##
  960. { 'union' : 'InputEvent',
  961. 'base': { 'type': 'InputEventKind' },
  962. 'discriminator': 'type',
  963. 'data' : { 'key' : 'InputKeyEventWrapper',
  964. 'btn' : 'InputBtnEventWrapper',
  965. 'rel' : 'InputMoveEventWrapper',
  966. 'abs' : 'InputMoveEventWrapper' } }
  967. ##
  968. # @input-send-event:
  969. #
  970. # Send input event(s) to guest.
  971. #
  972. # The @device and @head parameters can be used to send the input event
  973. # to specific input devices in case (a) multiple input devices of the
  974. # same kind are added to the virtual machine and (b) you have
  975. # configured input routing (see docs/multiseat.txt) for those input
  976. # devices. The parameters work exactly like the device and head
  977. # properties of input devices. If @device is missing, only devices
  978. # that have no input routing config are admissible. If @device is
  979. # specified, both input devices with and without input routing config
  980. # are admissible, but devices with input routing config take
  981. # precedence.
  982. #
  983. # @device: display device to send event(s) to.
  984. # @head: head to send event(s) to, in case the
  985. # display device supports multiple scanouts.
  986. # @events: List of InputEvent union.
  987. #
  988. # Returns: Nothing on success.
  989. #
  990. # Since: 2.6
  991. #
  992. # Note: The consoles are visible in the qom tree, under
  993. # /backend/console[$index]. They have a device link and head property,
  994. # so it is possible to map which console belongs to which device and
  995. # display.
  996. #
  997. # Example:
  998. #
  999. # 1. Press left mouse button.
  1000. #
  1001. # -> { "execute": "input-send-event",
  1002. # "arguments": { "device": "video0",
  1003. # "events": [ { "type": "btn",
  1004. # "data" : { "down": true, "button": "left" } } ] } }
  1005. # <- { "return": {} }
  1006. #
  1007. # -> { "execute": "input-send-event",
  1008. # "arguments": { "device": "video0",
  1009. # "events": [ { "type": "btn",
  1010. # "data" : { "down": false, "button": "left" } } ] } }
  1011. # <- { "return": {} }
  1012. #
  1013. # 2. Press ctrl-alt-del.
  1014. #
  1015. # -> { "execute": "input-send-event",
  1016. # "arguments": { "events": [
  1017. # { "type": "key", "data" : { "down": true,
  1018. # "key": {"type": "qcode", "data": "ctrl" } } },
  1019. # { "type": "key", "data" : { "down": true,
  1020. # "key": {"type": "qcode", "data": "alt" } } },
  1021. # { "type": "key", "data" : { "down": true,
  1022. # "key": {"type": "qcode", "data": "delete" } } } ] } }
  1023. # <- { "return": {} }
  1024. #
  1025. # 3. Move mouse pointer to absolute coordinates (20000, 400).
  1026. #
  1027. # -> { "execute": "input-send-event" ,
  1028. # "arguments": { "events": [
  1029. # { "type": "abs", "data" : { "axis": "x", "value" : 20000 } },
  1030. # { "type": "abs", "data" : { "axis": "y", "value" : 400 } } ] } }
  1031. # <- { "return": {} }
  1032. #
  1033. ##
  1034. { 'command': 'input-send-event',
  1035. 'data': { '*device': 'str',
  1036. '*head' : 'int',
  1037. 'events' : [ 'InputEvent' ] } }
  1038. ##
  1039. # @DisplayGTK:
  1040. #
  1041. # GTK display options.
  1042. #
  1043. # @grab-on-hover: Grab keyboard input on mouse hover.
  1044. # @zoom-to-fit: Zoom guest display to fit into the host window. When
  1045. # turned off the host window will be resized instead.
  1046. # In case the display device can notify the guest on
  1047. # window resizes (virtio-gpu) this will default to "on",
  1048. # assuming the guest will resize the display to match
  1049. # the window size then. Otherwise it defaults to "off".
  1050. # Since 3.1
  1051. #
  1052. # Since: 2.12
  1053. #
  1054. ##
  1055. { 'struct' : 'DisplayGTK',
  1056. 'data' : { '*grab-on-hover' : 'bool',
  1057. '*zoom-to-fit' : 'bool' } }
  1058. ##
  1059. # @DisplayEGLHeadless:
  1060. #
  1061. # EGL headless display options.
  1062. #
  1063. # @rendernode: Which DRM render node should be used. Default is the first
  1064. # available node on the host.
  1065. #
  1066. # Since: 3.1
  1067. #
  1068. ##
  1069. { 'struct' : 'DisplayEGLHeadless',
  1070. 'data' : { '*rendernode' : 'str' } }
  1071. ##
  1072. # @DisplayDBus:
  1073. #
  1074. # DBus display options.
  1075. #
  1076. # @addr: The D-Bus bus address (default to the session bus).
  1077. #
  1078. # @rendernode: Which DRM render node should be used. Default is the first
  1079. # available node on the host.
  1080. #
  1081. # @p2p: Whether to use peer-to-peer connections (accepted through
  1082. # ``add_client``).
  1083. #
  1084. # Since: 7.0
  1085. #
  1086. ##
  1087. { 'struct' : 'DisplayDBus',
  1088. 'data' : { '*rendernode' : 'str',
  1089. '*addr': 'str',
  1090. '*p2p': 'bool' } }
  1091. ##
  1092. # @DisplayGLMode:
  1093. #
  1094. # Display OpenGL mode.
  1095. #
  1096. # @off: Disable OpenGL (default).
  1097. # @on: Use OpenGL, pick context type automatically.
  1098. # Would better be named 'auto' but is called 'on' for backward
  1099. # compatibility with bool type.
  1100. # @core: Use OpenGL with Core (desktop) Context.
  1101. # @es: Use OpenGL with ES (embedded systems) Context.
  1102. #
  1103. # Since: 3.0
  1104. #
  1105. ##
  1106. { 'enum' : 'DisplayGLMode',
  1107. 'data' : [ 'off', 'on', 'core', 'es' ] }
  1108. ##
  1109. # @DisplayCurses:
  1110. #
  1111. # Curses display options.
  1112. #
  1113. # @charset: Font charset used by guest (default: CP437).
  1114. #
  1115. # Since: 4.0
  1116. #
  1117. ##
  1118. { 'struct' : 'DisplayCurses',
  1119. 'data' : { '*charset' : 'str' } }
  1120. ##
  1121. # @DisplayType:
  1122. #
  1123. # Display (user interface) type.
  1124. #
  1125. # @default: The default user interface, selecting from the first available
  1126. # of gtk, sdl, cocoa, and vnc.
  1127. #
  1128. # @none: No user interface or video output display. The guest will
  1129. # still see an emulated graphics card, but its output will not
  1130. # be displayed to the QEMU user.
  1131. #
  1132. # @gtk: The GTK user interface.
  1133. #
  1134. # @sdl: The SDL user interface.
  1135. #
  1136. # @egl-headless: No user interface, offload GL operations to a local
  1137. # DRI device. Graphical display need to be paired with
  1138. # VNC or Spice. (Since 3.1)
  1139. #
  1140. # @curses: Display video output via curses. For graphics device
  1141. # models which support a text mode, QEMU can display this
  1142. # output using a curses/ncurses interface. Nothing is
  1143. # displayed when the graphics device is in graphical mode or
  1144. # if the graphics device does not support a text
  1145. # mode. Generally only the VGA device models support text
  1146. # mode.
  1147. #
  1148. # @cocoa: The Cocoa user interface.
  1149. #
  1150. # @spice-app: Set up a Spice server and run the default associated
  1151. # application to connect to it. The server will redirect
  1152. # the serial console and QEMU monitors. (Since 4.0)
  1153. #
  1154. # @dbus: Start a D-Bus service for the display. (Since 7.0)
  1155. #
  1156. # Since: 2.12
  1157. #
  1158. ##
  1159. { 'enum' : 'DisplayType',
  1160. 'data' : [
  1161. { 'name': 'default' },
  1162. { 'name': 'none' },
  1163. { 'name': 'gtk', 'if': 'CONFIG_GTK' },
  1164. { 'name': 'sdl', 'if': 'CONFIG_SDL' },
  1165. { 'name': 'egl-headless',
  1166. 'if': { 'all': ['CONFIG_OPENGL', 'CONFIG_GBM'] } },
  1167. { 'name': 'curses', 'if': 'CONFIG_CURSES' },
  1168. { 'name': 'cocoa', 'if': 'CONFIG_COCOA' },
  1169. { 'name': 'spice-app', 'if': 'CONFIG_SPICE' },
  1170. { 'name': 'dbus', 'if': 'CONFIG_DBUS_DISPLAY' }
  1171. ]
  1172. }
  1173. ##
  1174. # @DisplayOptions:
  1175. #
  1176. # Display (user interface) options.
  1177. #
  1178. # @type: Which DisplayType qemu should use.
  1179. # @full-screen: Start user interface in fullscreen mode (default: off).
  1180. # @window-close: Allow to quit qemu with window close button (default: on).
  1181. # @show-cursor: Force showing the mouse cursor (default: off).
  1182. # (since: 5.0)
  1183. # @gl: Enable OpenGL support (default: off).
  1184. #
  1185. # Since: 2.12
  1186. #
  1187. ##
  1188. { 'union' : 'DisplayOptions',
  1189. 'base' : { 'type' : 'DisplayType',
  1190. '*full-screen' : 'bool',
  1191. '*window-close' : 'bool',
  1192. '*show-cursor' : 'bool',
  1193. '*gl' : 'DisplayGLMode' },
  1194. 'discriminator' : 'type',
  1195. 'data' : {
  1196. 'gtk': { 'type': 'DisplayGTK', 'if': 'CONFIG_GTK' },
  1197. 'curses': { 'type': 'DisplayCurses', 'if': 'CONFIG_CURSES' },
  1198. 'egl-headless': { 'type': 'DisplayEGLHeadless',
  1199. 'if': { 'all': ['CONFIG_OPENGL', 'CONFIG_GBM'] } },
  1200. 'dbus': { 'type': 'DisplayDBus', 'if': 'CONFIG_DBUS_DISPLAY' }
  1201. }
  1202. }
  1203. ##
  1204. # @query-display-options:
  1205. #
  1206. # Returns information about display configuration
  1207. #
  1208. # Returns: @DisplayOptions
  1209. #
  1210. # Since: 3.1
  1211. #
  1212. ##
  1213. { 'command': 'query-display-options',
  1214. 'returns': 'DisplayOptions' }
  1215. ##
  1216. # @DisplayReloadType:
  1217. #
  1218. # Available DisplayReload types.
  1219. #
  1220. # @vnc: VNC display
  1221. #
  1222. # Since: 6.0
  1223. #
  1224. ##
  1225. { 'enum': 'DisplayReloadType',
  1226. 'data': ['vnc'] }
  1227. ##
  1228. # @DisplayReloadOptionsVNC:
  1229. #
  1230. # Specify the VNC reload options.
  1231. #
  1232. # @tls-certs: reload tls certs or not.
  1233. #
  1234. # Since: 6.0
  1235. #
  1236. ##
  1237. { 'struct': 'DisplayReloadOptionsVNC',
  1238. 'data': { '*tls-certs': 'bool' } }
  1239. ##
  1240. # @DisplayReloadOptions:
  1241. #
  1242. # Options of the display configuration reload.
  1243. #
  1244. # @type: Specify the display type.
  1245. #
  1246. # Since: 6.0
  1247. #
  1248. ##
  1249. { 'union': 'DisplayReloadOptions',
  1250. 'base': {'type': 'DisplayReloadType'},
  1251. 'discriminator': 'type',
  1252. 'data': { 'vnc': 'DisplayReloadOptionsVNC' } }
  1253. ##
  1254. # @display-reload:
  1255. #
  1256. # Reload display configuration.
  1257. #
  1258. # Returns: Nothing on success.
  1259. #
  1260. # Since: 6.0
  1261. #
  1262. # Example:
  1263. #
  1264. # -> { "execute": "display-reload",
  1265. # "arguments": { "type": "vnc", "tls-certs": true } }
  1266. # <- { "return": {} }
  1267. #
  1268. ##
  1269. { 'command': 'display-reload',
  1270. 'data': 'DisplayReloadOptions',
  1271. 'boxed' : true }