Features/IntegratedCopyPaste: Difference between revisions

From QEMU
No edit summary
No edit summary
Line 5: Line 5:
== Details ==
== Details ==


A per-session guest agent is needed to listen X11 PRIMARY and CLIPBOARD selections [0]. This agent will register to the GTK events related to those X11 selections and relay them to the host front-end using JSON. This is for the guest->host direction. The other direction will be supported as well.
We need session-level agents that need to talk to the host front-ends to do the clipboard synchronization. We also know that at some point, multiple session-level agents should be supported for multiple users/display servers. qemu-ga will have all the logic to proxy requests from these session-level agents up to the host via a shared virtio-serial channel.
A qemu-ga software needs to installed in the guest system for this to work. Whenever a new session is initiated for a guest, a session specific process would start in the guest, which will talk to the qemu-ga service via a unix socket which in turn will communicate with the hypervisor on the host via a virtio-serial socket to transfer the content between the guest and the host.


So the overall work has been splitted into two parts:


== Owner ==
# Developing an initial session-level agent for clipboard synchronization
# Handling communication between session-level agents and qemu-ga


'''Name:''' [[User:Ozancaglayan|Ozan Çağlayan]]
=== Session-level clipboard synchronization agent ===
 
A per-session guest agent is needed to listen X11 PRIMARY and CLIPBOARD selections [0]. This agent will register to the GTK events related to those X11 selections and relay them to the session-level multiplexer probably using JSON. This is for the guest->host direction. The other direction will be supported as well.
 
==== Owner ====
 
* '''Name:''' [[User:Ozancaglayan|Ozan Çağlayan]]
* '''Email:''' ozancag@gmail.com
* '''Email:''' ozancag@gmail.com


'''Name''': [[User:Pallav|Pallav Agrawal]]
=== Communication between session-level agents and qemu-ga ===
 
A qemu-ga software needs to be installed in the guest system for this to work. Whenever a new session is initiated for a guest, a session specific process would start in the guest, which will talk to the qemu-ga service via a unix socket which in turn will communicate with the hypervisor on the host via a virtio-serial socket to transfer the content between the guest and the host.
 
==== Owner ====
 
* '''Name''': [[User:Pallav|Pallav Agrawal]]
* '''Email:''' agr.pallav@gmail.com
* '''Email:''' agr.pallav@gmail.com



Revision as of 11:10, 27 June 2013

Summary

Users have come to expect copy-paste between host and guest to work. This is also called clipboard sharing and makes it easier to work with graphical guests.

Details

We need session-level agents that need to talk to the host front-ends to do the clipboard synchronization. We also know that at some point, multiple session-level agents should be supported for multiple users/display servers. qemu-ga will have all the logic to proxy requests from these session-level agents up to the host via a shared virtio-serial channel.

So the overall work has been splitted into two parts:

  1. Developing an initial session-level agent for clipboard synchronization
  2. Handling communication between session-level agents and qemu-ga

Session-level clipboard synchronization agent

A per-session guest agent is needed to listen X11 PRIMARY and CLIPBOARD selections [0]. This agent will register to the GTK events related to those X11 selections and relay them to the session-level multiplexer probably using JSON. This is for the guest->host direction. The other direction will be supported as well.

Owner

Communication between session-level agents and qemu-ga

A qemu-ga software needs to be installed in the guest system for this to work. Whenever a new session is initiated for a guest, a session specific process would start in the guest, which will talk to the qemu-ga service via a unix socket which in turn will communicate with the hypervisor on the host via a virtio-serial socket to transfer the content between the guest and the host.

Owner


References

[0]: http://en.wikipedia.org/wiki/X_Window_selection

Status

  • Ozan

A preliminary prototype is available at: https://github.com/ozancaglayan/qemu-copy-paste

  • Pallav

Track my progress here