A GPU-accelerated task manager for Linux. It uses GPUI, the Rust UI framework that powers Zed. Features: fuzzy search, window picking, per-process GPU VRAM tracking (NVIDIA + AMD), and a right-click signal menu.
| Dark | Light |
|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Regenerate with
./screenshots/generate.sh(requires driftwm).
Builtin themes from gpui-component (Apache 2.0).
| Theme | Light | Dark |
|---|---|---|
| Adventure | — | Adventure, Adventure Time |
| Alduin | — | Alduin |
| Asciinema | — | Asciinema |
| Aurora | Aurora Light | — |
| Ayu | Ayu Light | Ayu Dark |
| Catppuccin | Catppuccin Latte | Catppuccin Frappe, Catppuccin Macchiato, Catppuccin Mocha |
| Default | Default Light | Default Dark |
| Everforest | Everforest Light | Everforest Dark |
| Fahrenheit | — | Fahrenheit |
| Flexoki | Flexoki Light | Flexoki Dark |
| Gruvbox | Gruvbox Light | Gruvbox Dark |
| Harper | — | Harper |
| Hybrid | Hybrid Light | Hybrid Dark |
| Jellybeans | — | Jellybeans |
| Kibble | — | Kibble |
| macOS Classic | macOS Classic Light | macOS Classic Dark |
| Matrix | — | Matrix |
| Mellifluous | Mellifluous Light | Mellifluous Dark |
| Molokai | Molokai Light | Molokai Dark |
| Solarized | Solarized Light | Solarized Dark |
| Spaceduck | — | Spaceduck |
| Tokyo | — | Tokyo Night, Tokyo Storm, Tokyo Moon |
| Twilight | — | Twilight |
Switch themes from the palette icon in the titlebar (hierarchical dropdown with live preview on hover) or from Settings > General. Put .json theme files into ~/.config/gpuitop/themes/ to add custom themes. The app loads them automatically and watches for live changes.
Settings > About in Catppuccin Mocha.
Fuzzy search the process table, or click Pick and switch to any window to jump to its process. Toggle filters to narrow the list: GUI apps, kernel threads, Services, Electron apps, your user, process state (R/S/D/Z/T/I/X), parents, and processes that use VRAM. Filters combine with AND/OR logic.
The window picker uses the zwlr_foreign_toplevel_manager_v1 Wayland protocol. It does not work under X11. The Pick button will time out in an X11 session.
Switch between flat list and hierarchical tree view from the toolbar. The tree preserves parent-child relationships and can aggregate resource usage across process subtrees when cumulative mode is on.
Right-click any row for a context menu:
- End Process (SIGTERM)
- Force Kill (SIGKILL)
- Pause (SIGSTOP) or Resume (SIGCONT)
- Copy PID to clipboard
- Send arbitrary signals: SIGHUP, SIGINT, SIGQUIT, SIGUSR1, SIGUSR2
Double-click a process to filter by it. Click column headers to sort by Name, PID, User, State, CPU%, Memory%, VRAM, Disk Read, or Disk Write.
gpuitop queries NVIDIA GPUs through NVML. AMD GPUs use rocm-smi. Both backends aggregate across all GPUs and show per-process VRAM usage.
Discord, VS Code, and other Electron apps show their real name instead of "electron". The detector walks the process tree to find the root app name.
The Performance tab shows CPU (overall bar + per-core gauges), memory (total, used, available, cached, swap), disk I/O per device, and network throughput per interface.
Run gpuitop -h for the full usage text.
| Flag | Description |
|---|---|
-c, --config <PATH> |
Load config from file instead of default |
--override <RON> |
Partial RON merged over loaded config (repeatable) |
-p, --page <PATH> |
Start on a specific tab: processes, processes.tree, processes.list, performance, settings, settings.general, settings.processes, settings.about |
-s, --search <TEXT> |
Pre-fill the process search bar |
-v, --version |
Print version and exit |
-h, --help |
Print help and exit |
gpuitop --page settings.about
gpuitop --config ~/gaming.ron --override '(general: (interface: (refresh_ms: 500)))'
gpuitop -p processes.tree -s firefox
- Rust toolchain: rustup
- Linux with X11 or Wayland
- GPUI build dependencies:
# Ubuntu/Debian
sudo apt install build-essential pkg-config cmake \
libx11-dev libxkbcommon-dev libxkbcommon-x11-dev \
libwayland-dev libfontconfig-dev libvulkan-dev
# Fedora
sudo dnf install gcc-c++ cmake pkg-config \
libX11-devel libxkbcommon-devel libxkbcommon-x11-devel \
wayland-devel fontconfig-devel vulkan-devel
# Arch
sudo pacman -S base-devel cmake pkgconf \
libx11 libxkbcommon libxkbcommon-x11 \
wayland fontconfig vulkan-headers- NVIDIA VRAM: NVIDIA driver (NVML bundled with the driver)
- AMD VRAM:
rocm-smifrom the ROCm stack
cargo install --git https://github.com/Kyza/gpuitop.gitThe config file is at ~/.config/gpuitop/config.ron (respects XDG_CONFIG_HOME). Edit it from Settings > General and Settings > Processes in the app, or write the RON file directly.
| Setting | Type | Default |
|---|---|---|
| Refresh Rate | u64 | 1500 (ms) |
| Theme | string | "Default Dark" (see Themes) |
| Window Width | u32 | 1100 |
| Window Height | u32 | 700 |
| VRAM Polling | VramPolling | Auto (On, Off) |
| PID Filter Mode | PidFilterMode | DirectChildren (AllDescendants) |
| Clear Search on Pin | bool | true |
| Resource View | ResourceViewMode | SelfOnly (Cumulative) |
| Default View | DefaultViewMode | List (Tree) |
| Sort Column | SortColumn | Cpu |
| Sort Descending | bool | true |
You can reorder and toggle the 9 process table columns from Settings > Processes.
RON Override
--override takes a partial RON struct and deep-merges it into the loaded config. Only the keys you specify change. Everything else stays the same.
# Change refresh rate and theme
gpuitop --override '(general: (interface: (refresh_ms: 500, theme: "Default Dark")))'
# Set window size
gpuitop --override '(window_size: (1920, 1080))'
# Switch to tree view with cumulative resources
gpuitop --override '(processes: (behaviour: (default_view_mode: Tree, resource_view_mode: Cumulative)))'Multiple --override flags stack and later values win for overlapping keys.
| Component | Status |
|---|---|
| Platform | |
| Linux Wayland | Supported, tested |
| Linux X11 | Partial (no window picker), untested |
| Windows | Unsupported |
| macOS | Unsupported |
| GPU Backend | |
| NVIDIA (NVML) | Supported, tested |
| AMD (rocm-smi) | Supported, untested |
| Init System | |
| systemd | Supported, tested |
| OpenRC | Supported, untested |
| runit | Supported, untested |
| dinit | Supported, untested |
| SysV init | Supported, untested |
| Unknown | Heuristic fallback (ppid 1) |
The codebase uses platform abstraction (src/data/platform/) so each OS can swap the process collector, GPU queries, and window picker.
The app instruments key functions with hotpath. Build with the hotpath feature:
cargo run --features hotpathRun hotpath console in another terminal for a live TUI. Sub-features for finer granularity:
cargo run --features hotpath-cpu,hotpath-alloc





