You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Introduce expanded metrics, UI, and configuration support: add collectors for network, disk, battery, temperature and delta computation (with tests), and pluggable GPU backends (Apple/NVIDIA/AMD). Enhance the Bubble Tea model and UI with sparklines, themes, process detail overlay, mouse support, kill/export actions, improved selection handling, and responsive two-column layout. Add CLI flags and JSON config file loading (~/.config/hideTop/config.json) and propagate options to the collector (SkipGPU/SkipTemp). Also add a CI workflow (GitHub Actions) and various UI/metrics files to support the new features.
@@ -6,24 +6,40 @@ Built with [Bubble Tea](https://github.com/charmbracelet/bubbletea) and [Lip Glo
6
6
7
7
## Features
8
8
9
-
-**CPU** — total + per-core utilisation bars with core count, colour-coded by load
10
-
-**GPU***(Apple Silicon)*— total + per-engine (Tiler / Renderer) utilisation, core count, frequency, thermal pressure indicator, and heuristic energy impact score. Auto-detected at runtime; hidden on unsupported hardware
11
-
-**Memory** — used / total / available GiB with bar; conditional swap bar when swap is active
9
+
-**CPU** — total + per-core utilisation bars with core count, colour-coded by load, sparkline history
10
+
-**GPU** — total + per-engine utilisation, core count, frequency, thermal pressure indicator, and heuristic energy impact score. Auto-detected at runtime; hidden on unsupported hardware. Supports **Apple Silicon** (ioreg), **NVIDIA** (nvidia-smi), and **AMD** (sysfs)
11
+
-**Memory** — used / total / available GiB with bar; conditional swap bar when swap is active; sparkline history
12
12
-**Load Average** — 1 / 5 / 15 minute
13
-
-**Processes** — sortable by CPU, memory, or PID with visual sort indicators (▲/▼); PID-based row selection (↑↓ / j/k); incremental search (`/`); auto-scrolling viewport
14
-
-**Refresh control** — `+`/`-` to adjust interval with visual flash feedback
15
-
-**Configurable** — `--interval` flag (default 1s, minimum 100ms)
13
+
-**Temperature** — up to 6 sensors in a 2-column grid, auto-detects CPU/GPU temps, colour-coded by threshold (green < 60°C, yellow 60–80°C, red > 80°C). Disable with `--no-temp`
14
+
-**Network** — total in/out throughput (bytes/s), per-interface breakdown (up to 4 active interfaces)
15
+
-**Disk** — total read/write throughput (bytes/s), root filesystem usage
16
+
-**Battery** — percentage and charging status in the header bar (macOS via `pmset`, Linux via sysfs)
17
+
-**Processes** — sortable by CPU, memory, or PID with visual sort indicators (▲/▼); columns for PID, state (R/S/Z/T), user, name, threads, CPU%, MEM%; PID-based row selection; incremental search by name, PID, or username; tree view; system process filter; process detail panel (Enter); kill / force kill with confirmation
The `filter_users` array controls which usernames are hidden when the system process filter (`s`) is active. Defaults to `["root", "_windowserver", "nobody"]` if not set.
-**No global mutable state** — all state lives in the Bubble Tea `Model`.
94
157
-**Async collection** — metrics are gathered in a `tea.Cmd` goroutine, so the UI never blocks.
95
-
-**Concurrent collectors** — CPU, memory, load, and processes run in parallel via `sync.WaitGroup`; GPU runs sequentially after (needs CPU total for energy calculation).
158
+
-**Concurrent collectors** — CPU, memory, load, network, disk, battery, temperature, and processes run in parallel via `sync.WaitGroup`; GPU runs sequentially after (needs CPU total for energy calculation).
159
+
-**Graceful degradation** — if a collector fails or times out, the previous snapshot is used and a `stale` indicator appears in the header.
96
160
-**Pure rendering** — UI functions take data + width and return strings. No side effects, easy to test.
97
161
-**Runtime detection** — GPU support is detected via `runtime.GOOS` + `runtime.GOARCH` and cached with `sync.Once`. No build tags needed; the binary works on any platform.
98
-
-**No sudo** — all data sources (`ioreg`, `pmset`, gopsutil) work without elevated privileges.
99
-
-**PID-based selection** — process selection tracks by PID, surviving refresh cycles, re-sorts, and search filters.
162
+
-**No sudo** — all data sources (`ioreg`, `pmset`, `nvidia-smi`, sysfs, gopsutil) work without elevated privileges.
163
+
-**PID-based selection** — process selection tracks by PID, surviving refresh cycles, re-sorts, and search filters. Falls back to same visual position when a process disappears.
164
+
-**Responsive layout** — panels pair in two columns when the terminal is ≥ 110 columns wide, with matched heights.
100
165
101
166
## Requirements
102
167
103
168
- Go 1.25+
104
-
- macOS or Linux (GPU panel requires Apple Silicon)
169
+
- macOS or Linux (GPU panel: Apple Silicon, NVIDIA with nvidia-smi, or AMD with sysfs)
0 commit comments