Terminal network dashboard for Linux Mint. It shows public IPv4/IPv6 details, separate physical and VPN usage for 24/48 hours and 7/30 days, live throughput, an on-demand speed test, and local network information.
- Python 3.14
- Textual 8.2.7
vnstat,ip,nmcli,iw,curl,ping
Run as your normal user, not with sudo:
curl -fsSL https://raw.githubusercontent.com/touficmamdouh/npl/main/install.sh | bashThe installer adds any missing system packages, enables vnstat, creates a
private virtual environment for Textual, and links the command as
/usr/local/bin/npl.
Install the Python dependency if it is missing:
python3 -m pip install --user -r requirements.txtInstall the command launcher:
mkdir -p ~/.local/bin
ln -sfn "$PWD/bin/npl" ~/.local/bin/nplnpl
npl --once
npl --json
npl --speedtest
npl --interface wlp3s0Interactive keys:
qquitrrefresh IP, usage, and local datatspeed test, confirmed by pressingtagainiswitch live throughput between physical and VPN interfacesppause or resume live throughput?show help
Copy npl.toml.example to ~/.config/npl/config.toml and edit it. A
monthly_budget_gb of 0 disables the budget bar. The speed-test defaults
consume about 12 MB per run.
vnstat --jsonsupplies 24/48-hour and 7/30-day usage./proc/net/devsupplies live throughput.ipinfo.iosupplies public IP metadata.- Cloudflare speed endpoints supply the on-demand speed test.
ip,nmcli,iw, andpingsupply local network details.
Physical and VPN usage are always separate and never added together. The monthly budget uses the physical interface because it best matches the provider quota.
When ICMP is unavailable, latency falls back to TCP connection time for the
gateway (:53) and 1.1.1.1 (:443), so the tool does not need root.
NPL requires no root privileges, starts no daemon, and opens no listening
port. It has no telemetry. It contacts only ipinfo.io, Cloudflare's
speed-test endpoints, and the configured gateway/1.1.1.1 for latency.
- With a VPN active, public ISP and location describe the VPN exit node.
- Physical usage includes VPN overhead and some LAN traffic.
vnstathistory may be shorter than 30 days.- A speed test consumes about 12 MB.
- Speed-test rates are reported in Mbit/s.
- Cloudflare's speed-test endpoints may be blocked on some networks.
- IPv6 is shown as
N/Awhen the machine has no global IPv6 route.
npl --once
npl --json | python3 -m json.tool >/dev/null