Clipboard sharing protocol

From Xen
Jump to: navigation, search

This protocol allows an in-guest agent to share clipboard data with dom0, so that it could be integrated with an emulated frame buffer, such as that exposed by qemu over VNC.

Status

Status: version 0.1 (early draft)

Overview

The protocol is intended to be used over a 'channel' with name: org.xenproject.guest.clipboard.0.1

The protocol is a subset of the VNC RFB protocol (http://www.realvnc.com/docs/rfbproto.pdf). Since the main expected use is to integrate with a qemu VNC frame buffer, RFB primitives should be readily available in the implementation.

We use only the following messages:

  • ProtocolVersion
  • SecurityVersion
  • SecurityResult
  • ClientInit
  • ServerInit
  • ClientCutText
  • ServerCutText

Protocol

The backend acts as the RFB server, the guest acts as the RFB client.

  • The server sends 'ProtocolVersion' with RFB protocol version 3.8
  • The client sends 'ProtocolVersion' with RFB protocol version 3.8
  • The server sends a single security type: None
  • The server sends a 'SecurityResult' indicating success
  • The client sends a 'ClientInit' message with shared = 1
  • The server sends a 'ServerInit' message with the frame buffer size set to (0, 0) and any valid pixel format

We now consider the connection established. The following messages are now possible:

  • The server sends a 'ServerCutText' when it wants to push data into the guest's cut buffer
  • The client sends a 'ClientCutText' when it wants to push data into the server's cut buffer