Skip to main content

Hardware monitoring tool for Linux

Project description

HardwareMon

HardwareMon Demo (Windows GUI)

HardwareMon is a lightweight system monitoring tool designed to provide a detailed overview of your computer's hardware and performance metrics. It can display CPU, memory, disk, GPU, battery, network, and peripheral information in real time. The project includes a Python GUI version for Linux and a modern Windows GUI application.

Features

HardwareMon gathers and presents information such as CPU usage, memory usage, disk activity, top running processes, GPU specifications and temperatures, battery status, and peripheral details. On Linux, the Python version uses the psutil library and native system commands to extract detailed system information. On Windows, both the new Python GUI and the PowerShell version leverage CIM/WMI queries to report similar statistics.

The Linux version includes a GUI mode built with Tkinter, offering a modern and configurable interface with light, dark, and hacker-style themes. To cycle themes, press F2. Graphs for CPU, memory, and disk usage are updated in real time, providing a quick visual snapshot of system performance.

The Windows GUI version is built with CustomTkinter and features a Windows 11 Fluent Design-inspired interface with animated arc gauges, live sparkline graphs, per-core CPU bars, a real-time process table, and a full system information page.


Windows (Python GUI — Recommended)

The new Windows GUI is a modern, standalone application built with Python and CustomTkinter. It includes six pages which may change: Overview, CPU, Memory, Disk, Network, and System.

Just download the .exe from this repo.

That's literally it.

Notes

  • Run as Administrator for complete process visibility.
  • The .exe is fully self-contained — no Python required on the target machine.
  • Tested on Windows 10 and Windows 11.

Installation (Linux version)

Using Git

Ensure Python 3 and the psutil library are installed, then clone the repository and run:

python3 hardware_mon.py

Using Pip (Easier, Quicker)

Ubuntu/Debian:

sudo apt update
sudo apt install python3-pip python3-tk pipx
pip3 --version

RHEL/Fedora:

sudo dnf install python3-pip pipx python3-tk
pip3 --version

Arch Linux:

sudo pacman -S python-pip pipx python3-tk
pip --version

Then install HardwareMon:

pip install hardwaremon

Fixing the "Externally Managed Environment" Error

On Ubuntu and Debian-based systems you may see error: externally-managed-environment. The recommended fix is pipx:

sudo apt install pipx
pipx ensurepath
source ~/.bashrc
pipx install hardwaremon

Run with either:

hardwaremon
hardwaremon_cli

Option 2 — Virtual environment:

python3 -m venv hardwaremon-env
source hardwaremon-env/bin/activate
pip install hardwaremon

Option 3 — Force install (not recommended):

pip install hardwaremon --break-system-packages

Updating

To update hardwaremon on Linux, just use this command:

pipx upgrade hardwaremon

GUI vs CLI Versions (Linux)

HardwareMon on Linux comes in two flavours. The GUI version separates hardware data into separate pages with clickable icons, while the CLI version displays everything in the terminal.

hardwaremon      # GUI version
hardwaremon_cli  # CLI version

The GUI version receives the majority of active development, hoping to enhance its functionality.


Q&A

What platforms is HardwareMon available for? Windows and Linux. Linux versions receive more frequent updates. Windows now has a fully featured Python GUI.

What is the difference between hardwaremon and hardwaremon_cli on Linux? hardwaremon is the GUI version for Linux with separate pages and clickable icons. hardwaremon_cli is the original terminal-based version, with much deeper insight into hardware compared to the GUI version. (this will change, it's quite bare-bones at the moment.)

Which version should I use? On Linux, use hardwaremon_cli for the best experience and advanced performance metrics. If you want a "cleaner" version for Linux that receives more development than the GUI version of HardwareMon Linux, use hardwaremon. On Windows, use the GUI .exe for a modern, feature-rich interface.

What do the YAML workflows do? One workflow lints the scripts for errors, and the other packages the GUI and CLI versions into a pip package for Linux. Both workflows only operate on the Linux versions.

Can I contribute? Absolutely! Feel free to fork the repo and submit pull requests or report issues on the issue tracker.


Notes

The .sh script is more basic than the .py script on Linux, as it cannot use Tkinter for graph drawing.

The GitHub Actions workflows only run on the Linux versions.

I have packaged each version into their own folder, so you don't get confused and run the wrong script for your OS.


Made with ❤️ by Louis

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hardwaremon-11.0.0.tar.gz (22.6 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hardwaremon-11.0.0-py3-none-any.whl (110.4 kB view details)

Uploaded Python 3

File details

Details for the file hardwaremon-11.0.0.tar.gz.

File metadata

  • Download URL: hardwaremon-11.0.0.tar.gz
  • Upload date:
  • Size: 22.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for hardwaremon-11.0.0.tar.gz
Algorithm Hash digest
SHA256 a35716ca7c08c6887dbde3a6a5ec2dd510ad2bd8cc9e0cf05be36b6271c6d4f7
MD5 cd20b88577f3ffc19e4750f9c5c233c2
BLAKE2b-256 e26540c89d80c6fc6cf5023b0f32129687b28fa44b3c22a79e0f0aa8d76e8bae

See more details on using hashes here.

File details

Details for the file hardwaremon-11.0.0-py3-none-any.whl.

File metadata

  • Download URL: hardwaremon-11.0.0-py3-none-any.whl
  • Upload date:
  • Size: 110.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for hardwaremon-11.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ee5dde7fe1f1b2dd9281dc2ef611903f341dd6bfb436e682c3d53de98a022fc7
MD5 8dd9a395515dde38e5947647511bc5dd
BLAKE2b-256 a3b321b7df2750fa6dbe756e15abd0c73d63e406a1d1e44fee158c1934ad135f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page