Difference between revisions of "Clipboard sharing protocol"

From Xen
(Created page with "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. = …")
 
(Protocol)
Line 23: Line 23:
   
 
The backend acts as the RFB server, the guest acts as the RFB client.
 
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

Revision as of 14:13, 29 June 2014

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