
Description
Synergy and Deskflow solved "one keyboard and mouse for several machines", but what they forward is an abstracted stream of pointer coordinates and key codes. A trackpad degrades to a plain scroll wheel on the other machine — three-finger desktop switching, four-finger Mission Control, pinch to zoom, all gone, because those gestures are recognised from low-level multitouch data the OS never receives.
Viewflow takes the other road: it leases the raw HID reports across. A DriverKit extension on the macOS side presents a protocol-compatible native multitouch device so the system’s own AppleMultitouchTrackpadHIDEventDriver binds to it, while Linux feeds every contact from the Magic Trackpad through untouched. The gestures are then recognised by macOS itself rather than faked with synthesized CGEvent scrolls.
Be clear about where this stands, though: the repository was created on 7 September and the author repeatedly writes in the README that this is "an executable, tested foundation rather than a finished product". The latest record on the gesture work is that v11 responded to gestures but sprang back when fingers lifted, and v12 fixed the gesture-completion lifecycle and passed signed deployment — with the physical retest still marked pending. Reproducing it also means getting your own DriverKit and HID Device signing entitlements.
Its ambition runs well past keyboard-and-mouse sharing: the goal is a cross-device window compositor where applications keep running on their source machine while window pixels, input, clipboard, dragged files and per-application audio move across one shared logical desktop. Written in Rust, GPL-3.0.
Raw HID leases: the protocol has a dedicated raw-HID lease type with generation numbers and release-all on disconnect, paired with the macOS DriverKit device so trackpad contact data arrives intact.
Cross-system input: relative pointer motion, buttons, high-resolution wheel and HID keyboard usages travel over a validated QUIC path where every event carries a lease, target and sequence number and counts only once the receiver acknowledges it. Windows uses a Session 1 SendInput backend covering F13–F24 and common consumer keys, with an injection tag to prevent loops.
Windows across machines: Hyprland captures a single window on the GPU, encodes it and ships it over QUIC to hardware decode and composition on Windows; macOS uses ScreenCaptureKit capture and AppKit presentation, with
Two-way clipboard: once a desktop session is up, UTF-8 text and PNG images sync automatically — Wayland data-control on Linux (X11 fallback), the native clipboard on Windows, NSPasteboard on macOS — capped at 16 MiB per transfer.
Transport: mTLS-authenticated QUIC, with reliable streams for control and blobs and low-latency datagrams for media, plus clock synchronisation, RTT/offset estimation and capped exponential reconnect. Certificates and keys are always loaded from explicit paths; no test identity is baked into the binary.
Per-application audio: the protocol routes audio by window family, so sound follows the window instead of being mixed per machine.
Coexists with Deskflow: Deskflow is not linked in — it is integrated as a separate GPL-2.0 process over local IPC, on its own UDP port, and Viewflow neither stops nor reconfigures an existing Deskflow setup.
No release builds yet: the repository publishes no releases, so you build it with
Viewflow takes the other road: it leases the raw HID reports across. A DriverKit extension on the macOS side presents a protocol-compatible native multitouch device so the system’s own AppleMultitouchTrackpadHIDEventDriver binds to it, while Linux feeds every contact from the Magic Trackpad through untouched. The gestures are then recognised by macOS itself rather than faked with synthesized CGEvent scrolls.
Be clear about where this stands, though: the repository was created on 7 September and the author repeatedly writes in the README that this is "an executable, tested foundation rather than a finished product". The latest record on the gesture work is that v11 responded to gestures but sprang back when fingers lifted, and v12 fixed the gesture-completion lifecycle and passed signed deployment — with the physical retest still marked pending. Reproducing it also means getting your own DriverKit and HID Device signing entitlements.
Its ambition runs well past keyboard-and-mouse sharing: the goal is a cross-device window compositor where applications keep running on their source machine while window pixels, input, clipboard, dragged files and per-application audio move across one shared logical desktop. Written in Rust, GPL-3.0.
Features
Raw HID leases: the protocol has a dedicated raw-HID lease type with generation numbers and release-all on disconnect, paired with the macOS DriverKit device so trackpad contact data arrives intact.
Cross-system input: relative pointer motion, buttons, high-resolution wheel and HID keyboard usages travel over a validated QUIC path where every event carries a lease, target and sequence number and counts only once the receiver acknowledges it. Windows uses a Session 1 SendInput backend covering F13–F24 and common consumer keys, with an injection tag to prevent loops.
Windows across machines: Hyprland captures a single window on the GPU, encodes it and ships it over QUIC to hardware decode and composition on Windows; macOS uses ScreenCaptureKit capture and AppKit presentation, with
vf-window-peer handling macOS ↔ Hyprland/Windows window sharing.Two-way clipboard: once a desktop session is up, UTF-8 text and PNG images sync automatically — Wayland data-control on Linux (X11 fallback), the native clipboard on Windows, NSPasteboard on macOS — capped at 16 MiB per transfer.
vf-clipboard-peer runs standalone too.Transport: mTLS-authenticated QUIC, with reliable streams for control and blobs and low-latency datagrams for media, plus clock synchronisation, RTT/offset estimation and capped exponential reconnect. Certificates and keys are always loaded from explicit paths; no test identity is baked into the binary.
Per-application audio: the protocol routes audio by window family, so sound follows the window instead of being mixed per machine.
Coexists with Deskflow: Deskflow is not linked in — it is integrated as a separate GPL-2.0 process over local IPC, on its own UDP port, and Viewflow neither stops nor reconfigures an existing Deskflow setup.
No release builds yet: the repository publishes no releases, so you build it with
cargo. The docs state plainly that the performance figures are acceptance targets rather than measured results and that physical acceptance is still outstanding in several areas — this is something to follow and tinker with, not to depend on yet.