Mousehop logo

Mousehop

One mouse. One keyboard. Every machine.

Mousehop is an open-source software KVM — glide a single cursor, keyboard, and clipboard across your Linux, macOS, and Windows machines over the local network. No KVM hardware, no cloud.

Mousehop is a fork of lan-mouse, Ferdinand Schober's fast, encrypted, cross-platform input-sharing daemon. It keeps that Rust-native core intact and builds on top — clipboard sync, a native macOS menu-bar app, a system tray, per-peer tuning, sturdier discovery, and a refreshed interface.

The name is the whole pitch — your mouse, hopping from one screen to the next.

What's new in Mousehop

What this fork adds on top of lan-mouse.

Per-peer tuning

Set natural-scroll direction and pointer sensitivity independently for each connected machine, right from its connection row.

Peer version exchange

Linked machines trade build versions and the UI soft-warns when they drift apart, so a mismatch is obvious before it bites.

Sturdier discovery

mDNS-SD primary-IP hints, Bonjour name normalization, exponential dial backoff, and one DTLS listener per local address — connecting just works on real networks.

Seamless handoff

Your cursor keeps its cross-axis position when it crosses to another machine, with wall-press auto-release and host-cursor warp-back.

Screen-lock aware

Mousehop suppresses edge crossings while the host's screen is locked, so a locked Mac or PC never swallows your cursor.

Refreshed interface

The GTK + libadwaita frontend got a roomier, scrollable layout, richer connection rows with in-place updates, tidier modals, and Esc / Cmd-W to dismiss.

Built on lan-mouse

The foundation Mousehop inherits — every bit of it still works.

Cross-platform input sharing

Share one mouse and keyboard across Linux (Wayland), Windows, and macOS. A software KVM switch — no extra hardware.

Encrypted by default

All traffic runs over DTLS (via WebRTC.rs); machines authorize each other by TLS-certificate fingerprint.

Desktop app, CLI & daemon

A native GTK + libadwaita frontend for managing connections, plus a CLI and a headless daemon mode for systemd.

Many backends

wlroots layer-shell, libei, the xdg remote-desktop portal, Windows, and macOS — chosen automatically for your compositor.

LAN discovery

Machines find each other on the local network by hostname — no manual IP wrangling required.

Written in Rust

A fast, memory-safe, single-binary core that stays maintainable enough to keep growing new backends.

Install

Mousehop runs on Linux (Wayland), macOS, and Windows. Download a release build, install it with Cargo or Nix, or build from source.

Release binaries

Prebuilt Windows, macOS, and Linux builds, ready to run.

Releases

cargo

On Linux, one command — with a Rust toolchain and GTK4 + libadwaita headers.

cargo install mousehop

Nix flake

Build the flake directly — the executable lands in result/bin.

nix build

Build from source

Requires a Rust toolchain and GTK4 + libadwaita development headers. See the repository README for per-distro dependency lists.

git clone https://github.com/jondkinney/mousehop
cd mousehop
cargo build --release

Migrating from lan-mouse? Mousehop reads its own config at ~/.config/mousehop/ and speaks its own wire protocol, so the two install and run side by side without interfering.

Quick start

Link two machines in about a minute.

  1. Install Mousehop on each machine

    Put it on every computer you want to share input between — Linux, macOS, or Windows.

  2. Add a machine by hostname

    On the controlling device, click Add and enter the other machine's hostname and which edge it sits on.

  3. Authorize the connection

    On the other machine, Authorize the incoming device by its fingerprint — shown in the General section of the sender.

  4. Hop

    Push your cursor against the screen edge toward the other machine. The keyboard — and, if you enable it, the clipboard — follow.