Xtop Roadmap
This document outlines the development roadmap for xtop, a modern, cross-platform TUI system monitor. It is synced automatically with GitHub Issues.
Phase 1: Core Features
- Basic TUI structure using
ratatuiandcrossterm(#1) - System information collection using
sysinfo(#2) - CPU usage per core and maximum temperature sensing (#3)
- Memory and Swap monitoring with historical graphing (#4)
- Network upload and download tracking (#5)
- Storage usage visualization (#6)
- Top 50 process list sorted by CPU usage (#7)
- Cross-platform compatibility (macOS, Linux, Windows) (#8)
Phase 2: Interface & Theming
- Dynamic layout manager supporting multiple modes (Dashboard, Vertical, Process Focus) (#9)
- Implement 13 built-in color schemes (
x,madrid,tokio, etc.) (#10) (12 theme files ship today, all embedded and seeded; the docs count 12. See docs/colors.md for the palette reference.) - Instant theme and layout cycling at runtime (#11)
- Responsive design for narrow terminals (#12)
Phase 3: Deployment & Distribution
- Automated install/uninstall scripts for Linux and macOS (
install.sh,uninstall.sh) (#13) - Automated install/uninstall scripts for Windows (
install.ps1,uninstall.ps1) (#14) - Quick curl/wget installation commands (#15)
- CI/CD pipeline for automated multi-platform binary releases (#16)
- Distribution packages (AUR, Homebrew, Winget, APT) (#17)
Phase 4: Configuration & Customization
- Persistent configuration file support (save theme and layout preferences) (#18)
- Custom user theme creation via configuration (#19)
- Configurable update intervals for system metrics (#20)
- Customizable keybindings (#21)
Phase 5: Advanced Monitoring Features
- Disk I/O read/write speed tracking (#22)
- Granular network interface selection (#23) — per-interface RX/TX data is (#39) shown, but picking which interface the kernel reports/charts is not configurable yet.
- GPU usage, temperature, and VRAM monitoring (NVIDIA/AMD) (#24) — (#40) NVIDIA via nvidia-smi on any platform (Linux/macOS/Windows); AMD/Intel stays Linux-only partial (/sys/class/drm); macOS/Windows keep the honest empty state for AMD/Intel (no public utilization API).
- Battery status monitoring (#25) — Linux probes real (/sys/class/ (#41) power_supply); macOS real (pmset); Windows real aggregate battery (GetSystemPowerStatus; per-battery via SetupAPI pending); fallback platforms stay empty.
- Docker container resource usage integration (#26) — Docker support was (#42) removed from the shared data model (api M1.4: nothing consumed it), so this item is parked until a real consumer appears.
Phase 6: Interactive Process Management
- Interactive process termination (send kill signals) (#27)
- Search, filter, and highlight processes by name (#28) — search and (#43) filtering exist; highlighting matches inside the process list is pending.
- Tree view for process hierarchy (#29)
- Sorting processes by Memory, PID, or User (#30) — CPU/Memory/PID/Name (#44) sorting is implemented; no User column yet.
Phase 7: X Integration
- X Integration (#31)
- Create xp package (#32)
- Add to X Repositories (#33)
Phase 8: Kernel Refactor
Baseline done: single-crate kernel (src/ by areas: config, theme, layout, state, plugins, providers, ui, commands); plugin and extension hosts over the api contracts; samurai and the mcp extension live in their own repos. Only pending refactor work is listed here (git logistics are handled outside this roadmap).
R2 - Code quality pass
- Module doc comments audit across src/ (#40) — the seven top-level (#45)
modules declared in src/main.rs (commands, config, plugins, providers,
state, theme, ui) all carry concise
//!docs describing their area. - cfg(target_os) only inside platform/ trees (#41) — enforced by (#46) scripts/audit.sh (0 occurrences outside platform/).
- Wildcard re-export and pub hygiene review (#42) — 22 wildcard (#47)
pub use ...::*re-exports remain (audit.sh threshold: 30); review still open. - Split commands/plugins.rs into list/install/scaffold modules (#43)
- key_event_to_str into a shared input module if reused elsewhere (#44) — (#48) single use site (commands/run.rs), so no shared module is needed.
- ui/share/error.rs only when real UI error handling appears (no empty (#49) modules) (#45) — intentionally not created; documented in the root ROADMAP deferred list.
- Widgets subdivide internally when they outgrow one module (#46) — (#50) kernel widget renderers were externalized to the widgets repo (M3); the kernel no longer owns pack widgets.
R3 - Structural audit tooling
- scripts/audit.sh with failing thresholds (#47) — the script gates: (#51)
cfg(target_os) outside platform/ trees = 0, files over 600 lines = 0,
TODO/FIXME/XXX/HACK markers = 0, wildcard
pub use ...::*<= 30, LOC per top-level area <= 2400, dead pre-monocrate plugin tree absent (its path lives only inside the audit script as the guard itself),miamiembedded in the theme seeds (12 themes total). Module dependency graph/cycles and unused-pub detection are NOT implemented by the script (see the deferred note below).
Deferred follow-ups (tracked with the root ROADMAP §7 list):
- audit.sh module dependency graph/cycles and unused-pub detection, plus per-file thresholds above 300/600 lines (the 200-line figure in the original issue predates the current 300/600 gates).