-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Kurou edited this page Jul 9, 2026
·
4 revisions
A native C++ Rainmeter plugin that reads real-time hardware metrics — GPU, CPU, Memory, Network, Storage, Ping, Battery, System, Motherboard, and Display — directly from vendor APIs (NVML, NVAPI, ADLX, ADL2, IGCL) and Windows APIs (WMI, PDH, Win32). No third-party monitoring tool, no kernel driver, no service — a single DLL.
- Installation — download/build, deploy the DLL, requirements.
- Configuring Measures — every measure option in detail.
-
Metrics Reference — every
Category/Metric, its unit, device indexing, and per-vendor support. - How It Works — architecture, the update/polling model, per-vendor GPU fallback.
-
Quirks & Troubleshooting — value semantics (
-1/-2), what needs a driver, and the gotchas.
- Windows 10/11, x64 (the plugin is 64-bit; Rainmeter is 64-bit)
- Rainmeter installed
- NVIDIA GPU: NVML/NVAPI ship with the driver — nothing extra
- AMD GPU: ADLX/ADL2 ship with the driver — nothing extra
- Intel GPU: IGCL (
ControlLib.dll) ships with the driver — nothing extra - No kernel driver, no service, no elevated install
- Get
NativeHardwareMonitor.dll(download, or build — see Installation) - Copy it into
%APPDATA%\Rainmeter\Plugins\ - Restart Rainmeter
- Reference it from any measure with
Plugin=NativeHardwareMonitor
[MeasureGpuTemp]
Measure=Plugin
Plugin=NativeHardwareMonitor
Category=GPU
Metric=Temperature
Device=0
[MeterGpuTemp]
Meter=String
MeasureName=MeasureGpuTemp
Text=GPU: %1 °C| Option | Required | Values | Notes |
|---|---|---|---|
Category |
yes |
GPU, CPU, Memory, Network, Storage, Ping, Battery, System, Motherboard, Display
|
Case-insensitive; short aliases also accepted |
Metric |
yes | category-dependent — see Metrics Reference | Case-insensitive; short aliases also accepted |
Device |
no (default 0) |
integer index | Which GPU / core / RAM pool / adapter / disk — meaning is per-category |
Host |
Ping only | hostname or IP | The target to ping. Replaces Device= for the Ping category |
PingInterval |
Ping only (default 1000) |
milliseconds | How often the background ICMP echo fires |
UpdateOverride |
no | milliseconds | Poll this category on a background thread at this rate, independent of the skin's Update=. Omit to follow Rainmeter's tick. (UpdateRate is a reserved Rainmeter keyword — do not use it) |
Debug |
no (default 0) |
0, 1, 2
|
1 = startup logging, 2 = all registration/reload events to the Rainmeter log. Never logs metric values
|
Full detail: Configuring Measures.
Every measure exposes a numeric value and, for identity metrics, a string value — Rainmeter picks whichever fits the meter:
-
Numeric metrics (
Usage,Temperature, …) →%1shows the number. -
String metrics (GPU
Name, CPUVendor, StorageVolumeLabel, GPUThrottleReasons, …) →%1shows the text, but only inside aMeter=String. Bound to a Bar/Line/Histogram meter, a string metric reads-1(those meters only use the numeric side).
| Value | Meaning |
|---|---|
-2 |
Plugin-level error (bad handle, module failed to initialize) |
-1 |
Metric not supported on this hardware/driver/BIOS — not an error, genuinely unavailable |
0 or positive |
A real reading |
-1 is common and expected — not every vendor SDK or motherboard exposes every value. See Metrics Reference for the per-category support, and Quirks & Troubleshooting for what's permanently unavailable and why.