Skip to content

Commit

Permalink
Document global clipboard for GUI protocol 1.8
Browse files Browse the repository at this point in the history
  • Loading branch information
alimirjamali committed Oct 27, 2024
1 parent 78b0742 commit 42cad28
Showing 1 changed file with 3 additions and 1 deletion.
4 changes: 3 additions & 1 deletion developer/system/gui.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,9 +90,11 @@ Clipboard sharing implementation
Certainly, it would be insecure to allow AppVM to read/write the clipboards of other AppVMs unconditionally.
Therefore, the following mechanism is used:

- there is a "qubes clipboard" in dom0 - its contents are stored in a regular file in dom0.
- there is a "qubes clipboard" in dom0 - its contents are stored in a regular file in dom0 as `/run/qubes/qubes-clipboard.bin`.
- if the user wants to copy local AppVM clipboard to qubes clipboard, she must focus on any window belonging to this AppVM, and press **Ctrl-Shift-C**. This combination is trapped by `qubes-guid`, and `CLIPBOARD_REQ` message is sent to AppVM. `qubes-gui` responds with `CLIPBOARD_DATA` message followed by clipboard contents.
- by default, `qubes-guid` limits the maximum clipboard size to 64000 bytes. This could be changed by passing `--max-clipboard-size=SIZE` option to `qubes-guid`. Accepted values are between 256 to 256000 bytes.
- the user focuses on other AppVM window, presses **Ctrl-Shift-V**. This combination is trapped by `qubes-guid`, and `CLIPBOARD_DATA` message followed by qubes clipboard contents is sent to AppVM; `qubes-gui` copies data to the local clipboard, and then user can paste its contents to local applications normally.
- a supplementary JSON metadata file will be saved as `/run/qubes/qubes-clipboard.bin.metadata` on global clipboard copy or paste actions. Explanation of each field is available in `xside.h` header file of `qubes-guid` under `clipboard_metadata` structure. While the output from `qubes-guid` is fully JSON compatible, the `qubes-guid` parser is limited. It expects line breaks after each key-value pair and only one key-value pair per line. Opening and closing curly braces should be on their own lines. There should be no leading white-space.

This way, the user can quickly copy clipboards between AppVMs.
This action is fully controlled by the user, it cannot be triggered/forced by any AppVM.
Expand Down

0 comments on commit 42cad28

Please sign in to comment.