Skip to main content

A clean ncurses TUI wrapper for nmcli — manage NetworkManager from the terminal with rounded corners and style.

Project description

nmcli-tui

A clean ncurses TUI wrapper for nmcli — manage NetworkManager from the terminal with rounded corners and style.

nmcli-tui wraps every major nmcli capability behind a tasteful, keyboard- driven terminal interface built on the standard-library curses module. No bloat, no Electron, no dependencies — just Python and NetworkManager.

🌸 A tribute to samsit-phew. Every ╭ ╮ ╰ ╯ on this screen is a small thank-you to a sensibility that believed terminal tools deserve rounded corners, soft accents and respect for the operator's eyes. Open the in-app help (?) to read it.


Features

  • Seven tabs covering the whole nmcli surface:

    Tab Covers
    General nmcli general — status, hostname, permissions
    Devices nmcli device — status, connect, disconnect, reapply, delete
    WiFi nmcli device wifi — scan, list, connect (with password), hidden networks
    Connections nmcli connection — show, up, down, edit, delete, clone, add, reload
    Networking nmcli networking — on / off / connectivity check
    Radio nmcli radio — Wi-Fi & WWAN toggles
    Help keybindings + the samsit-phew tribute
  • Rounded-corner panels drawn with Unicode box-drawing characters

  • Tables with columnar alignment, scrolling and a selection cursor

  • Modal dialogs — messages, confirmations, forms and an action menu

  • Password masking for Wi-Fi PSKs

  • Resizes with your terminal (KEY_RESIZE aware)

  • Zero runtime dependencies — pure standard library

Installation

From PyPI

pip install nmcli-tui

From source

git clone https://github.com/samsit-phew/nmcli-tui.git
cd nmcli-tui
pip install .

Then launch with:

nmcli-tui            # or the alias:  nmtui2
nmcli-tui --sudo     # if you have passwordless sudo

Most write operations (connect, modify, delete, …) require root. Run inside sudo or pass --sudo if your sudo is configured for non-interactive use.

Keys

Key Action
Tab / Next tab
Shift+Tab / Previous tab
17 Jump to a tab
or k j Move selection
Enter Activate item / open the action menu
Esc / q Close dialog / quit
r / F5 Refresh current tab
? Help (read the tribute!)

Tab-specific hotkeys are listed in the in-app help screen.

Why a TUI when nmtui already exists?

The bundled nmtui works but looks like 2010. nmcli-tui is a love letter to the terminal: rounded corners, a cohesive colour palette, a tabbed layout and inline forms — while still shelling out to the real nmcli so behaviour stays 100% compatible.

Packaging layout

nmcli-tui/
├── pyproject.toml          # PEP 517/518 build config + entry points
├── README.md
├── LICENSE
└── src/nmcli_tui/
    ├── __init__.py
    ├── __main__.py          # `python -m nmcli_tui`
    ├── cli.py               # argparse entry point
    ├── py.typed             # PEP 561 marker
    ├── core/
    │   └── nmcli.py         # the full nmcli wrapper
    └── tui/
        ├── theme.py         # colours + box-drawing constants
        ├── widgets.py       # Panel, Table, Form, TextInput, dialogs
        ├── screens.py       # the seven tab screens
        ├── help.py          # help + tribute
        └── app.py           # the main loop

Development

pip install -e ".[dev]"
python -m nmcli_tui

Build a distribution:

python -m build
twine upload dist/*

License

MIT — see LICENSE.


Made with rounded corners.
A tribute to samsit-phew.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nmcli_tui-1.0.0-py3-none-any.whl (27.7 kB view details)

Uploaded Python 3

File details

Details for the file nmcli_tui-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: nmcli_tui-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 27.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for nmcli_tui-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4ad5ed8c58b4ddec8d0c626627d1953b74b37530a7e5d95dd3fbf55451f5923d
MD5 5adec23cb5a32e3be9d2bbdf21f2c131
BLAKE2b-256 1e5749cda90b1516392bc39273a84f9ef680dff833d547af7a86f6a0ece67ec0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page