A Terminal User Interface (TUI) for managing NetworkManager Wi-Fi connections on Linux systems, built with Go and the Bubble Tea framework. This tool provides a keyboard-driven, user-friendly way to scan, connect to, and manage Wi-Fi networks directly from your terminal.
nmtui-go Screenshot
nmtui-go aims to offer a modern and convenient alternative or supplement to nmcli for common Wi-Fi tasks, especially on headless systems or for users who prefer terminal-based tools. It leverages the power of nmcli in the background for network operations while providing an interactive and visually organized frontend.
nmtui-go?nmcli commands.nmcli.nmcli is its command-line interface.nmcli command-line tool: Must be installed and in the system's PATH.You can download the latest pre-compiled binary for your Linux distribution and architecture from the GitHub Releases page.
.tar.gz archive for your system (e.g., nmtui-go_vx.y.z_linux_amd64.tar.gz).bash
tar -xvf nmtui-go_vx.y.z_linux_amd64.tar.gznmtui-go binary (and README.md, LICENSE).nmtui-go binary to a directory in your system's PATH, for example:
bash
sudo mv nmtui-go /usr/local/bin/bash
sudo chmod +x /usr/local/bin/nmtui-goNow you can run the application by typing nmtui-go in your terminal.
Simply run the command:
nmtui-go
The application will start, scan for Wi-Fi networks, and display them in a list.
You can also use:
nmtui-go --help
nmtui-go --version
Keybindings:
The most common keybindings are displayed in the help bar at the bottom. Press ? to toggle a more detailed help view.
r: Refresh the list of Wi-Fi networks (rescan)./: Start filtering the network list by SSID.u: Toggle showing/hiding unnamed (hidden SSID) networks.t: Toggle the Wi-Fi radio on or off.d: Disconnect from the current active Wi-Fi network (will prompt for confirmation).i: Show detailed information about the currently active Wi-Fi connection.p: View and manage all known Wi-Fi connection profiles.n: In profiles view, create a new Wi-Fi profile.e: In profiles/details view, edit the selected Wi-Fi profile.ctrl+f: In the scan list or profiles list, forget the selected network profile.ctrl+x: In profile create/edit form, clear password for save.?: Toggle between short and full help display at the bottom.q / Ctrl+C: Quit the application (q does not quit while typing in text inputs).Profile form notes:
Esc from profile create/edit with unsaved changes requires pressing Esc again to confirm discard.nmtui-go is built using the following Go libraries and concepts:
os/exec: Used to execute nmcli commands in the background.gonetworkmanager (local package): A custom Go wrapper around nmcli commands, responsible for:nmcli output.nmcli.The application follows the Model-View-Update (MVU) pattern:
* Model: Contains the entire state of the application (current view, list of networks, input fields, terminal dimensions, etc.).
* View: Renders the current state as styled text to be displayed in the terminal.
* Update: Handles incoming messages (user input, data loaded from nmcli, window resize events) and updates the model accordingly, potentially triggering new commands (like fetching data).
Release Process:
Releases are automated using GoReleaser and GitHub Actions. When a new version tag (e.g., vX.Y.Z) is pushed to GitHub:
1. The GitHub Actions workflow triggers.
2. GoReleaser builds the Go binary for Linux (amd64, arm64).
3. Version information (version, commit, date) is embedded into the binary.
4. Archives (.tar.gz) are created containing the binary, README, and LICENSE.
5. A new GitHub Release is created, and these archives are uploaded as assets.
nmcli:
Ensure NetworkManager is installed and running, and that the nmcli command is available in your system's PATH. This tool is a frontend for nmcli.wlan0 when your interface is now wlp3s0).
nmtui-go attempts to handle this by deleting and re-creating profiles when connecting to a known network that requires a password. If you encounter this persistently:nmcli con delete "Profile Name or UUID".nmtui-go.rfkill) that can block Wi-Fi. Ensure no such blocks are active.nmcli (visible in the debug log) often indicates "Secrets were required, but not provided" or similar for authentication failures.u key to toggle visibility of unnamed networks if you're trying to connect to one. You'll need to know its SSID.bash
DEBUG_TEA=1 nmtui-go
This will create a nmtui-debug.log file in the directory where you run the command. This log contains detailed information about nmcli commands being executed and any errors, which can be very helpful for diagnosing problems. Sensitive command arguments such as passwords are redacted. Please include relevant parts of this log if you are reporting an issue.nmcli.Contributions are welcome! If you'd like to contribute, please:
gofmt or goimports).This project is licensed under the MIT License.
$ claude mcp add nmtui-go \
-- python -m otcore.mcp_server <graph>