Clipboard sharing protocol
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