A native Windows clone of htop - the beloved interactive process viewer, rebuilt from the ground up in Rust.
Inspired by the original htop by Hisham Muhammad and contributors.
Windows Task Manager is fine, but power users deserve better. htop-win brings the beloved Unix htop experience to Windows with:
- Blazing fast performance - Direct Windows API calls, no wrappers
- Tiny footprint - ~500KB binary with minimal dependencies
- Full htop compatibility - Same keyboard shortcuts you already know
- Windows-native features - Efficiency Mode, CPU affinity, elevation detection
- GPU/NPU monitoring - Task Manager parity via D3DKMT, auto-enabled when hardware exists
- Automatic updates - Background update checks with one-command upgrades
- Per-core CPU usage with color-coded gradient bars (green → yellow → red)
- Memory and swap usage visualization
- GPU meter - Total GPU utilization bar (shown automatically when a GPU is present)
- NPU meter - NPU utilization bar (shown automatically on Copilot+ and AI PC hardware)
- Network I/O rates (Rx/Tx)
- Disk I/O rates (read/write)
- Battery status and charge indicator
- System uptime and task/thread counts
- Configurable meter modes: Bar, Text, Graph, or Hidden
- Responsive header: scales gracefully from narrow to ultrawide terminals
- 27 sortable columns: PID, CPU%, MEM%, GPU%, NPU%, I/O rate, TIME+, Command, and more
- Screen tabs: Switch between the Main view and the dedicated I/O tab
- Tree view: Visualize parent-child process relationships with collapsible branches
- Search & Filter: Find processes instantly with live search
- Process tagging: Select multiple processes for batch operations
- Kill processes: Graceful termination or force kill
- Priority control: Change process priority class (Idle → Realtime)
- CPU affinity: Pin processes to specific CPU cores
- System-wide GPU utilization meter in the header
- System-wide NPU utilization meter in the header (Copilot+ PCs)
- Per-process GPU% and GPU-MEM columns
- Per-process NPU% and NPU-MEM columns
- Uses the D3DKMT statistics DDI — the same source as Task Manager
- Automatically detected and enabled; hidden on machines without the hardware
A dedicated tab focused on disk I/O activity:
- IO_RATE - Combined read + write rate per process
- IO_R/s - Read rate
- IO_W/s - Write rate
- HNDL - Open handle count
- Sorted by I/O rate by default
- Efficiency Mode (EcoQoS): Reduce power consumption for background processes
- Elevation detection: See which processes run as Administrator
- Architecture display: Identify x86, x64, and ARM64 processes
- Service account support: View SYSTEM, LOCAL SERVICE, NETWORK SERVICE processes
- Modified executable detection: Highlight processes with changed/deleted binaries
- Click to select, double-click for details
- Right-click to tag processes
- Click column headers to sort
- Scroll wheel navigation
- Click meters to cycle display modes
- Click tabs to switch views
- 8 color themes: Default, Monochrome, Light Terminal, Midnight, Nord, and more
- Configurable columns: Show/hide and reorder any column, saved per-tab
- Adjustable refresh rate: 100ms to 5 seconds
- Persistent settings: Configuration saved to
%APPDATA%\htop-win\config
Download the latest release for your architecture:
| Architecture | Download |
|---|---|
| x64 (Intel/AMD) | htop-win-amd64.exe |
| ARM64 | htop-win-arm64.exe |
Run with administrator privileges to install globally:
.\htop-win-amd64.exe --installThis installs to %LOCALAPPDATA%\Microsoft\WindowsApps\htop.exe, making htop available from any terminal.
Check for updates and install automatically:
htop --updateOr force reinstall the current version:
htop --update --force# Clone the repository
git clone https://github.com/faratech/htop-win.git
cd htop-win
# Build optimized release (~500KB binary)
cargo build --release
# Run
.\target\release\htop-win.exeRequirements: Rust 1.85+ (2024 edition), Windows 10/11
htop-win [OPTIONS]
Options:
-d, --delay <MS> Refresh rate in milliseconds [default: 1500]
-u, --user <USER> Show only processes from this user
-p, --pid <PID,...> Show only these PIDs (comma-separated)
-s, --sort <COLUMN> Sort by: pid, cpu, mem, time, command, user
-t, --tree Start in tree view mode
-F, --filter <STRING> Initial filter string
-H, --highlight <SECS> Highlight new processes for N seconds
-n, --iterations <N> Exit after N updates (for scripting)
--no-color Monochrome mode
--no-mouse Disable mouse support
--no-meters Hide header meters
--readonly Disable kill/priority operations
--install Install to PATH (requires admin)
--update Check for and install updates
-f, --force Force install/update
-h, --help Show help
-V, --version Show version
# Monitor with 500ms refresh rate
htop -d 500
# Show only processes from current user
htop -u $env:USERNAME
# Start in tree view, sorted by memory
htop -t -s mem
# Filter to show only Chrome processes
htop -F chrome
# Monitor specific PIDs
htop -p 1234,5678,9012| Key | Action |
|---|---|
↑ / k |
Move selection up |
↓ / j |
Move selection down |
PgUp / PgDn |
Page up / down |
Home / g |
Jump to first process |
End / G |
Jump to last process |
Tab |
Cycle focus: Header → Process List → Footer |
1 / 2 |
Switch to Main / I/O tab |
| Key | Action |
|---|---|
F1 / ? |
Help screen |
F2 / S |
Setup menu |
F3 / / |
Search processes |
F4 / \ |
Filter processes |
F5 / t |
Toggle tree view |
F6 / < > |
Change sort column |
F7 / ] |
Decrease priority (nice+) |
F8 / [ |
Increase priority (nice-) |
F9 |
Kill process |
F10 / q |
Quit |
| Key | Action |
|---|---|
Enter |
View process details |
Space |
Tag/untag process |
c |
Tag process and all children |
U |
Untag all processes |
Ctrl+T |
Tag all with same name |
Ctrl+A |
Toggle tag all visible |
e |
View environment variables |
w |
View full command line |
a |
Set CPU affinity |
F |
Toggle follow mode |
| Key | Action |
|---|---|
+ / = |
Expand branch |
- |
Collapse branch |
* |
Toggle expand/collapse all |
Backspace |
Collapse to parent |
| Key | Action |
|---|---|
# |
Toggle header meters |
p |
Toggle program path display |
H |
Toggle user threads |
K |
Toggle kernel threads |
Z |
Pause/resume updates |
I |
Invert sort order |
| Key | Sort By |
|---|---|
P |
CPU% |
M |
Memory% |
T |
Time |
N |
PID |
htop-win saves settings to %APPDATA%\htop-win\config\config.json. Configure via the Setup menu (F2) or edit directly:
{
"refresh_rate_ms": 1500,
"tree_view_default": false,
"color_scheme": "Default",
"show_kernel_threads": false,
"show_program_path": false,
"highlight_new_processes": true,
"highlight_large_numbers": true,
"cpu_meter_mode": "Bar",
"memory_meter_mode": "Bar",
"visible_columns": ["PID", "USER", "PRI", "CPU%", "MEM%", "TIME+", "Command"],
"mouse_enabled": true,
"confirm_kill": true
}Access via Setup (F2) → Color Scheme:
- Default - Classic htop colors
- Monochrome - No colors (accessibility)
- Black on White - Light theme
- Light Terminal - For light backgrounds
- Midnight - Dark blue theme
- Blacknight - Pure dark theme
- Broken Gray - Subtle grays
- Nord - Nord color palette
| Column | Description | Width |
|---|---|---|
PID |
Process ID | 7 |
PPID |
Parent Process ID | 7 |
USER |
Process owner | 10 |
PRI |
Priority (0-31) | 4 |
CLASS |
Priority class (Idle/Normal/High/Realtime) | 7 |
THR |
Thread count | 4 |
VIRT |
Virtual memory | 8 |
RES |
Resident (physical) memory | 8 |
SHR |
Shared memory | 8 |
S |
Status (R=Running, S=Sleeping) | 3 |
CPU% |
CPU usage percentage | 6 |
MEM% |
Memory usage percentage | 6 |
GPU% |
GPU utilization % (max across all GPU engines) | 6 |
GPU-MEM |
GPU committed memory across all adapters | 8 |
NPU% |
NPU utilization % | 6 |
NPU-MEM |
NPU dedicated + shared memory | 8 |
TIME+ |
Cumulative CPU time | 10 |
START |
Process start time | 8 |
Command |
Command line | Flexible |
ELEV |
Elevated/Admin status | 4 |
ARCH |
Architecture (x86/x64/ARM64) | 5 |
ECO |
Efficiency Mode status | 4 |
GPU% / GPU-MEM and NPU% / NPU-MEM are automatically added to the default column set the first time htop-win detects the relevant hardware.
| Column | Description |
|---|---|
PID |
Process ID |
USER |
Process owner |
IO_RATE |
Combined read + write rate (bytes/refresh) |
IO_R/s |
Read rate |
IO_W/s |
Write rate |
IO_RD |
Cumulative bytes read |
IO_WR |
Cumulative bytes written |
HNDL |
Open handle count |
Command |
Command line |
- OS: Windows 10 (1903+) or Windows 11
- Architecture: x64 (AMD64) or ARM64
- Terminal: Windows Terminal recommended (supports full color and Unicode)
- Privileges: Administrator recommended for full process visibility
Minimal dependency set optimized for small binary size:
| Dependency | Purpose |
|---|---|
| crossterm | Cross-platform terminal I/O |
| windows-rs | Native Windows API bindings |
| unicode-width | Unicode character width calculation |
| bitflags | Terminal modifier flags |
| lexopt | Lightweight argument parsing |
No heavy frameworks: Custom terminal UI library (replaces ratatui), custom JSON parser (replaces serde).
htop-win is designed for efficiency:
- ~500KB binary - Minimal dependencies, LTO optimization
- Efficiency Mode by default - Runs with reduced CPU priority
- Smart caching - Minimizes Windows API calls
- Background data collection - System metrics refresh off the UI thread
- Diff-based rendering - Only updates changed terminal cells
- Direct API access - No abstraction layers
| Feature | htop-win | Task Manager | Process Explorer |
|---|---|---|---|
| Terminal-based | Yes | No | No |
| Keyboard-driven | Yes | Limited | Limited |
| Tree view | Yes | Yes | Yes |
| Process search | Yes | Yes | Yes |
| CPU affinity | Yes | Yes | Yes |
| GPU/NPU monitoring | Yes | Yes | No |
| Efficiency Mode | Yes | Yes | No |
| I/O per-process | Yes | No | Yes |
| Custom columns | Yes | Limited | Yes |
| Color themes | 8 themes | No | No |
| Binary size | ~500KB | N/A | ~2MB |
| Auto-update | Yes | N/A | No |
Contributions are welcome! Please feel free to submit issues and pull requests.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- htop - The original inspiration by Hisham Muhammad
- windows-rs - Excellent Windows API bindings
- crossterm - Cross-platform terminal library
Star this repo if you find it useful!
https://github.com/faratech/htop-win