HyprKVM
Hyprland-native software KVM switch that integrates with workspace navigation.
Features
- Workspace-integrated switching: Move past your last workspace to switch machines
- Mouse edge switching: Standard screen-edge triggers like Synergy/Barrier
- Encrypted connections: TLS with certificate pinning
- Clipboard sharing: Sync clipboard between machines
- GUI and CLI: Visual layout editor or config-file driven
Status
🚧 Early Development - Sprint 0 in progress
Building
Prerequisites
- Rust 1.75+
- GTK4 development libraries (for future GUI)
- Hyprland
Arch Linux / CachyOS
sudo pacman -S rust gtk4 libadwaita
NixOS
nix develop # When flake is available
Build
cargo build --release
Quick Start
-
Start the daemon:
./target/release/hyprkvm daemon -
Configure neighbor machines in
~/.config/hyprkvm/hyprkvm.toml:[machines] self_name = "my-laptop" [[machines.neighbors]] name = "desktop" direction = "right" address = "desktop.local:24850" -
Optionally, install keybinding interceptors in your
hyprland.conf:bind = SUPER, Left, exec, ~/.config/hypr/scripts/hyprkvm-move.sh left bind = SUPER, Right, exec, ~/.config/hypr/scripts/hyprkvm-move.sh right bind = SUPER, Up, exec, ~/.config/hypr/scripts/hyprkvm-move.sh up bind = SUPER, Down, exec, ~/.config/hypr/scripts/hyprkvm-move.sh down
Configuration
See config/hyprkvm.example.toml for all options.
Architecture
See docs/ROADMAP.md for the full architecture and development plan.
License
MIT License
View source
| 1 | # HyprKVM |
| 2 | |
| 3 | Hyprland-native software KVM switch that integrates with workspace navigation. |
| 4 | |
| 5 | ## Features |
| 6 | |
| 7 | - **Workspace-integrated switching**: Move past your last workspace to switch machines |
| 8 | - **Mouse edge switching**: Standard screen-edge triggers like Synergy/Barrier |
| 9 | - **Encrypted connections**: TLS with certificate pinning |
| 10 | - **Clipboard sharing**: Sync clipboard between machines |
| 11 | - **GUI and CLI**: Visual layout editor or config-file driven |
| 12 | |
| 13 | ## Status |
| 14 | |
| 15 | 🚧 **Early Development** - Sprint 0 in progress |
| 16 | |
| 17 | ## Building |
| 18 | |
| 19 | ### Prerequisites |
| 20 | |
| 21 | - Rust 1.75+ |
| 22 | - GTK4 development libraries (for future GUI) |
| 23 | - Hyprland |
| 24 | |
| 25 | ### Arch Linux / CachyOS |
| 26 | |
| 27 | ```bash |
| 28 | sudo pacman -S rust gtk4 libadwaita |
| 29 | ``` |
| 30 | |
| 31 | ### NixOS |
| 32 | |
| 33 | ```bash |
| 34 | nix develop # When flake is available |
| 35 | ``` |
| 36 | |
| 37 | ### Build |
| 38 | |
| 39 | ```bash |
| 40 | cargo build --release |
| 41 | ``` |
| 42 | |
| 43 | ## Quick Start |
| 44 | |
| 45 | 1. Start the daemon: |
| 46 | ```bash |
| 47 | ./target/release/hyprkvm daemon |
| 48 | ``` |
| 49 | |
| 50 | 2. Configure neighbor machines in `~/.config/hyprkvm/hyprkvm.toml`: |
| 51 | ```toml |
| 52 | [machines] |
| 53 | self_name = "my-laptop" |
| 54 | |
| 55 | [[machines.neighbors]] |
| 56 | name = "desktop" |
| 57 | direction = "right" |
| 58 | address = "desktop.local:24850" |
| 59 | ``` |
| 60 | |
| 61 | 3. Optionally, install keybinding interceptors in your `hyprland.conf`: |
| 62 | ```ini |
| 63 | bind = SUPER, Left, exec, ~/.config/hypr/scripts/hyprkvm-move.sh left |
| 64 | bind = SUPER, Right, exec, ~/.config/hypr/scripts/hyprkvm-move.sh right |
| 65 | bind = SUPER, Up, exec, ~/.config/hypr/scripts/hyprkvm-move.sh up |
| 66 | bind = SUPER, Down, exec, ~/.config/hypr/scripts/hyprkvm-move.sh down |
| 67 | ``` |
| 68 | |
| 69 | ## Configuration |
| 70 | |
| 71 | See [config/hyprkvm.example.toml](config/hyprkvm.example.toml) for all options. |
| 72 | |
| 73 | ## Architecture |
| 74 | |
| 75 | See [docs/ROADMAP.md](docs/ROADMAP.md) for the full architecture and development plan. |
| 76 | |
| 77 | ## License |
| 78 | |
| 79 | MIT License |