private beta / rust / wlroots

Cross the edge.Keep control.

deskway is a software KVM for Linux machines running Wayland. Push your pointer past a screen edge and your keyboard, mouse, and clipboard follow it to the next box, over an encrypted QUIC channel. No X11 bridge, no portal, no compromise on the compositor.

  • zwp_virtual_keyboard_v1
  • zwlr_virtual_pointer_v1
  • quinn + rustls
  • Hyprland / wlroots
DWKVM-SYS-001

A handoff model built for real Wayland sessions.

No X11 bridge, no generic remote desktop loop, no portal dependency. deskway keeps the local machine responsible for capture and gives the target compositor native virtual input events.

Session sequence

edge -> tunnel -> inject
  1. 01

    Capture at the source

    flowd reads raw keyboard and pointer events straight off /dev/input and watches for the edge you configured.

  2. 02

    Switch on intent

    Push the pointer past that edge and forwarding starts immediately. The server keeps the reclaim hotkey live the whole time.

  3. 03

    Inject natively

    flowc turns that stream into compositor-level virtual keyboard and pointer events, no X11 bridge involved.

Machine A / server

flowd

input
evdev
bind
0.0.0.0:7832
trigger
screen edge
Machine B / client

flowc

keyboard
virtual_keyboard_v1
pointer
virtual_pointer_v1
fallback
ydotool optional
postcard wire format UDP 7832 flowctl control plane wlroots compositors
DWKVM-DAE-002

Three processes, one operating surface.

The pieces stay small on purpose: one daemon captures, one daemon injects, and one CLI handles pairing, trust, and runtime status.

flowd

server daemon
cratecrates/flowd
transportQUIC / quinn
cryptoTLS 1.3 / rustls
inputevdev /dev/input
systemdflowd.service

flowc

client daemon
cratecrates/flowc
keyboardzwp_virtual_keyboard_v1
pointerzwlr_virtual_pointer_v1
clipboardwl-clipboard sync
compositorHyprland / wlroots

flowctl

control CLI
cratecrates/flowctl
statusflowctl status
pairflowctl pair
revokeflowctl trust remove <fp>
config~/.config/deskway
DWKVM-SEC-003

Input forwarding is treated like a privileged channel.

The page leads with security because the product sends keyboard events. Pairing is short-lived, trust is explicit, and reclaim is enforced where forwarded input is produced.

pair

60-second PSK

flowd prints a short pairing code. flowc must present it during first contact.

DESKWAY_PSK=482159 flowctl pair studio-rig:7832
encrypt

TLS 1.3 over QUIC

rustls protects the session before keyboard or pointer events leave the server.

quinn + rustls + rcgen
pin

TOFU fingerprint

Known peers are pinned after the first handshake. Unknown certificates stay out.

trusted_peers
reclaim

Hard stop hotkey

Super+Ctrl+BackSpace stops forwarding at the protocol level and returns control.

instant server reclaim
DWKVM-FEAT-004

Current surface area, tied to shipped code.

The matrix traces each capability to configuration, protocol, packaging, or a source module in the current build.

FeatureDescriptionImplementationStatus
Edge triggerPush cursor to a configured screen edge to switch control.server.edge = "right"live
TOFU pinningCertificate fingerprint pinned after first PSK authentication.rcgen + rustlslive
Clipboard syncBidirectional text clipboard between paired machines.wl-clipboardlive
Emergency keyServer-side reclaim even if the target compositor misbehaves.protocol-levellive
systemd unitsUser services for startup and recovery behavior.systemd/live
Arch packagingInstalls daemons, services, and group setup from a PKGBUILD.PKGBUILDlive
Clipboard size capReject text clipboard payloads above the configured safety limit.clipboard.max_size_kiblive
DPI scalingScale relative pointer deltas from exchanged server and client DPI values.Caps.dpilive
private beta

Built in public enough to inspect. Private while the protocol settles.

The switching model, pairing flow, and clipboard bridge are implemented and unit-tested; the repository stays closed until they've been run across real hardware, not just CI. Progress lives on the portfolio.

Open portfolio