Features/IntegratedCopyPaste: Difference between revisions
Ozancaglayan (talk | contribs) No edit summary |
No edit summary |
||
(4 intermediate revisions by 2 users not shown) | |||
Line 22: | Line 22: | ||
==== Status ==== | ==== Status ==== | ||
* Track my progress [https://github.com/ozancaglayan/qemu/tree/ | * Track my progress [https://github.com/ozancaglayan/qemu/tree/gsoc-clipboard-support here] | ||
* '''Tasks done''' | * '''Tasks done''' | ||
** | ** Added a session-mode to qemu-ga for guest->host clipboard synchronization. | ||
* '''Tasks to be done''' | * '''Tasks to be done''' | ||
** | ** Add QMP commands for host->guest clipboard synchronization. | ||
=== Communication between session-level agents and qemu-ga === | === Communication between session-level agents and qemu-ga === | ||
Line 44: | Line 43: | ||
* Track my progress [https://github.com/agrpallav/qemu-copypaste here] | * Track my progress [https://github.com/agrpallav/qemu-copypaste here] | ||
* '''Task at hand:''' | * '''Task at hand:''' Prepare patches and send them upstream for review | ||
* '''Task Done:''' | * '''Task Done:''' | ||
** Open a unix socket in the the qga for communication with the per-session processes. Make a dummy process and test that the connection does work. | |||
** Make the qemu-ga work with several clients (session processes) simultaneously. Right now it works with just one client. and accepts no further connections. | |||
** Incorporate session_ids to identify the guest client sessions and allow them to make RPCs to the host | ** Incorporate session_ids to identify the guest client sessions and allow them to make RPCs to the host | ||
** | ** Parse the incoming responses from host to guest-session RPCs and test the proper working of RPCs and their responses. | ||
** | ** Optimize the code, make it more robust, remove redundant information handling. Clean up the code for patching. | ||
** Test the code for multiple clients, remove hooks for testing and final cleanup | |||
== References == | == References == | ||
[0]: http://en.wikipedia.org/wiki/X_Window_selection | [0]: http://en.wikipedia.org/wiki/X_Window_selection | ||
[[Category:Obsolete feature pages]] |
Latest revision as of 08:09, 13 October 2016
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:
- Developing an initial session-level agent for clipboard synchronization
- 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
- Name: Ozan Çağlayan
- Email: ozancag@gmail.com
Status
- Track my progress here
- Tasks done
- Added a session-mode to qemu-ga for guest->host clipboard synchronization.
- Tasks to be done
- Add QMP commands for host->guest clipboard synchronization.
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: Pallav Agrawal
- Email: agr.pallav@gmail.com
Status
- Track my progress here
- Task at hand: Prepare patches and send them upstream for review
- Task Done:
- Open a unix socket in the the qga for communication with the per-session processes. Make a dummy process and test that the connection does work.
- Make the qemu-ga work with several clients (session processes) simultaneously. Right now it works with just one client. and accepts no further connections.
- Incorporate session_ids to identify the guest client sessions and allow them to make RPCs to the host
- Parse the incoming responses from host to guest-session RPCs and test the proper working of RPCs and their responses.
- Optimize the code, make it more robust, remove redundant information handling. Clean up the code for patching.
- Test the code for multiple clients, remove hooks for testing and final cleanup