htop for Wine prefixes — a native CLI/TUI to monitor and stop Wine, Proton, Lutris, Heroic, and Bottles sessions on Linux (with best-effort FreeBSD/macOS ports).
- Session-aware grouping by
WINEPREFIX/ Steam AppId / launcher - Steam
reaperdetection (SteamLaunch AppId=…) — stop a game without killing Steam - Live TUI: expand sessions, CPU/RSS, sparklines, themes, detail drawer, orphans
- Safe kill ladder: process SIGTERM → session reaper →
wineserver -k→ SIGKILL - Scriptable CLI:
list,tree,kill,orphans,dump,status - Name enrichment from Steam
appmanifest_*.acf, Lutrispga.db/yml, Heroic, Bottles - Status-bar output for Waybar and similar tools (docs/status-bars.md)
Pick what matches your distro. All options install the winetop binary on PATH.
sudo add-apt-repository ppa:kovariadam/winetop
sudo apt update
sudo apt install winetopAlternatively, grab the .deb from GitHub Releases or build one from a release tarball:
./dist/debian/build-deb-from-release.sh 0.2.0 amd64 # or arm64
sudo apt install ./dist/debian/winetop_0.2.0-1_amd64.debsudo dnf copr enable kovariadam/winetop
sudo dnf install winetopCopr: kovariadam/winetop
yay -S winetop-bin
# or: paru -S winetop-binBinary package: winetop-bin
brew install akovari/tap/winetopnix run github:akovari/winetop
# or add the flake input to your configcargo install winetop --locked
# or: cargo binstall winetopcurl --proto '=https' --tlsv1.2 -LsSf \
https://github.com/akovari/winetop/releases/latest/download/winetop-installer.sh | shTarballs, checksums, and .deb assets are on the releases page.
git clone https://github.com/akovari/winetop.git
cd winetop
cargo install --path crates/winetop --lockedPackaging stubs and release notes for maintainers live under dist/.
winetop # interactive TUI
winetop list
winetop list --json
winetop tree
winetop orphans
winetop kill --appid 1091500
winetop kill --prefix ~/.wine
winetop kill --pid 12345 --signal term
winetop dump > snap.jsonwinetop status --format waybar --pick focused --sample-ms 250
winetop status --format text
winetop status --format json --pick hottestSee docs/status-bars.md for Waybar, i3blocks/swaybar scripts, Polybar, Ironbar, Eww, and CLI flags.
| Key | Action |
|---|---|
↑↓ |
Move across sessions and processes |
Tab / → |
Expand session (process rows) |
← |
Collapse session |
/ |
Filter (name, pid, cmdline) |
d / Enter |
Detail |
k |
Kill selected process (or session if on a session row) |
K |
Kill session |
P |
wineserver -k |
t |
Tree |
o |
Orphans |
T |
Theme |
? |
Help |
q |
Quit |
Expanded process rows show PID, PPID, kind, and a DETAIL column (Windows path + args) so duplicates like many Battle.net.exe are distinguishable.
winetop 0.2.0 │ 3 sessions │ 12 procs │ 18% cpu │ 4.2G rss
SRC SESSION PREFIX CPU RSS
Steam Cyberpunk 2077 #1091500 compatdata/… 142% 3.1G
Lutris epic-game-slug ~/Games/epic-pfx 12% 410M
| Target | Preferred |
|---|---|
| Steam game | SIGTERM reaper, then wineserver -k |
| Prefix | WINEPREFIX=… wineserver -k |
| Process | SIGTERM → SIGKILL |
| Never | killall wineserver / killing the Steam client |
Flatpak Bottles sandboxes may hide PIDs from host /proc; stop those via Bottles / bottles-cli.
cargo test
cargo clippy --all-targets -- -D warnings
cargo run -- list
cargo run -- status --format text --sample-ms 250Workspace:
crates/winetop-core— discovery, classify, enrich, kill, status helperscrates/winetop— CLI + ratatui TUI
MIT © akovari