-
Notifications
You must be signed in to change notification settings - Fork 0
Configuring Measures
Every reading is one Rainmeter measure with Measure=Plugin and
Plugin=NativeHardwareMonitor. What it reads is set by Category + Metric;
which device by Device. All option names and values are case-insensitive
and whitespace-trimmed.
[MeasureGpuTemp]
Measure=Plugin
Plugin=NativeHardwareMonitor
Category=GPU
Metric=Temperature
Device=0Which subsystem. One of GPU, CPU, Memory, Network, Storage, Ping,
Battery, System, Motherboard, Display. Short
aliases (e.g. net, mb, monitor) also work.
An unknown category makes the measure inert (it reads -2) and logs a note.
Which reading, within the category. Values are category-dependent — see the full list in Metrics Reference, which also lists the short aliases each metric accepts. An unknown metric for a valid category behaves like an unknown category (inert).
Which instance. Meaning depends on the category:
| Category |
Device means |
|---|---|
| GPU | GPU index in enumeration order (0 = first detected) |
| CPU |
0 = whole-CPU aggregate; 1..N = individual logical core. Topology/identity metrics live on 0
|
| Memory |
0 = RAM, 1 = Virtual (commit), 2 = Swap (pagefile) |
| Network | Interface index (loopback/tunnel excluded) |
| Storage | Drive-lettered volume, sorted by drive letter |
| Ping |
not used — use Host= instead |
| Battery |
not used — always a single battery (0) |
| System |
not used — single machine-wide device (0) |
| Motherboard |
not used — single device (0), all-string identity |
| Display | Monitor index (0 = primary/first active monitor) |
Hostname or IP to ping (e.g. 1.1.1.1, google.com). Replaces Device= for the
Ping category. Each distinct host gets its own background poller.
Milliseconds between ICMP echoes for this host.
Milliseconds. When set, this category is polled on a background thread at this rate,
independent of the skin's Update=. Omit it to gather in step with Rainmeter's tick.
Useful for a fast network/storage readout under a slow skin, or to throttle an
expensive category.
Do not use
UpdateRate— that's a reserved Rainmeter keyword. The option is namedUpdateOverrideprecisely to avoid the collision.
These are two different knobs and they do not conflict:
-
UpdateOverride(plugin) sets how often the hardware is sampled. -
UpdateDivider(built-in Rainmeter) sets how often the measure is read/displayed — it just changes how often the cached value is shown, never how often it's sampled.
Set both freely: the hardware is sampled every UpdateOverride ms, and the meter shows
the latest cached value every Update × UpdateDivider. Rate metrics (network/storage
speed, ping) divide by real elapsed time, so they stay correct at any combination.
The common mistake is reaching for the wrong one. A big UpdateDivider on a
Download speed measure with no UpdateOverride samples only when the meter is
read, so "speed" becomes an average over the whole divider window. Add
UpdateOverride=1000 and the background thread samples every 1 s while the meter still
refreshes slowly — a true 1-second speed shown at your chosen display rate.
UpdateOverrideis per-category, not per-measure. All measures of one category (e.g. everyCategory=GPUmeasure) share one background poller running at the smallestUpdateOverrideset among them. Setting it on one measure sets the sampling floor for the whole category. To make a single measure update slower on screen, useUpdateDivideron that measure — it's free and doesn't touch sampling.
Diagnostic logging to the Rainmeter log (About → Log), plus an optional metric dump.
| Value | Behaviour |
|---|---|
0 |
Silent (plus always-on init/error events) |
1 |
Log this measure's registration/reload |
2 |
All registration/reload events + dump every metric for this measure's category+device to a file |
At Debug=2 the plugin writes %TEMP%\NativeHardwareMonitor\<Category>_dev<N>.txt
(overwritten each update, throttled to ~2 s) listing every metric for that
category and device — numeric values (with unsupported / error annotations)
and strings. This is the file to send back when helping verify hardware the
author can't test locally (see Intel GPU — help verify).
The plugin tracks the max Debug across all measures, so one measure at 2
raises verbosity globally.
Rainmeter measures expose a numeric side and a string side; the plugin fills whichever the metric is.
-
Numeric metrics (
Usage,Temperature, clocks, bytes…) →%1shows the number. Bind these to any meter (String, Bar, Line, Histogram, Roundline…). -
String metrics (
Name,Vendor,VolumeLabel,ThrottleReasons,MemoryType…) →%1shows the text, but only in aMeter=String. Bound to a numeric-only meter (Bar/Line/Histogram) a string metric reads-1.
; numeric — clocks come out in Hz, so autoscale
[MeasureCoreClock]
Measure=Plugin
Plugin=NativeHardwareMonitor
Category=GPU
Metric=CoreClock
[MeterClock]
Meter=String
MeasureName=MeasureCoreClock
AutoScale=2k
Text=Core: %1Hz
; string — must be a String meter
[MeasureGpuName]
Measure=Plugin
Plugin=NativeHardwareMonitor
Category=GPU
Metric=Name
[MeterName]
Meter=String
MeasureName=MeasureGpuName
Text=%1- Clocks: Hz (converted from MHz — use
AutoScale=2k). - Sizes / throughput: bytes (or bytes/sec).
- Percentages:
0–100. - Network link speed: bits/sec.
Full per-metric detail: Metrics Reference.
For what -1 / -2 mean and common surprises: Quirks & Troubleshooting.