A polished, lightweight Windows desktop widget that displays your CPU temperature in real-time with a beautiful translucent overlay.
Download Latest Installer (Windows)
Just download and run CPUTempWidget_Setup_1.2.0.exe - no Python or command line needed!
- Standalone: No need to install LibreHardwareMonitor separately - it's bundled!
- Floating Widget: Translucent, frameless overlay that stays on top of other windows
- Real-time Monitoring: Live CPU temperature updates with configurable refresh rate
- Warning Alerts: Text turns red when temperature exceeds threshold (default: 70°C)
- HOT Indicator: Pulsing "HOT" label appears after sustained high temperature
- System Tray Integration: Easy access from the notification area
- Draggable: Click and drag to reposition anywhere on screen
- Position Memory: Remembers its position between restarts
- Lock Mode: Lock position with click-through for zero interference
- Multi-Monitor Support: Works across multiple displays with DPI awareness
| Component | Technology | Rationale |
|---|---|---|
| UI Framework | PyQt6 | Native look, excellent transparency/frameless support |
| Hardware Monitor | LibreHardwareMonitorLib (bundled) | Direct hardware access, most reliable CPU temp source |
| .NET Interop | pythonnet | Bridge to use .NET libraries from Python |
| Config Storage | JSON file in AppData | Simple, human-readable |
| Packaging | PyInstaller + Inno Setup | Single portable .exe with Windows installer |
-
Install Python 3.12 from python.org
- Python 3.12 is recommended for stable pythonnet support
-
Clone or download this repository
-
Install dependencies:
cd cpu_temp_widget pip install -r requirements.txt -
Run the application (as Administrator for accurate readings):
python main.py
-
Install dependencies (if not already done):
pip install -r requirements.txt
-
Build the executable:
python build.py
-
Find the executable in
dist/CPUTempWidget.exe
| Action | Result |
|---|---|
| Left-click + Drag | Move widget to new position |
| Right-click | Open context menu |
- Lock Position: Prevents accidental dragging and enables click-through mode
- Settings...: Open the settings dialog
- Exit: Close the application
The app runs in the system tray (notification area) next to the clock.
| Action | Result |
|---|---|
| Left-click tray icon | Toggle widget visibility |
| Right-click tray icon | Open tray menu |
- Show Widget: Toggle widget on/off
- Settings...: Open settings dialog
- Start with Windows: Enable/disable auto-start
- Exit: Close the application completely
Access settings from the widget right-click menu or tray menu:
| Setting | Description | Default |
|---|---|---|
| Warning Threshold | Temperature (°C) that triggers warning colors | 70°C |
| Update Interval | How often to refresh temperature | 1 second |
| Text Size | Widget text size (Small/Medium/Large) | Medium |
| Transparency | Background opacity (30%-90%) | 60% |
| Always on Top | Keep widget above other windows | On |
| Start with Windows | Launch automatically at startup | Off |
| Reset Position | Move widget back to default position | - |
For accurate CPU temperature readings, run as Administrator.
The app uses the bundled LibreHardwareMonitorLib to read hardware sensors, which requires elevated privileges on Windows. The installer will prompt for admin rights automatically.
Without administrator rights:
- The app will still run
- Temperature may show as
--°Cor use simulated values - A notification will appear on first run
Run your terminal as Administrator, then python main.py
| State | Color | Meaning |
|---|---|---|
| Normal | White/Light gray | Temperature below threshold |
| Warning | Red | Temperature at or above threshold |
| HOT (pulsing) | Red + indicator | High temp for 5+ seconds |
| Error | --°C with ⚠ icon |
Unable to read temperature |
Settings are stored in:
%APPDATA%\CPUTempWidget\config.json
You can manually edit this file or delete it to reset all settings.
- Solution: Run as Administrator for accurate readings
- Alternative: The app will use simulated values for demo purposes
- Solution: Click the system tray icon or use tray menu → Show Widget
- Alternative: Delete config file to reset position
- Solution: The widget might be locked. Right-click → uncheck "Lock Position"
- Solution: Increase the update interval in Settings (try 2 seconds)
- Solution: Check if
%APPDATA%\CPUTempWidget\folder is writable - Alternative: Run as Administrator
- Language: Python 3.12
- UI Framework: PyQt6
- Hardware Access: LibreHardwareMonitorLib (bundled DLL)
- Config Format: JSON
cpu_temp_widget/
├── main.py # Application entry point
├── widget.py # Floating widget window
├── tray.py # System tray icon
├── settings_dialog.py # Settings window
├── temp_monitor.py # Temperature monitoring thread
├── config.py # Configuration management
├── build.py # Build script
├── build.spec # PyInstaller specification
├── requirements.txt # Python dependencies
├── THIRD-PARTY-LICENSES.txt # Third-party license attributions
├── libs/
│ ├── LibreHardwareMonitorLib.dll # Bundled hardware monitor
│ └── HidSharp.dll # USB HID support library
├── resources/
│ ├── styles.qss # Qt stylesheet
│ ├── icon.ico # Application icon
│ └── icon_data.py # Embedded icon data
└── README.md # This file
This application uses the following open-source software:
- LibreHardwareMonitor - Hardware monitoring library (MPL-2.0 License)
- PyQt6 - UI framework (GPL v3)
- pythonnet - .NET/Python bridge (MIT License)
- HidSharp - USB HID library (Apache 2.0)
See THIRD-PARTY-LICENSES.txt for full license information.
Copyright (c) 2024 Virtual Platforms LLC. All rights reserved.
For issues or feature requests, please open an issue on the project repository.
