Clipboard sync
Clipboard sync turns a copy on one device into text that another device can paste. It sends text only, one text at a time, and it is not a history.
How it works #
- The latest text wins. Each text has a clock value of the device that sent it. A device applies a text only if it is newer than the one it holds. Texts are never passed on from device to device: the device where you copied sends directly to each connected device that accepts it.
- No echo. A text that a device wrote because another device sent it is not sent back.
- No queue for devices that are off. A text is not stored for a device that is not connected, because that would keep possibly sensitive text around. The setting
deliver_latest_on_reconnect, off by default, delivers the single latest text of this device to a peer that reconnects within a short time. - A size limit. The limit is a setting of the receiving device, 256 KiB by default. A text above the smaller limit of the two devices is skipped for that device.
The switches #
| Switch | Where | Default |
|---|---|---|
clipboard_sync | this device, all peers | on |
| send to a peer | per paired device | on |
| receive from a peer | per paired device | off |
show_source_device | this device | on |
deliver_latest_on_reconnect | this device | off |
Change the global settings with easysync config set <setting> <value> and read them with easysync config get. Change the per-device switches with easysync peer policy <peer> --clip-send on and --clip-receive on.
Why receiving is off by default. Text from another device can be harmless in a notification and still contain line breaks or control characters. If you paste such text into a terminal, it can run commands. A paired device is a device you trust, but a device can be lost, infected or misused. That is why you allow receiving per device, on purpose, and why every received text is announced with its length and, unless show_source_device is off, the name of the device it came from, never the text itself. easysync does not clean up the text, because no cleaning is safe for every program that you paste into.
Concealed text #
Where the operating system offers a marker, easysync does not read text that the application marked as concealed or temporary, for example the text that a password manager copies. Such text is not reported to easysync and is never sent. The markers are the ones of the system: on Windows the exclusion from clipboard history and monitoring, on macOS the concealed and transient types, on Linux the hint that KDE password managers set. easysync does not try to recognise passwords by their look, and nothing in it should be called a protection for passwords.
Per system #
| System | How text is sent and received |
|---|---|
| Windows | The app watches the clipboard and writes received text to it. |
| macOS | The app polls the clipboard at short intervals and writes received text to it. |
| Linux with X11, or Wayland with a data-control protocol | The app watches the clipboard of the desktop. This path is built, but its behaviour is not part of the current acceptance criteria. |
| Linux with Wayland and a compositor without a data-control protocol (for example GNOME) | The desktop clipboard is not watched. Use easysync clip copy and easysync clip paste. |
| Linux without a desktop session, containers | There is no clipboard to watch. Use easysync clip copy and easysync clip paste. |
| Android and iOS | You send with a button and copy a received text yourself. Nothing is read in the background. |
| Web app | You send with a button or a paste box and copy a received text yourself. |