winload 0.1.7-beta.4

Network Load Monitor โ€” nload-like TUI tool for Windows/Linux/macOS
winload-0.1.7-beta.4 is not a library.

winload

Winload

A lightweight, real-time CLI tool for monitoring network bandwidth and traffic, inspired by Linux's nload.

๐Ÿ“– English ๐Ÿ“– ็ฎ€ไฝ“ไธญๆ–‡(ๅคง้™†) ๐Ÿ“– ็น้ซ”ไธญๆ–‡(ๅฐ็ฃ) ๐Ÿ“– ๆ—ฅๆœฌ่ชž ๐Ÿ“– ํ•œ๊ตญ์–ด

GitHub Gitee

Windows x64 | ARM64 Linux x64 | ARM64 macOS x64 | ARM64 Android x64 | ARM64

PyPI npm

Scoop AUR APT RPM

๐Ÿ“– Build Docs

๐Ÿš€ Introduction

Winload brings an intuitive, visual network monitor to the modern terminal. It started as a Windows-focused tool to fill the nload gap, and now targets Linux and macOS as well.

๐Ÿ™ Acknowledgements

Winload is inspired by the classic nload project by Roland Riegel. Many thanks for the original idea and experience. https://github.com/rolandriegel/nload

โœจ Key Features

  • Dual implementations
    • Rust edition: fast, memory-safe, single static binaryโ€”great for everyday monitoring.
    • Python edition: easy to hack and extend for prototyping or integrations.
  • Cross-platform: Windows, Linux, and macOS (x64 & ARM64).
  • Real-time visualization: live incoming/outgoing graphs and throughput stats.
  • Minimal UI: clean TUI that mirrors nload's ergonomics.

๐Ÿ“ฅ Python Edition Installation

๐Ÿ’ก Implementation Note: Only PyPI and source code from GitHub/Gitee provide Python edition.
All package managers (Scoop, AUR, npm, APT, RPM) distribute Rust binaries only.

Python (pip)

pip install winload

๐Ÿ“ฅ Rust Edition Installation (recommended)

npm (cross-platform)

npm install -g winload-rust-bin

# or use npx directly

npx winload-rust-bin

Includes 6 precompiled binaries for x86_64 & ARM64 across Windows, Linux, and macOS.

Windows (Scoop)

scoop bucket add vincentzyu https://github.com/VincentZyuApps/scoop-bucket
scoop install winload

Arch Linux (AUR):

paru -S winload-rust-bin

Linux (one-liner)

Supports Debian/Ubuntu and derivatives โ€” Linux Mint, Pop!_OS, Deepin, UOS, etc. (apt)

Supports Fedora/RHEL and derivatives โ€” Rocky Linux, AlmaLinux, CentOS Stream, etc. (dnf)

curl -fsSL https://raw.githubusercontent.com/VincentZyuApps/winload/main/docs/install_scripts/install.sh | bash

๐Ÿ“„ View install script source

DEB (Debian/Ubuntu):

# Download the latest .deb from GitHub Releases

sudo dpkg -i ./winload_*_amd64.deb

# or use apt (auto-resolves dependencies)

sudo apt install ./winload_*_amd64.deb

RPM (Fedora/RHEL):

sudo dnf install ./winload-*-1.x86_64.rpm

Or download binaries directly from GitHub Releases.

โŒจ๏ธ Usage

winload              # Monitor all active network interfaces

winload -t 200       # Set refresh interval to 200ms

winload -d "Wi-Fi"   # Start with a specific device

winload -e           # Enable emoji decorations ๐ŸŽ‰

winload --npcap      # Capture 127.0.0.1 loopback traffic (Windows, requires Npcap)

Options

Flag Description Default
-t, --interval <MS> Refresh interval in milliseconds 500
-a, --average <SEC> Average calculation window in seconds 300
-d, --device <NAME> Default device name (partial match) โ€”
-e, --emoji Enable emoji decorations in TUI ๐ŸŽ‰ off
-U, --unicode Use Unicode block characters for graph (โ–ˆโ–“โ–‘ยท) off
-u, --unit <UNIT> Display unit: bit or byte bit
-b, --bar-style <STYLE> Bar style: fill, color, or plain fill
--in-color <HEX> Incoming graph color, hex RGB (e.g. 0x00d7ff) cyan
--out-color <HEX> Outgoing graph color, hex RGB (e.g. 0xffaf00) gold
-m, --max <VALUE> Fixed Y-axis max (e.g. 10M, 1G, 500K) auto
-n, --no-graph Hide graph, show stats only off
--hide-separator Hide the separator line (row of equals signs) off
--no-color Disable all TUI colors (monochrome mode) off
--npcap [Windows Rust Only] Capture loopback traffic via Npcap (recommended) off
--debug-info [Rust Only] Print network interface debug info and exit โ€”
-h, --help Print help (--help --emoji for emoji version!) โ€”
-V, --version [Rust Only] Print version โ€”

Keyboard Shortcuts

Key Action
โ† / โ†’ or โ†‘ / โ†“ Switch network device
= Toggle separator line visibility
c Toggle color on/off
q / Esc Quit

๐ŸชŸ Windows Loopback (127.0.0.1)

Windows cannot report loopback traffic through standard APIs โ€” this is a functional deficiency in Windows' network stack.

To capture loopback traffic on Windows, use the --npcap flag:

winload --npcap

This requires Npcap installed with "Support loopback traffic capture" enabled during setup.

I previously tried polling Windows' own GetIfEntry API directly, but the counters are always 0 for loopback โ€” there is simply no NDIS driver behind the loopback pseudo-interface to count anything. That code path has been removed.

๐Ÿ“– For a deep dive into why Windows loopback is broken, see docs/win_loopback.md

On Linux and macOS, loopback traffic works out of the box โ€” no extra flags needed.

๐Ÿ–ผ๏ธ Previews

Python Edition Preview

docs/preview-py.png

Rust Edition Preview

docs/preview-rust.png