Hi, One of the most featurefull UI that qemu has is the GTK one. Yet, it doesn't provide many of the functionalities we can expect from a VM desktop application (USB redirection, shared folders, drag and drop, better multimonitor support etc.). Spice is able to export all the VM details to a client, including QMP monitor, serial ports etc... It's thus possible for a Spice client to provide a similar experience as the current qemu -display gtk UI (while keeping similar performances).
In a related virt-viewer series, "[PATCH 00/22] Add QEMU-like UI: VT console & basic VM state", I proposed to augment remote-viewer with VTE consoles and basic QMP support to provide a UI similar to qemu gtk. With this series, starting qemu with "-display app" will setup a Spice server in the background and launch the client application associated with spice+unix:// uri handling to interact with qemu (the concept could be extended to other protocols). The resulting user experience should be very close to what qemu gtk display provides (it should be possible to make it work on various platforms, although I only tested/developped on Linux) Marc-André Lureau (10): char/spice: trigger HUP event char/spice: discard write() if backend is disconnected configure: bump spice-server required version to 0.12.6 spice: avoid spice runtime assert spice: merge options lists spice: do not stop spice if VM is paused char: move SpiceChardev and open_spice_port() to spice.h header char: register spice ports after spice started build-sys: add gio-2.0 check display: add -display app launching external application qapi/ui.json | 3 +- hw/display/qxl.h | 2 - include/chardev/spice.h | 27 ++++++ include/ui/qemu-spice.h | 9 -- chardev/spice.c | 66 +++++++-------- hw/display/qxl.c | 8 -- ui/app.c | 179 ++++++++++++++++++++++++++++++++++++++++ ui/spice-core.c | 19 +++-- chardev/trace-events | 1 + configure | 17 +++- qemu-options.hx | 5 ++ ui/Makefile.objs | 5 ++ 12 files changed, 274 insertions(+), 67 deletions(-) create mode 100644 include/chardev/spice.h create mode 100644 ui/app.c -- 2.18.0.547.g1d89318c48