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