Hi, The QEMU GTK UI is quite featurful. Yet, it doesn't provide many of the functionalities one can expect from a VM desktop application (USB redirection, shared folders, drag and drop, better multimonitor support etc.).
Spice is able to export many of the VM controls to a client, including QMP monitor, serial ports etc... It's thus possible for a Spice client to provide a similar experience as the QEMU GTK UI (while keeping similar display performances locally) and more. This series provides "-display spice-app" to setup a Spice server and launch a client (associated with the spice+unix:// URI). With virt-viewer series "Add QEMU-like UI: VT console & basic VM state" (under review), the resulting user experience is close to what qemu GTK UI provides. v2: - renamed -display app -> -display spice-app - error if full-screen or window-close is provided (supports can be added later) - use a stable URI when -name is provided - print the URI at start - added "qapi: document DisplayType enum" - added "spice: use a default name for the server" - commit message tweaks - include previously reviewed "configure: bump spice-server required version to 0.12.5", to avoid conflicts - rebased Marc-André Lureau (12): configure: bump spice-server required version to 0.12.5 char/spice: trigger HUP event char/spice: discard write() if backend is disconnected 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 qapi: document DisplayType enum spice: use a default name for the server display: add -display spice-app launching a Spice client qapi/ui.json | 31 ++++++- include/chardev/spice.h | 27 ++++++ include/ui/qemu-spice.h | 6 -- chardev/spice.c | 70 +++++++------- hw/display/qxl.c | 2 - ui/spice-app.c | 200 ++++++++++++++++++++++++++++++++++++++++ ui/spice-core.c | 21 +++-- chardev/trace-events | 1 + configure | 17 +++- qemu-options.hx | 5 + ui/Makefile.objs | 5 + 11 files changed, 330 insertions(+), 55 deletions(-) create mode 100644 include/chardev/spice.h create mode 100644 ui/spice-app.c -- 2.20.1.2.gb21ebb671b