Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

625 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

hops

Share one keyboard and mouse across your Mac, Windows, and Linux machines — a software KVM. Move your cursor to the edge of the screen and it hops to the next computer, keyboard and all. No hardware, no cloud; the machines talk directly to each other over your LAN.

part of the grabbr suite · repo: grabbr-hops · a fork of lan-mouse · GPLv3

the hops control panel

Why hops

  • Truly cross-platform — macOS, Windows, and Linux, one app, one binary (hops).
  • Encrypted, direct connections — traffic runs over QUIC + TLS 1.3 (quinn + rustls). Peers are pinned by public-key fingerprint, so only machines you've explicitly paired can connect (see Security).
  • Explicit pairing — a new machine shows up as a pairing request with its fingerprint; you name it and approve it once, and the trust persists.
  • Three ways to drive it — a native GUI, a terminal UI for SSH / keyboard-driven use, and a system-tray icon; all attach to the same background daemon.
  • Runs headless — install just the daemon on a server and control it over SSH (see service/README.md).
  • Themeable — a built-in palette set plus your own themes dropped in as TOML.

Interfaces

GUI hops gui — the windowed control panel (above). Native tray icon; starts hidden in the menu bar / notification area with --hidden.
TUI hops tui — the same control panel in your terminal; ideal over SSH.
Daemon hops daemon — the background receiver/sender the front-ends attach to.
CLI hops cli — scripted, one-shot configuration.

Running hops with no arguments picks up where you left off — on the first run it asks how you'd like to drive it:

first-run interface picker

Get hops

Download a pre-built binary — no Rust, no compiling. Do this on each machine you want to share the keyboard & mouse across.

Download the latest release, grab the file for your OS, unpack it, and run hops:

OS File
macOS (Intel + Apple Silicon) hops-macos-universal.dmg — open it, drag hops to Applications
macOS (CLI / headless) hops-macos-universal.tar.gz — just the hops binary
Windows hops-windows-x86_64.zip
Linux (terminal UI + daemon) hops-linux-x86_64.tar.gz

First-launch notes:

  • macOS — the .dmg is signed & notarized by Apple, so it opens with no Gatekeeper warning. On first run, switch hops on under System Settings → Privacy & Security → Accessibility (it can't move your cursor without it). (The bare .tar.gz CLI binary is unsigned — right-click it → Open the first time.)
  • Windows — not code-signed yet, so SmartScreen shows a one-time warning: click More info → Run anyway, and allow it on your private network if the firewall asks.
Or build from source (for developers, or the latest main)

Install Rust, then on each machine:

git clone https://github.com/jtjones09/grabbr-hops
cd grabbr-hops
./install.sh                 # macOS / Linux

On Windows: powershell -ExecutionPolicy Bypass -File .\install.ps1

That builds hops and starts it in your menu bar / system tray at login. Or just build and run the binary directly:

cargo build --release --no-default-features --features "tui slint"
./target/release/hops           # hops.exe on Windows

Connect two machines

  1. Both machines are running hops now.
  2. On one, open the window (click the tray icon) → + add the other machine: its IP address and which screen edge it sits on (left/right/top/bottom).
  3. The first connection shows a pairing request with a fingerprint — name it and hit trust & name. Just once per pair.
  4. Move your cursor off that edge — it hops over. Keyboard, scroll, and modifier keys follow.

Other ways to run it

  • Terminal UI (keyboard-driven, great over SSH): hops tui.
  • Headless / servers (no GUI, controlled over the network): build with --no-default-features and use the service units + guide in service/README.md.
  • Linux backends / advanced: input capture & emulation backends are cargo features (layer_shell_capture, x11_capture, libei_*, …) — see Cargo.toml.

Security

  • Transport: all traffic is QUIC (quinn) secured with TLS 1.3 (rustls + ring). Nothing is sent in the clear.
  • Identity: each machine holds a self-signed keypair; peers are verified by the fingerprint of the public key, not by a CA. rustls' certificate check is delegated to fingerprint pinning, so a machine is trusted only after you approve its fingerprint (trust on first use, with explicit consent).
  • No cloud, no accounts: machines connect directly over your LAN. There is no relay and no telemetry.

Trust, config, and the keypair live in ~/.config/lan-mouse/ (Linux/macOS) or %LOCALAPPDATA%\lan-mouse\ (Windows).

Note: this is a hobby-scale project, not an audited security product. Run it on networks you trust.

Credits & license

hops is a fork of lan-mouse by Felix Eschberger (feschber) and its contributors — full attribution and the list of what this fork changes are in NOTICE.md. All original copyright is preserved in the git history.

Licensed under the GNU General Public License v3.0 or later — see LICENSE.

About

Share one keyboard & mouse across your Mac, Windows & Linux machines — a software KVM. A grabbr tool, forked from lan-mouse (GPLv3).

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages