https://github.com/vincentzyuapps/winload
📊 Winload: A real-time terminal network traffic monitor inspired by nload. Dual implementations in 🦀Rust and 🐍Python, with cross-platform support for Windows, Linux, and macOS. 🖥️
https://github.com/vincentzyuapps/winload
cli console monitoring monitoring-application network network-gragh python rust tool tui
Last synced: 23 days ago
JSON representation
📊 Winload: A real-time terminal network traffic monitor inspired by nload. Dual implementations in 🦀Rust and 🐍Python, with cross-platform support for Windows, Linux, and macOS. 🖥️
- Host: GitHub
- URL: https://github.com/vincentzyuapps/winload
- Owner: VincentZyuApps
- License: mit
- Created: 2026-02-08T01:54:53.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-05-29T11:09:13.000Z (23 days ago)
- Last Synced: 2026-05-29T11:17:15.574Z (23 days ago)
- Topics: cli, console, monitoring, monitoring-application, network, network-gragh, python, rust, tool, tui
- Language: Rust
- Homepage:
- Size: 3.43 MB
- Stars: 24
- Watchers: 0
- Forks: 3
- Open Issues: 3
-
Metadata Files:
- Readme: readme.jp.md
- License: LICENSE
Awesome Lists containing this project
README


# Winload 
> Linuxの「nload」にインスパイアされた、軽量でリアルタイムなネットワーク帯域幅およびトラフィック監視用CLIツールです。
> **[📖 English](readme.md)**
> **[📖 简体中文(大陆)](readme.zh-cn.md)**
> **[📖 繁體中文(台灣)](readme.zh-tw.md)**
> **[📖 日本語](readme.jp.md)**
> **[📖 한국어](readme.ko.md)**
[](https://github.com/VincentZyuApps/winload)
[](https://gitee.com/vincent-zyu/winload)
[](https://github.com/VincentZyuApps/winload/releases)
[](https://github.com/VincentZyuApps/winload/releases)
[](https://github.com/VincentZyuApps/winload/releases)
[](https://github.com/VincentZyuApps/winload/releases)
[](https://pypi.org/project/winload/)
[](https://www.npmjs.com/package/@vincentzyuapps/winload)
[](https://crates.io/crates/winload)
[](https://scoop.sh/#/apps?q=%22https%3A%2F%2Fgithub.com%2FVincentZyuApps%2Fscoop-bucket%22&o=false)
[](https://aur.archlinux.org/packages/winload-rust-bin)
[](https://github.com/VincentZyuApps/winload/releases)
[](https://github.com/VincentZyuApps/winload/releases)
[](https://github.com/VincentZyuApps/homebrew-tap/blob/main/Formula/winload.rb)
> **[📖 ビルドドキュメント](.github/workflows/build.md)**
## 🚀 はじめに
`Winload`は、直感的で視覚的なネットワークモニターをモダンなターミナルにもたらします。もともとはWindowsにおける`nload`の代替ツールとして開発が始まりましたが、現在はLinuxやmacOSもサポートしています。
## 🙏 謝辞
Winloadは、Roland Riegel氏によるクラシックなプロジェクト「[nload](https://github.com/rolandriegel/nload)」にインスパイアされています。素晴らしいアイデアとユーザー体験に深く感謝いたします。
https://github.com/rolandriegel/nload
## ✨ 主な特徴
- **2つの実装エディション**
- **Rust版**: 高速、メモリ安全、単一の静的バイナリ。日常的な監視に最適です。
- **Python版**: プロトタイプ作成や統合のために、ハックや拡張が容易です。
- **クロスプラットフォーム**: Windows、Linux、macOS (x64 & ARM64) に対応。
- **リアルタイムの可視化**: 送受信トラフィックのライブグラフとスループット統計を表示。
- **ミニマルなUI**: nloadの使い勝手を踏襲したクリーンなTUI(テキストユーザインターフェース)。
## 📊 パフォーマンスベンチマーク
> ⚡ Winload (Rust) は **~10ms の起動時間** と **5MB未満のバイナリサイズ** を達成し、Python版を大幅に上回り、C++製 nload と同等の効率を実現しています。

## 🔧 ソースから実行
### Python
```bash
git clone https://github.com/VincentZyuApps/winload.git
# または Gitee からクローン(中国本土で高速):
# git clone https://gitee.com/vincent-zyu/winload.git
cd winload/py
pip install -r requirements.txt
python main.py
```
### Rust
```bash
git clone https://github.com/VincentZyuApps/winload.git
cd winload/rust
cargo run --release
cargo run --release -- --help # ヘルプを表示
cargo run --release -- --version # バージョンを表示
```
## 🐍 Python 版 インストール
> 💡 **実装に関する注記**: PyPI および GitHub/Gitee のソースコードのみが Python 版です。
> Cargo のみが Rust ソースコードのローカルビルドを提供します。
> すべて他方のパッケージマネージャー(Scoop、AUR、npm、APT、RPM)および GitHub Releases は **Rust バイナリ** を提供しています。
### Python (pip)
```bash
pip install winload
# uv の使用を推奨:
# https://docs.astral.sh/uv/getting-started/installation/
# https://gitee.com/wangnov/uv-custom/releases
uv venv --python 3.13
uv pip install winload
uv run winload
uv run python -c "import shutil; print(shutil.which('winload'))"
```
## 📥 Rust 版 インストール(推奨)
### npm (クロスプラットフォーム)
```bash
npm install -g @vincentzyuapps/winload
npm list -g @vincentzyuapps/winload
# Windows では System32\winload.exe との競合を避けるため win-nload を使用
# Linux/macOS では winload と win-nload のどちらも使用可能
# または npx を直接使用
npx @vincentzyuapps/winload
```
> ⚠️ 旧パッケージ名 `winload-rust-bin` は非推奨となりました。`@vincentzyuapps/winload` をご利用ください。scoped パッケージ名への変更は [GitHub Packages](https://github.com/features/packages) の仕様に対応するためです。
> 6つのプリコンパイル済みバイナリを含む:x86_64 & ARM64 対応、Windows・Linux・macOS に対応。
### Cargo (ソースからビルド)
```bash
cargo install winload
cargo install --list
```
### Windows (Scoop)
> 📄 [Scoop Bucket (GitHub)](https://github.com/VincentZyuApps/scoop-bucket/blob/main/bucket/winload.json)
> 📄 [Scoop Bucket (Gitee)](https://gitee.com/vincent-zyu/scoop-bucket/blob/main/bucket/winload.json)
```powershell
scoop bucket add vincentzyu https://github.com/VincentZyuApps/scoop-bucket
# または Gitee から:
# scoop bucket add vincentzyu https://gitee.com/vincent-zyu/scoop-bucket
scoop update # optional: インストール前に bucket を手動更新
scoop install winload
# バイナリファイルを実行
win-nload
Get-Command win-nload # Powershell
where win-nload # CMD
```
> 💡 レガシーの Windows Console ではなく、[Windows Terminal](https://github.com/microsoft/terminal) の使用を推奨します。CJK 文字の正確なレンダリングとより良い TUI 体験が得られます。
> ```powershell
> scoop bucket add versions
> scoop install windows-terminal-preview
> wtp
> ```
> 💡 **すべてのビルドに Windows 10+ が必要です**(Rust 1.77+ は Windows 7/8 をサポートしなくなりました)。Scoop と npm は既定で **x86_64** および **ARM64** 向けの **MSVC + Npcap** ビルドを提供します。これらのビルドは `wpcap.dll` を遅延読み込みするようになったため、`--npcap` を使う前の起動失敗リスクは下がりましたが、ループバック取得には引き続きシステムに Npcap が必要です。その他のバリアント(MinGW、Npcap なし、i686)は [GitHub Releases](https://github.com/VincentZyuApps/winload/releases) からダウンロードしてください。
### Arch Linux (AUR):
```bash
paru -S winload-rust-bin
which winload
```
### Linux (ワンライナー)
> Debian/Ubuntu およびその派生版(Linux Mint, Pop!_OS, Deepin, UOS等)をサポート (apt)
> Fedora/RHEL およびその派生版(Rocky Linux, AlmaLinux, CentOS Stream等)をサポート (dnf)
```bash
curl -fsSL https://raw.githubusercontent.com/VincentZyuApps/winload/main/docs/install_scripts/install.sh | bash
which winload
```
> 📄 [インストールスクリプトのソースを表示](https://github.com/VincentZyuApps/winload/blob/main/docs/install_scripts/install.sh)
**🇨🇳 Giteeミラー(中国本土内での高速ダウンロード):**
```bash
curl -fsSL https://gitee.com/vincent-zyu/winload/raw/main/docs/install_scripts/install_gitee.sh | bash
which winload
```
> 📄 [Giteeインストールスクリプトを表示](https://gitee.com/vincent-zyu/winload/blob/main/docs/install_scripts/install_gitee.sh)
> ⚠️ 上記の2つの `curl ... | bash` インストールスクリプトは、**x86_64 / aarch64** アーキテクチャ上で **apt**(Debian/Ubuntu)、**dnf**(Fedora/RHEL)、または **Termux**(Android)を使用するシステムをサポートしています。その他のプラットフォームでは **npm**(`npm install -g @vincentzyuapps/winload`)または **Cargo**(`cargo install winload`)をご利用ください。
### macOS / Linux(Homebrew)
> 📄 [Homebrew Formula (GitHub)](https://github.com/VincentZyuApps/homebrew-tap/blob/main/Formula/winload.rb)
> 📄 [Homebrew Formula (Gitee)](https://gitee.com/vincent-zyu/homebrew-tap/blob/main/Formula/winload.rb)
```bash
brew tap vincentzyuapps/tap
# または Gitee から(手動クローン):
# git clone https://gitee.com/vincent-zyu/homebrew-tap.git "$(brew --prefix)/Library/Taps/vincentzyuapps/homebrew-tap"
brew update && brew install winload
which winload
```
> 💡 Homebrew は **macOS**(Intel および Apple Silicon)と **Linux**(x86_64 および ARM64)をサポートしています。
手動インストール
**DEB (Debian/Ubuntu):**
```bash
# GitHub Releasesから最新の .deb をダウンロード
sudo dpkg -i ./winload*.deb
# または apt を使用(依存関係を自動解決)
sudo apt install ./winload*.deb
which winload
```
**RPM (Fedora/RHEL):**
```bash
sudo dnf install ./winload*.rpm
which winload
```
**または、[GitHub Releases](https://github.com/VincentZyuApps/winload/releases) からバイナリを直接ダウンロードしてください。**
## ⌨️ 使い方
```bash
winload # すべてのアクティブなネットワークインターフェースを監視
winload -t 200 # 更新間隔を200ミリ秒に設定
winload -d "Wi-Fi" # 特定のデバイス名で開始
winload --title # ヘッダーに "winload " を表示
winload --title "My Monitor" # カスタムヘッダータイトルを使う
winload --title "" # 既定のデバイスヘッダーを使う
winload -e # 絵文字装飾を有効にする 🎉
winload --npcap # 127.0.0.1 ループバックトラフィックをキャプチャ (Windows, Npcapが必要)
```
### オプション
| フラグ | 説明 | デフォルト |
|------|-------------|---------|
| `-t`, `--interval ` | 更新間隔(ミリ秒) | `500` |
| `-a`, `--average ` | 平均値計算のウィンドウ時間(秒) | `300` |
| `-d`, `--device ` | デフォルトのデバイス名(部分一致可) | — |
| `--title [TITLE]` | ヘッダータイトルを上書き。値なしは `winload `、空文字列は既定のデバイスヘッダー | — |
| `-e`, `--emoji` | TUIで絵文字装飾を有効にする 🎉 | オフ |
| `-U`, `--unicode` | グラフにUnicodeブロック文字を使用 (█▓░·) | オフ |
| `-u`, `--unit ` | 表示単位: `bit` または `byte` | `bit` |
| `-b`, `--bar-style ` | バースタイル: `fill`, `color`, `plain` | `fill` |
| `--in-color <HEX>` | 受信グラフの色、16進数RGB (例: `0x00d7ff`) | シアン |
| `--out-color <HEX>` | 送信グラフの色、16進数RGB (例: `0xffaf00`) | ゴールド |
| `-m`, `--max <VALUE>` | Y軸の最大値を固定 (例: `10M`, `1G`, `500K`) —— *`--smart-max` と併用不可* | 自動 |
| `--smart-max [SECS]` | スマート適応型Y軸上限:トラフィックスパイク後に自動的に指数減衰し、波形がより動的に(半減期、秒、デフォルト10秒)—— *`--max` と併用不可* | オフ |
| `-n`, `--no-graph` | グラフを非表示にし、統計のみを表示 | オフ |
| `--hide-separator` | 区切り線(イコール記号の行)を非表示にする | オフ |
| `--no-color` | すべてのTUIカラーを無効にする(モノクロモード) | オフ |
| `--npcap` | **[Windows Rust Only]** Npcap経由でループバックをキャプチャ | オフ |
| `--debug-info` | インターフェースのデバッグ情報を表示して終了 | — |
| `-h`, `--help` | ヘルプを表示 (`--help --emoji` で絵文字版ヘルプ!) | — |
| `-V`, `--version` | バージョンを表示 | — |
> **Y軸スケーリングモード** —— 以下の3つのシナリオは排他的です:
>
> | モード | フラグ | 動作 |
> |--------|--------|------|
> | **固定最大値** | `--max <VALUE>` | Y軸を指定した値に固定します(例:`10M`、`1G`)。 |
> | **スマート最大値** | `--smart-max [SECS]` | Y軸が自動適応:トラフィック急増時に即座に上昇し、その後スムーズに減衰します(指数減衰、デフォルト半減期 10 秒)。 |
> | **履歴ピーク** | *(どちらも指定なし)* | Y軸は各指標の過去最大値に追従します —— デフォルトの動作です。 |
>
> ⚠️ `--max` と `--smart-max` は**併用不可**です —— どちらか一方のみ指定できます。
### キーボードショートカット
| キー | アクション |
|-----|--------|
| `←` / `→` または `↑` / `↓` | ネットワークデバイスを切り替える |
| `F3` | デバッグ情報オーバーレイの切り替え(Minecraft 風) |
| `=` | 区切り線の表示/非表示を切り替える |
| `c` | カラーのオン/オフを切り替える |
| `q` / `Esc` | 終了 |
## 🪟 Windows ループバック (127.0.0.1) について
Windowsの標準的なAPIでは、ループバックトラフィックを正しく報告できません。これは[Windowsのネットワークスタックにおける機能的な制限](docs/win_loopback.md)によるものです。
**Windowsでループバックトラフィックをキャプチャする場合**は、`--npcap` フラグを使用してください:
```bash
winload --npcap
```
これには、セットアップ時に「Support loopback traffic capture(ループバックトラフィックキャプチャのサポート)」を有効にして [Npcap](https://npcap.com/#download) をインストールする必要があります。
> 以前、Windows独自の `GetIfEntry` APIを直接ポーリングする方法を試みましたが、ループバックのカウンタは常に0でした。ループバックの疑似インターフェースの背後には、カウントを行うためのNDISドライバが存在しないためです。そのため、そのコードパスは削除されました。
> 📖 なぜWindowsのループバックが制限されているのかについての詳細は、[docs/win_loopback.md](docs/win_loopback.md) を参照してください。
LinuxおよびmacOSでは、ループバックトラフィックは追加のフラグなしで標準で動作します。
## 🖼️ プレビュー
#### Python版 プレビュー

#### Rust版 プレビュー

##### Rust版 プレビュー GIF

##### ターミナル録画
<a href="https://asciinema.org/a/1030894?startAt=30" target="_blank"><img src="https://asciinema.org/a/1030894.svg" alt="winload demo" width="100%" /></a>
> ↑ [asciinema](https://github.com/asciinema/asciinema) で録画
## 📦 依存関係
### Python版
| パッケージ | バージョン | 説明 |
|:---|:---|:---|
| [](https://python.org/) | 3.13.11 | プログラミング言語 |
| [](https://github.com/giampaolo/psutil) | ≥7.0 | プロセス・システムユーティリティ |
| [](https://github.com/zhirui2020/windows-curses) | ≥2.0 | Windows カーサポート |
### Rust版
| パッケージ | バージョン | 説明 |
|:---|:---|:---|
| [](https://www.rust-lang.org/) | 1.93.0 | プログラミング言語 |
| [](https://github.com/ratatui-org/ratatui) | 0.29 | ターミナルUIフレームワーク |
| [](https://github.com/crossterm-rs/crossterm) | 0.28 | クロスプラットフォームターミナルライブラリ |
| [](https://github.com/GuillaumeGomez/sysinfo) | 0.32 | システム情報ライブラリ |
| [](https://github.com/clap-rs/clap) | 4 | コマンドライン引数パーサー |
| [](https://github.com/pcap-parser/pcap) | 2 | パケットキャプチャ(オプション、Windows) |