Skip to content

Repository files navigation

htop-win

A native Windows clone of htop - the beloved interactive process viewer, rebuilt from the ground up in Rust.

GitHub releaseLicense: MITPlatformRustGitHub stars

Inspired by the original htop by Hisham Muhammad and contributors.

htop-win - Windows Process Viewer

htop-win demo


Why htop-win?

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

Features

Real-time System Monitoring

  • 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

Interactive Process Management

  • 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
  • Terminate processes: Force terminate the selected process or tagged processes
  • Priority control: Change process priority class (Idle → Realtime)
  • CPU affinity: Pin processes to specific CPU cores

GPU & NPU Monitoring (Task Manager Parity)

  • 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

I/O Tab

A dedicated tab focused on disk I/O activity:

  • IO_RATE - Combined read + write rate per process (bytes/sec)
  • IO_R/s - Read rate
  • IO_W/s - Write rate
  • HNDL - Open handle count
  • Sorted by I/O rate by default

Windows-Specific Features

  • 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

Full Mouse Support

  • 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

Customization

  • 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

Installation

Quick Install (Recommended)

Download the latest release for your architecture:

ArchitectureDownload
x64 (Intel/AMD)htop-win-amd64.exe
ARM64htop-win-arm64.exe

Install to PATH

Run the downloaded executable as your normal user:

.\htop-win-amd64.exe--install

This performs a per-user install to %LOCALAPPDATA%\Microsoft\WindowsApps\htop.exe, which is already on the user's PATH. Administrator privileges and UAC elevation are not required.

Update

Check for updates and install automatically:

htop --update

Or force reinstall the current version:

htop --update --force

Build from Source

# 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.exe

Requirements: Rust 1.85+ (2024 edition), Windows 10/11


Usage

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, ppid, cpu/cpu%, mem/mem%/memory, time,
command/cmd, user, threads/thr
-t, --tree Start in tree view mode
-F, --filter <STRING> Initial filter string
-H, --highlight-changes <SECS>
--highlight <SECS> Highlight new processes for N seconds
-n, --max-iterations <N>
--iterations <N> Exit after N updates (for scripting)
--benchmark[=<N>] Run N iterations and print timing stats [default: 20]
--benchmark-iterations <N>
Run benchmark mode with N iterations
--inefficient Disable Efficiency Mode / EcoQoS
--no-color Monochrome mode
--no-mouse Disable mouse support
--no-meters Hide header meters
--readonly Disable process mutation operations
--install Install per-user to PATH (no administrator required)
--update Check for and install updates
--gpu-debug Print GPU/NPU adapter diagnostics and exit
--cpu-debug Print CPU / processor-group diagnostics and exit
-f, --force Force install/update
-h, --help Show help
-V, --version Show version

Examples

# 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# Benchmark with the default or an explicit iteration count
htop --benchmark
htop --benchmark=50
htop --benchmark-iterations 50

Keyboard Shortcuts

Navigation

KeyAction
/ kMove selection up
/ jMove selection down
PgUp / PgDnPage up / down
Home / gJump to first process
End / GJump to last process
Tab / Shift+TabSwitch screen tabs
1 / 2PID prefix search

Main Controls (Function Keys)

KeyAction
F1 / ?Help screen
F2 / SSetup menu
F3 / /Search processes
F4 / \Filter processes
F5 / tToggle tree view
F6 / <>Change sort column
F7 / ]Raise priority (opens dialog one class higher, Enter to apply)
F8 / [Lower priority (opens dialog one class lower, Enter to apply)
F9Force terminate process
F10 / qQuit

Process Operations

KeyAction
EnterView process details
SpaceTag/untag process
cTag process and all children
UUntag all processes
Ctrl+TTag all with same name
Ctrl+AToggle tag all visible
eView environment variables
wView full command line
aSet CPU affinity
FToggle follow mode

Tree View

KeyAction
+ / =Expand branch
-Collapse branch
*Toggle expand/collapse all
BackspaceCollapse to parent

Display

KeyAction
#Toggle header meters
pToggle program path display
HToggle user threads
KToggle kernel threads
ZPause/resume updates
IInvert sort order

Quick Sort

KeySort By
PCPU%
MMemory%
TTime
NPID

Configuration

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", "CLASS", "THR", "VIRT", "RES", "SHR", "S", "CPU%", "MEM%", "TIME+", "Command"],
"mouse_enabled": true,
"confirm_kill": true
}

Color Themes

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

Columns Reference

Main Tab

ColumnDescriptionWidth
PIDProcess ID7
PPIDParent Process ID7
USERProcess owner10
PRIPriority (0-31)4
CLASSPriority class (Idle/Normal/High/Realtime)7
THRThread count4
VIRTVirtual memory8
RESResident (physical) memory8
SHRShared memory8
SStatus if known; ? when Windows native process query does not expose htop-style state3
CPU%CPU usage percentage6
MEM%Memory usage percentage6
GPU%GPU utilization % (max across all GPU engines)6
GPU-MEMGPU committed memory across all adapters8
NPU%NPU utilization %6
NPU-MEMNPU dedicated + shared memory8
TIME+Cumulative CPU time10
STARTProcess start time8
CommandCommand lineFlexible
ELEVElevated/Admin status4
ARCHArchitecture (x86/x64/ARM64)5
ECOEfficiency Mode status4

New default configs include GPU% / GPU-MEM and NPU% / NPU-MEM when relevant hardware is detected. Existing custom column layouts are preserved; enable these columns from Setup if you want to add them later.

I/O Tab

ColumnDescription
PIDProcess ID
USERProcess owner
IO_RATECombined read + write rate (bytes/sec)
IO_R/sRead rate
IO_W/sWrite rate
IO_RDCumulative bytes read
IO_WRCumulative bytes written
HNDLOpen handle count
CommandCommand line

System Requirements

  • 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

Dependencies

Minimal dependency set optimized for small binary size:

DependencyPurpose
crosstermCross-platform terminal I/O
windows-rsNative Windows API bindings
unicode-widthUnicode character width calculation
bitflagsTerminal modifier flags
lexoptLightweight argument parsing

No heavy frameworks: Custom terminal UI library (replaces ratatui), custom JSON parser (replaces serde).


Performance

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

Comparison with Alternatives

Featurehtop-winTask ManagerProcess Explorer
Terminal-basedYesNoNo
Keyboard-drivenYesLimitedLimited
Tree viewYesYesYes
Process searchYesYesYes
CPU affinityYesYesYes
GPU/NPU monitoringYesYesNo
Efficiency ModeYesYesNo
I/O per-processYesNoYes
Custom columnsYesLimitedYes
Color themes8 themesNoNo
Binary size~500KBN/A~2MB
Auto-updateYesN/ANo

Contributing

Contributions are welcome! Please feel free to submit issues and pull requests.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.


Acknowledgments

  • 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

About

htop for Windows: inspired interactive process viewer for Windows, written in Rust

Topics

Resources

Stars

61 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages