github davefx/clipboardwire v0.2.0
clipboardwire v0.2.0 — images & cross-platform tray

latest releases: v0.5.3, v0.5.2, v0.5.1...
one month ago

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 serve mode. If you run clipboardwire on a truly headless box you'll need those libs installed (the package's runtime deps handle this for you). A tray cargo feature so distro maintainers can ship a server-only variant is on the v0.3 backlog.

📜 Protocol v0.2

  • clip frames may carry binary payloads via a new content_b64 field (mutually exclusive with content).
  • content_type: image/png recognized; 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 server advertises clipboardwire/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.
  • tray cargo 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).

Don't miss a new clipboardwire release

NewReleases is sending notifications on new releases.