Skip to content

Repository files navigation

MonitX

MonitX is a lightweight Windows desktop performance monitor. It displays real-time system metrics in a compact, always-on-top overlay so that CPU, GPU, memory, and frame-rate information stays visible while you work or play.

1. Software Overview

Highlights

  • Real-time CPU usage, GPU usage, RAM usage, and FPS monitoring.
  • Optional CPU and GPU temperature readings when supported by the hardware and driver.
  • A clean, translucent overlay with progress bars and smooth value transitions.
  • Preset overlay positions or a custom position that can be adjusted by dragging.
  • Vertical and horizontal overlay layouts.
  • Adjustable opacity, scale, and update interval.
  • System tray integration and optional launch-at-startup behavior.
  • Single-instance protection to prevent duplicate monitoring processes.
  • Automatic administrator elevation on Windows when required.
  • English, Simplified Chinese, Traditional Chinese, Japanese, Korean, French, German, and Russian translations.

MonitX is designed primarily for Windows. The FPS backend uses DXcam and the GPU usage backend uses Windows Performance Data Helper (PDH), so some monitoring features are platform-specific.

2. User Guide

Installation

  1. Open the project's Releases page.
  2. Download the latest Windows installer, usually named MonitX_Setup.exe.
  3. Run the installer and follow the setup wizard.
  4. Optionally enable the desktop shortcut during installation.
  5. Launch MonitX from the Start Menu, desktop shortcut, or the installer completion screen.

Windows may display a User Account Control prompt because MonitX requests administrator privileges for system-level monitoring. Allow the prompt if you want to use the packaged application.

First launch

After startup, MonitX opens its settings window and places the monitoring overlay in the top-right corner by default. The settings window can be minimized while the overlay continues to run. MonitX also adds an icon to the system tray, where it can be managed or closed.

Use the settings pages to configure:

  • Overview: Enable or disable monitoring globally and review current values.
  • Items: Select which metrics appear in the overlay.
  • Appearance: Set the overlay position, orientation, opacity, and scale.
  • General: Change the language, update interval, startup behavior, and hidden-start option.

Settings are saved automatically to config/monitx_config.json beside the application. Use the Reset action in the settings window to restore the default configuration.

Available metrics

Metric Description
CPU Usage Current processor utilization.
CPU Temperature CPU temperature when a supported sensor is available.
GPU Usage GPU utilization collected through Windows PDH.
GPU Temperature GPU temperature collected through NVML when supported.
RAM Usage Current system memory utilization.
FPS Desktop frame rate measured through the DXcam capture backend on Windows.

If a temperature sensor or FPS backend is unavailable, MonitX keeps running and reports the affected value as unavailable or zero rather than stopping the whole application.

3. Technical Details & File Structure

Technology stack

  • Language: Python 3
  • GUI: PyQt6
  • System metrics: psutil, pynvml, and Windows WMI/PDH interfaces
  • FPS capture: DXcam with OpenCV processing on Windows
  • Packaging: Windows executable distribution with an Inno Setup installer
  • Configuration: JSON
  • Localization: JSON translation files

Install the source dependencies with:

pip install -r requirements.txt

Run the source version with:

python main.py

The source workflow is intended for Windows because several dependencies and monitoring backends are Windows-specific.

Runtime design

main.py creates the Qt application, requests administrator privileges on Windows, acquires the single-instance guard, and starts the settings window. SettingsWindow coordinates the configuration UI, system tray, overlay, and monitoring worker. StatsWorker runs metric collection in a Qt worker thread and sends updates to OverlayWindow through Qt signals. The overlay updates its layout and visual state without blocking the settings UI.

File structure

MonitX/
├── main.py                    # Application entry point and startup lifecycle
├── config.py                  # Defaults, validation, persistence, and translations
├── monitors.py                # CPU/GPU/RAM/FPS collectors and worker thread
├── overlay.py                 # Always-on-top performance overlay
├── settings_window.py         # Main settings window and tray integration
├── widgets.py                 # Reusable widgets, title bar, and UI animations
├── styles.py                  # Qt styles, overlay theme, and logo loading
├── instance_guard.py           # Single-instance protection
├── requirements.txt            # Python runtime dependencies
├── config/
│   └── monitx_config.json      # User configuration file
├── languages/                  # Localized UI strings
│   ├── en_US.json
│   ├── zh_CN.json
│   ├── zh_TW.json
│   ├── ja_JP.json
│   ├── ko_KR.json
│   ├── fr_FR.json
│   ├── de_DE.json
│   └── ru_RU.json
└── logo/
    ├── logo.ico                # Application icon
    └── MonitX_Setup.iss        # Inno Setup installer definition

Configuration notes

The configuration manager validates values when loading and saving. Overlay opacity is limited to 20–100%, scale to 0.5–1.5, and the update interval to 0.1–3.0 seconds. Invalid or incomplete values are replaced with safe defaults. The configuration file is written through a temporary file and an atomic replace operation to reduce the risk of corruption.

About

A lightweight Windows desktop performance-monitoring application

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages