Clipboard sharing protocol: Difference between revisions
Dave.scott (talk | contribs)  (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.  = …")  | 
				Dave.scott (talk | contribs)   | 
				||
| 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
 
