mbox series

[v2,00/12] spice: add -display spice-app, setup and launch a Spice client

Message ID 20181220141553.24098-1-marcandre.lureau@redhat.com
Headers show
Series spice: add -display spice-app, setup and launch a Spice client | expand

Message

Marc-André Lureau Dec. 20, 2018, 2:15 p.m. UTC
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

Comments

Victor Toso Dec. 21, 2018, 2:12 p.m. UTC | #1
Hi,

On Thu, Dec 20, 2018 at 06:15:41PM +0400, Marc-André Lureau wrote:
> 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.

Not much knowledge on the qemu codebase but I tested this and v1
with spice-gtk + virt-viewer patches and it works well so,

Tested-by: Victor Toso <victortoso@redhat.com>

> 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
> 
>
Marc-André Lureau Feb. 9, 2019, 1:19 p.m. UTC | #2
Hi

On Thu, Dec 20, 2018 at 3:44 PM Marc-André Lureau
<marcandre.lureau@redhat.com> wrote:
>
> 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
>

ping for reviews

(rebased version pushed on github https://github.com/elmarco/qemu/commits/spice)

thanks

> 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
>
>