nettui
nettui is a unified terminal UI for Wi-Fi and Ethernet.
It is a clean-room project inspired by the UX direction of tools like impala and ethtui, with one app shell and switchable Wi-Fi/Ethernet panels.
This project was inspired by and builds upon ideas from Impala by pythops.
✨ Features
- One TUI with two transport tabs:
Wi-FiandEthernet - Startup tab policy: prefer active transport (
Ethernetif active, elseWi-Fiif active) - Wi-Fi workflow with split sections:
Known Networks,New Networks,Device - Non-blocking scan/connect with spinner feedback
- Connect/disconnect, forget, autoconnect toggle, hidden SSID connect
- Passphrase fallback flow when iwd reports
No Agent registered - Ethernet details + link up/down + DHCP renew
- Configurable keybinds via
~/.config/nettui/keybinds.toml - Toast/error popups and terminal size guard (
119x35minimum)
💡 Prerequisites
- Linux
iwdrunning and reachable on D-Bussystemd-networkd+networkctlavailable- Nerd Fonts recommended for icon rendering
[!IMPORTANT] To avoid network stack conflicts, keep one wireless manager in control. If
iwdis your backend, avoid running overlapping managers for Wi-Fi (for exampleNetworkManagerorwpa_supplicant) at the same time.
🚀 Installation
crates.io
Arch Linux (AUR source build)
Arch Linux (AUR prebuilt binary)
🪄 Usage
⌨️ Controls
Global:
h/lor←/→: switch transport tab (Wi-Fi/Ethernet)j/kor↓/↑: move selectionr: refresh (shows info toast)qorEsc: quit
Wi-Fi tab:
Tab/Shift+Tab: switch focus (Known/New/Device)s: scanEnter: connect/disconnect selected networka: show/hide extra entries (Known: unavailable,New: hidden)d: forget selected known networkt: toggle autoconnect for selected known networkn: connect hidden network (inNew)i: toggle Wi-Fi details popup- Empty
New Networkslist shows- no new networks -
Ethernet tab:
Enter: toggle selected interface link (up/down)n: renew DHCP on selected interface
⚙️ Keybind config
Config file path:
On first launch, nettui auto-creates this file with defaults.
To reset from template:
Edit this file directly and restart nettui after changes.
🔄 Restart / control
nettui is not a systemd service, so systemctl does not apply.
Quick restart:
||
🧩 Omarchy integration
Official Omarchy dev launcher (bin/omarchy-launch-wifi) is:
So installing ethtui alone does not replace Wi-Fi handling automatically.
To use nettui instead of impala in your local Omarchy install:
Verify:
Optional Hyprland size rule for org.omarchy.nettui:
||
🛠️ Build
📦 Maintainer Release Asset
Always build the GitHub release tarball with:
This script enforces the archive layout expected by nettui-bin AUR:
nettui-v<version>-x86_64/nettuinettui-v<version>-x86_64/README.mdnettui-v<version>-x86_64/LICENSEnettui-v<version>-x86_64/config/keybinds.toml.example
⚖️ License
nettui is licensed under GPL-3.0-only. See LICENSE.