██████╗ ███████╗████████╗ ██████╗ ██████╗ ██╔══██╗██╔════╝╚══██╔══╝██╔═══██╗██╔══██╗ ██████╔╝███████╗ ██║ ██║ ██║██████╔╝ ██╔═══╝ ╚════██║ ██║ ██║ ██║██╔═══╝ ██║ ███████║ ██║ ╚██████╔╝██║ ╚═╝ ╚══════╝ ╚═╝ ╚═════╝ ╚═╝
Beautiful, fast, real-time system monitor for Windows. Built in Rust.
Install • Features • Keys • Themes • Config • License
If you've ever missed htop on Windows, your search is over. pstop brings the full htop experience to Windows PowerShell. No WSL, no Cygwin, no compromises.
| pstop | Task Manager | Get-Process |
|
|---|---|---|---|
| Real-time CPU per-core bars | ✅ | ❌ | ❌ |
| Memory / Swap / Network bars | ✅ | Partial | ❌ |
| GPU utilization & VRAM bars | ✅ | Basic | ❌ |
| Tree view (process hierarchy) | ✅ | ❌ | ❌ |
| Search & filter processes | ✅ | Basic | ❌ |
| Kill / change priority | ✅ | ✅ | Manual |
| Mouse support | ✅ | ✅ | ❌ |
| 7 color schemes | ✅ | ❌ | ❌ |
| Keyboard-driven | ✅ | ❌ | ❌ |
| Runs in terminal | ✅ | ❌ | ✅ |
| ~1 MB binary, zero dependencies | ✅ | N/A | N/A |
winget install marlocarlo.pstopchoco install pstopcargo install pstopDon't have Rust/Cargo? Install it in seconds: https://rustup.rs
Download the latest .zip from GitHub Releases, extract, and add to your PATH.
cargo install --git https://github.com/psmux/pstopgit clone https://github.com/psmux/pstop.git
cd pstop
cargo build --release
# Binary at: target/release/pstop.exe + target/release/htop.exeAll methods install both pstop and htop commands. Yes, you can just type htop on Windows.
If you only installed pstop and want the htop alias in your PowerShell profile:
pstop --install-aliasThis adds Set-Alias htop pstop to your $PROFILE automatically.
Real-time CPU usage bars for every logical core, color-coded by usage type (user / system / virtual), exactly like htop. CPU columns auto-adjust based on core count (2/4/8/16 columns) and terminal size — just like htop's calcColumnWidthCount.
- Mem bar: shows used (green), buffers (blue), cached (yellow)
- Swap bar: swap usage with color threshold
- Net bar: live RX/TX throughput in the header
- GPU bar: overall GPU utilization percentage (shown on GPU tab)
- VMem bar: dedicated video memory usage (shown on GPU tab)
Press F5 or t to toggle process tree view — see parent-child relationships with ├─ / └─ tree connectors, collapsible nodes with +/-.
- F3 - Incremental search: jumps to matching process
- F4 - Filter: hides all non-matching processes in real-time
- Main - Full process table (PID, USER, CPU%, MEM%, TIME+, Command...)
- I/O - Disk read/write rates per process
- Net - Per-process network bandwidth (live download/upload rates with auto-scaling B/s, KB/s, MB/s, GB/s) plus active connection counts. No admin required.
- GPU - Per-process GPU engine utilization and dedicated/shared video memory usage via PDH performance counters
Press F2 to open the setup menu with 4 categories:
- Meters - Configure header layout (CPU, Memory, Swap, Network, Tasks, Load, Uptime)
- Display Options - 15 toggleable settings (tree view, highlight basename, shadow other users, show threads, detailed CPU time, vim keys, and more)
- Colors - Choose from 7 built-in color schemes with live preview
- Columns - Add/remove/reorder visible columns
Switch instantly in F2 > Colors:
- Default - Classic htop green/cyan on black
- Monochrome - Pure white on black
- Black Night - Muted tones for dark terminals
- Light Terminal - Optimized for light backgrounds
- Midnight Commander - Blue background, MC-inspired
- Black on White - Clean light theme
- Dark Vivid - High-contrast neon colors
- Click anywhere in the process table to select
- Click column headers to sort
- Click F-key bar buttons
- Click tabs to switch views
- Scroll wheel for navigation
Familiar htop keybindings — zero learning curve if you know htop.
All settings auto-save to %APPDATA%/pstop/pstoprc and restore on next launch. Your color scheme, display options, column choices, sort preference... everything persists.
- ~1 MB single binary (release build with LTO + strip)
- 50ms event polling for instant keyboard response
- Configurable refresh rate (200ms–10s)
- Native Win32 API calls for I/O counters, process priority, CPU affinity
- Zero runtime dependencies
| Key | Action |
|---|---|
F1 / ? |
Help screen |
F2 |
Setup menu (meters, display, colors, columns) |
F3 / / |
Search processes |
F4 / \ |
Filter processes |
F5 / t |
Toggle tree view |
F6 / > |
Sort by column |
F7 / F8 |
Decrease / Increase process priority (nice) |
F9 / k |
Kill process |
F10 / q |
Quit |
Tab |
Switch between Main / I/O / Net / GPU views |
Space |
Tag process |
c |
Tag process and children |
U |
Untag all |
u |
Filter by user |
p |
Toggle full command path / process name |
H |
Toggle show threads |
K |
Toggle hide kernel threads |
+ / - |
Expand / collapse tree node |
e |
Show process environment |
l |
List open handles (lsof equivalent) |
a |
Set CPU affinity |
I |
Invert sort order |
| Arrow keys | Navigate |
PgUp / PgDn |
Page through process list |
Home / End |
Jump to first / last process |
Enable via F2 > Display Options > Vim-style keys, or set vim_keys=1 in your config file. Off by default.
| Key | Vim Mode Action | Replaces |
|---|---|---|
j |
Move down | (new — default mode has no bare j) |
k |
Move up | k = kill in default mode |
g |
Jump to first process | Home |
G |
Jump to last process | End |
Ctrl+d |
Half page down | (new) |
Ctrl+u |
Half page up | (new) |
x |
Kill process | k / F9 |
/ |
Search | (unchanged, works in both modes) |
? |
Help | (unchanged, works in both modes) |
What changes in vim mode:
kbecomes move up instead of kill — usexorF9to killhno longer opens help — use?orF1insteadj/kwork as bare keys (noAltmodifier needed)- All other keys (
F1–F10,Space,u,t,e,l,a, etc.) remain unchanged
What stays the same:
- Arrow keys, PgUp/PgDn, Home/End still work
- All F-key shortcuts (
F1–F10) still work /for search,\for filterqto quit,Ctrl+Cto quit- All sorting keys (
P,M,T,N,I,<,>) - Tree view (
t/F5), tags (Space/c/U), user filter (u)
All 7 schemes affect every UI element — header bars, process table, footer, tabs, popups:
| Scheme | Best For |
|---|---|
| Default | Dark terminals (Windows Terminal, Alacritty) |
| Monochrome | Minimal / accessibility |
| Black Night | OLED / very dark terminals |
| Light Terminal | Light-themed terminals |
| Midnight Commander | Nostalgic blue background |
| Black on White | Maximum readability on light bg |
| Dark Vivid | High contrast, colorful |
Change schemes live: F2 > Colors > select > Enter. Preview updates in real-time.
Settings are saved automatically to:
%APPDATA%\pstop\pstoprc
Format: simple key=value (htoprc-style). Persisted settings include:
- Color scheme
- All 15 display options (including vim keys mode)
- Visible columns
- Sort field & direction
- Update interval
- Tree view state
To enable vim keys from the config file directly:
vim_keys=1
- OS: Windows 10 / 11 (x86_64)
- Terminal: Windows Terminal, PowerShell, cmd.exe, or any terminal with ANSI support
- Build: Rust 1.70+ (for building from source)
- Publish to crates.io (
cargo install pstop) - Pre-built binaries via GitHub Releases
- WinGet (
winget install marlocarlo.pstop) - Chocolatey (
choco install pstop) - GPU monitoring (per-process GPU engine usage + VRAM, header GPU/VMem bars)
- Network per-process tracking (live bandwidth, no admin required)
- Auto-adjusting CPU column layout (2/4/8/16 columns based on core count)
- Independent htop-style header panel flow (no forced alignment)
- Vim-style keybindings (opt-in
j/k/g/G/Ctrl-u/Ctrl-d) - Scoop bucket
- Custom meter plugins
Contributions welcome! This is a Rust project using:
- ratatui 0.30 - TUI framework
- crossterm 0.29 - Terminal backend
- sysinfo 0.38 - System information
- windows 0.62 - Native Win32 APIs
git clone https://github.com/psmux/pstop.git
cd pstop
cargo runMIT - use it, fork it, ship it.
Stop opening Task Manager. Type pstop or its aliases.
