A modern system monitor app in Python (codes included)
I built a cross-platform Python desktop app to monitor CPU, RAM, disk, processes, and network usage in real time.
Introduction
In this project, I built a system monitor desktop app with Python. I use PyQt5 for the interface, pyqtgraph for live charts, and psutil for system metrics.
I started this as a simple CPU/RAM monitor, and now I have upgraded it into a cleaner, modular app with a better UI and better developer workflow.
Repo: SystemMonitorApp
What I added in the latest update
- I reorganized the project into a proper
src/system_monitorpackage. - I split UI, services, and models for easier maintenance.
- I made the dashboard responsive and resizable.
- I added minimize/maximize support and optional start-maximized mode.
- I added a new chart mode to show both CPU and RAM in the same figure with different colors.
- I added extra real-time stats: disk usage, process count, network throughput, and uptime.
- I added optional CSV telemetry export.
- I added
Makefilecommands for install, run, status, and close. - I added tests for core service logic.
Install and run (macOS/Linux)
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python systemMonitor.py
Run with Makefile (macOS/Linux)
make install
make run
make status
make close
I can also pass runtime arguments from Make:
make run APP_ARGS="--start-maximized"
Run on Windows (PowerShell)
python -m venv .venv
.venv\Scripts\Activate.ps1
pip install -r requirements.txt
python systemMonitor.py
Useful runtime options
python systemMonitor.py --start-maximized
python systemMonitor.py --no-splash
python systemMonitor.py --interval-ms 1000 --history-seconds 30
python systemMonitor.py --export-csv data/metrics.csv
Current project structure
.
├── src/system_monitor/
│ ├── app.py
│ ├── constants.py
│ ├── models.py
│ ├── services/
│ └── ui/
├── tests/
├── docs/
├── main.ui
├── splash_screen.ui
└── systemMonitor.py
Download codes
I provide the Windows installer from: Downloads Page
Source code is available at: GitHub - SystemMonitorApp
Disclaimer of liability
The information provided by the Earth Inversion is made available for educational purposes only.
Whilst we endeavor to keep the information up-to-date and correct. Earth Inversion makes no representations or warranties of any kind, express or implied about the completeness, accuracy, reliability, suitability or availability with respect to the website or the information, products, services or related graphics content on the website for any purpose.
UNDER NO CIRCUMSTANCE SHALL WE HAVE ANY LIABILITY TO YOU FOR ANY LOSS OR DAMAGE OF ANY KIND INCURRED AS A RESULT OF THE USE OF THE SITE OR RELIANCE ON ANY INFORMATION PROVIDED ON THE SITE. ANY RELIANCE YOU PLACED ON SUCH MATERIAL IS THEREFORE STRICTLY AT YOUR OWN RISK.