No description
- Rust 92.2%
- Nix 7.8%
| assets | ||
| doc | ||
| nix | ||
| src | ||
| .envrc | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| flake.lock | ||
| flake.nix | ||
| LICENSE | ||
| README.md | ||
| rustfmt.toml | ||
Keyboard-driven VPN switcher for Linux.
byt swaps between NetworkManager-managed VPNs (WireGuard, OpenVPN) and
Tailscale from a small Iced GUI or the command line.
Note
This is a very new project, you might stumble upon some bugs. I rarely use OpenVPN for example, so it's minimally tested. Feel free to contribute if you find anything wrong.
Features
- Iced GUI with keyboard navigation in mind
- WireGuard and OpenVPN via NetworkManager (D-Bus, polkit-authenticated)
- Tailscale via systemd
- Mutual exclusion: activating one VPN deactivates the others
- Import provider configs:
byt import path/to/provider.conf - Live state via NetworkManager D-Bus signals, no polling
- Single-instance lock
Requirements
- Linux with systemd
- NetworkManager
- For OpenVPN: the
NetworkManager-openvpnplugin - For Tailscale (optional):
tailscaleandtailscaled - A running polkit authentication agent (most desktops include one)
Usage
byt # open the GUI
byt status # print current VPN state
byt import foo.conf
byt --help
Keys
| Key | Action |
|---|---|
↑ ↓ or k j |
move selection |
x |
disconnect |
i |
import config |
d |
delete config |
r |
refresh |
q or Esc |
quit |
Install
Nix
nix run github:cnsta/byt
NixOS module:
# flake inputs
byt.url = "github:cnsta/byt";
# system config
imports = [ inputs.byt.nixosModules.default ];
programs.byt.enable = true;
From source
cargo build --release
Sample configs in doc/examples/ if you want to try the import flow without
real provider files.
Showcase
How it looks as of v0.4.0.