A minimal keyboard-driven TUI to manage WireGuard VPN connections, heavily inspired by bluetui and impala.
You will need to use a Linux based operating system using the NetworkManager.
- list all imported connections
- activate a connection
- deactivate a connection
- import a new connection from a config file (#7)
- remove an existing connection (#6)
- search connection list (#13)
Currently the only option to install is building from source, but it is planned to add pre-built binaries that you can download from releases (#3).
git clone https://github.com/robin-thoene/wiretui.git
cd wiretui
cargo install --path ./crates/tui/wiretuij: move down
k: move up
SPACE: toggle a connection
?: open the help menu
ESC: close a menu
q: quit application
Until this feature is integrated into wiretui, you can import connections from WireGuard config files like so:
# Import from config using the CLI of the NetworkManager
nmcli connection import type wireguard file ./your_wireguard_config_file.conf
# Use this command if you want to disable the autoconnect functionality
nmcli connection modify IMPORTED_CONNECTION_NAME connection.autoconnect noRun the application
cargo run --bin wiretui-binRun the tests
cargo testCheck if you violated the hexagonal architecture dependency rules
./scripts/lint_architecture.shCheck the workspace rules (using cargo-deny)
cargo deny checkThis project contains a debugger configuration using .vscode files. Those can be used in Neovim as well (see example here).
This application uses the log crate in combination with the env_logger crate to set the log level. By default the logs are written to a file, which is overridden every time you run the application.
You can see it's current content with
cat ~/.local/state/wiretui/log.txtTo override the log level when running the application use
RUST_LOG=debug cargo runValid log level are trace, debug, info, warn and error.
As of now this project is publicly available but not actively asking for or accepting pull requests until I finished my desired MVP state. This is due to the fact that the project is part of a university module as well as a learning opportunity for myself.
For the moment you can contribute best by:
- submitting bug reports
- reviewing code to be idiomatic, secure and performant
See the LICENSE
