WatchX provides a live, interactive view of your systemβs performance directly in the terminal. It combines system-level insights, process tracking, and a visually rich interface to deliver a developer-friendly monitoring experience.
- Live CPU, memory, and disk usage with visual bars
- Per-core CPU usage breakdown
- Network totals and real-time up/down speed
- Disk I/O read/write statistics
- GPU utilization support (when GPUtil is available)
- Lightweight trend indicators for CPU and network activity
- Interactive process table with PID, name, CPU %, and memory %
- Click or keyboard selection with stable PID tracking
- Process kill action directly from the UI
- Search processes by PID or name
- Sort processes by CPU, memory, name, or PID
- Pagination support for handling large process lists
- Split layout with:
- Main monitoring + process workspace
- Dedicated selected-process details panel
- Focus switching between panes (table/details/search)
- Mouse + keyboard navigation support
- Responsive, non-blocking updates for smoother interaction
- Animated WatchX title landing screen
- Built-in command prompt interface (
watchx>) with commands:start/run/monitorhelphealthaboutclearquit/exit
healthcommand to check:- Python runtime details
- Dependency availability
- Terminal capability indicators
- CPU/MEM/DISK threshold-based alert line in monitor
- Optional audible alert toggle for warning transitions
- Async/background metric collection to avoid UI blocking
- Interaction-aware refresh throttling
- Cached process detail rendering
- Diff-based table redraw optimization to reduce flicker and overhead
- Language: Python 3
- TUI Framework: Textual
- Terminal Rendering: Rich
- System Metrics: psutil
- GPU Metrics: GPUtil
- ASCII Title Rendering: pyfiglet
- Input Utilities: pynput
WatchX/
βββ src/
β βββ app.py
β βββ bars.py
β βββ dashboard.py
β βββ stats.py
βββ tests/
β βββ test_bars.py
βββ main.py
βββ requirements.txt
βββ .gitignore
βββ README.md
WatchX works in two layers: a launcher shell and the monitoring TUI.
- Running
python main.pyopens the WatchX command shell. - The shell accepts commands like
start,help,health,about,clear, andquit. startlaunches the live monitor interface.
- WatchX gathers system stats using
psutil(CPU, memory, disk, network, process data). - GPU stats are collected via
GPUtilwhen available. - Metrics refresh asynchronously to keep the UI responsive.
- The top area displays system metrics with progress bars and trend indicators.
- The process table supports sorting, filtering, pagination, and row selection.
- A details panel shows rich information about the currently selected process.
- You can select a process using keyboard or mouse.
ksends a terminate signal to the selected PID.- Selection tracking is PID-based so it remains stable while rows reorder.
- CPU, memory, and disk thresholds trigger visual warning states.
- Optional alert beep can be toggled for threshold transitions.
- Footer/status lines provide action feedback and navigation context.
| Capability | Basic Terminal Monitor | htop-Style Tool |
WatchX |
|---|---|---|---|
| Live CPU / Memory / Disk | β | β | β |
| Per-core CPU View | β | β | β |
| Network Speed + Disk I/O | β | Partial | β |
| GPU Monitoring | β | Partial (plugin/system dependent) | β (with GPUtil) |
| Process Search + Sort + Pagination | β | Partial | β |
| Process Details Side Panel | β | Partial | β |
| Launcher Command Shell | β | β | β |
| Health Diagnostics Command | β | β | β |
| Alert Thresholds + Optional Beep | β | Partial | β |
| Python Extensibility for Custom Features | Partial | Partial | β |
WatchX is built with a modular, responsiveness-first approach to keep terminal monitoring both informative and smooth.
main.pyhandles the launcher shell and command flow.src/stats.pyfocuses on collecting system and process metrics.src/app.pyorchestrates Textual UI composition, interactions, and state.- Utility modules (bars/dashboard helpers) keep rendering logic reusable.
- Keyboard and mouse actions are both first-class.
- Process selection is tracked by PID for stability during sorting/filtering updates.
- Focus controls and clear feedback lines reduce accidental actions.
- Blocking metric calls are isolated from the UI refresh path.
- Table updates are diff-aware to minimize flicker and redraw cost.
- Lightweight caching is used for selected-process details.
- Process-kill actions operate on explicit selected PID context.
- Health diagnostics validate runtime and dependency readiness.
- Alert thresholds provide early warning for sustained system pressure.
- Python-based codebase makes feature iteration straightforward.
- New metrics, alert rules, and UI actions can be added with minimal coupling.
- Export snapshots (JSON/CSV) for system and process stats
- Configurable alert profiles (dev/laptop/server presets)
- Historical charts for CPU, memory, network, and disk activity
- Safer process actions with confirmation modes and role-based controls
- Plugin hooks for custom widgets and third-party metric providers
-
P. Charan Sai et al., βReal-Time Task Manager: A Python-Based Approach Using Psutil and Tkinter,β IEEE CSITSS, 2024.
β Demonstrates real-time system monitoring using Python and process-level metrics like CPU and memory. -
Parvathy M. et al., βReal-Time Web Server Monitoring System using Python,β Journal of Artificial Intelligence and Capsule Networks, 2024.
β Explores real-time monitoring of CPU, memory, and response time in production systems. -
Giampaolo RodolΓ , psutil Documentation, PyPI / GitHub.
β Defines system-level monitoring APIs for CPU, memory, disk, and processes. -
βPsutil Module in Python,β GeeksforGeeks, 2025.
β Overview of system resource tracking and process monitoring techniques. -
CΓ’ndido et al., βLog-based Software Monitoring: A Systematic Mapping Study,β arXiv, 2019.
β Highlights the importance of monitoring systems for performance analysis and reliability. -
Manickavasagam et al., βReal-Time Monitoring Systems in Python Environments,β 2024.
β Discusses scalable monitoring architectures and real-time data visualization.
π¨βπ» Developed by - @Arijit2175

