Clipboard sharing protocol

From Xen
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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