v0.2 expands clipboardwire from text-only to a real cross-platform clipboard sync — images on the wire, system-tray UI on Linux and macOS in addition to Windows. Wire protocol bumped to v0.2 (backward-incompatible — both endpoints must run ≥ v0.2 for image sync to work).
What's new
🖼 Image sync (PNG)
Copy an image on one machine, paste it on another. The clipboard adapter polls both text and image clipboards on every tick (per-kind last-seen trackers; copying text doesn't clobber the image cache). PNG-encoded over the wire (base64 inside a new content_b64 field). End-to-end test included.
🖥 Tray UI now on Linux & macOS too
clipboardwire connect --tray works on every platform that has a tray. Linux uses the libayatana-appindicator backend (GNOME/KDE/etc.).
The Linux .deb and .rpm packages now declare runtime dependencies on libgtk-3-0 + libayatana-appindicator3-1 + libxdo3, so a fresh install pulls those in automatically.
⚠ Headless servers: this v0.2 binary requires libgtk at load time, even for
servemode. If you run clipboardwire on a truly headless box you'll need those libs installed (the package's runtime deps handle this for you). Atraycargo feature so distro maintainers can ship a server-only variant is on the v0.3 backlog.
📜 Protocol v0.2
clipframes may carry binary payloads via a newcontent_b64field (mutually exclusive withcontent).content_type: image/pngrecognized; other non-text types reserved (server relays them opaquely).- Default max frame size bumped from 10 MiB to 50 MiB (configurable via
CLIPBOARDWIRE_MAX_FRAME). - The welcome frame's
serveradvertisesclipboardwire/0.2.0.
See PROTOCOL.md for the full spec.
🪟 Windows MSI improvements (from v0.1.1)
If you skipped v0.1.1: the v0.2.0 MSI also adds Start Menu, Desktop, and start-at-login shortcuts; and the default client-config path on Windows is now %APPDATA%\clipboardwire\config.toml (no nested \config\ subdir).
Backward compatibility
Wire-incompatible with v0.1.x clients for image frames — a v0.1 client receiving an image/png frame will fail to deserialize (the content field is now optional). Text-only sync still works mixed if both sides happen to send only text frames. Recommended: upgrade hub + all clients together.
Install
| Platform | Artifact |
|---|---|
| Debian / Ubuntu | clipboardwire_0.2.0_amd64.deb
|
| Fedora / RHEL / openSUSE | clipboardwire-0.2.0-1.x86_64.rpm
|
| Arch | see packaging/arch/PKGBUILD in source
|
| Windows (installer) | clipboardwire-0.2.0-x86_64.msi
|
| Windows (portable) | clipboardwire-windows-x86_64.exe
|
| Other Linux | clipboardwire-linux-x86_64 raw binary
|
Deferred to v0.3
- File sync (clipboard "files" → byte transfer): it's effectively a file-transfer feature on top of clipboard sync, not just a wire-format change. Wants its own design pass.
traycargo feature for headless-server builds without libgtk.- macOS native build pipeline (the code targets it; the CI matrix doesn't yet).
Known limitations
- Linux/Wayland background polling depends on compositor support.
- Single-user; no per-room separation.
Acknowledgements
Heavily inspired by ClipCascade by Sathvik Rao — same problem, different deployment fit (no JVM).