Chapter 1. Introduction

Table of Contents

Spice and Spice-related Components
Spice Server
Spice Client
QXL Device and Drivers
Spice Agent
VDI Port Device
Features
Multiple Channels
Image Compression
Video Compression
Mouse modes
Other Features

Spice is an open remote computing solution, providing client access to remote displays and devices (e.g. keyboard, mouse, audio). At the moment, it's mainly used to get remote access to virtual machines. Spice provides a desktop-like user experience, while trying to offload most of the intensive CPU and GPU tasks to the client. The basic building blocks of Spice are:

  1. Spice Server

  2. Spice Client

  3. Spice Protocol

The following sections provide basic information on Spice components and features, obtaining, building installing and using Spice.

Spice and Spice-related Components

Spice Server

Spice server is implemented in libspice, a VDI pluggable library. Currently, the main user of this library is QEMU. QEMU uses spice-server to provide remote access to virtual machines through the Spice protocol. Virtual Device Interface (VDI) defines a set of interfaces that provide a standard way to publish virtual devices (e.g. display device, keyboard, mouse) and enables different Spice components to interact with those devices. On one side, the server communicates with the remote client using the Spice protocol and on the other side, it interacts with the VDI host application (e.g QEMU).

Spice Client

The Spice client is a cross-platform (Linux and Windows) which is used by the end user to access remote systems through Spice. The recommended client is remote-viewer (which is shipped with virt-viewer). GNOME Boxes can also be used as a Spice client. spicec is an obsolete legacy client, and spicy is only a test application.

QXL Device and Drivers

Spice server supports the QXL VDI interface. When libspice is used with QEMU, a specific video PCI device can be used for improving remote display performance and enhancing the graphic capabilities of the guest graphic system. This video device is called a QXL device and requires guest QXL drivers for full functionality. However, standard VGA is supported when no driver exists.

Spice Agent

The Spice agent is an optional component for enhancing user experience and performing guest-oriented management tasks. For example, the agent injects mouse position and state to the guest when using client mouse mode. It also enables you to move cursor freely between guest and client. Other features of agent are shared clipboard (copy and paste between guest and host) and aligning guest resolution with client when entering fullscreen mode.

VDI Port Device

Spice protocol supports a communication channel between the client and the agent on the server side. When using QEMU, Spice agent resides on the guest. VDI port is a QEMU PCI device used for communication with the agent.