Themes control how every key and dial looks: background, label, value, unit, accent and track (the sparkline underfill, the bar, ring and range bar tracks, and the dividers in the multi-reading layouts). Seven presets ship with the plugin, and you can set one per key/dial or once for the whole deck. On top of that, type accents tint the accent color by sensor category, and alerts override everything when a value crosses a threshold.

The seven presets

Pick a theme from the live gallery in any key’s or dial’s settings (the Theme row). Every chip previews its real colors.

Preset Character
Void (default) True black (#000000): pixels off on OLED, only the data glows.
Graphite Near-black slate (#1A1C22): the plugin’s original look, retuned. Existing installs stay here after updating (see below).
Ultraviolet Deep violet cast with lavender signal.
Midnight Blue-black with ice-blue signal.
Forest Green-black with spring-green signal.
Ember Amber-on-black monochrome: VFD/nostalgia look, warm amber value on true black.
Paper High-contrast light theme (near-black ink on warm paper #E9E6DE) for bright rooms and low vision.

A contact sheet of the seven themes (Void, Graphite, Ultraviolet, Midnight, Forest, Ember, Paper), each key showing a live value, unit and sparkline, with the amber warn and red critical alert states below them, then a row showing what one key can hold (two, three and four readings, and the Bar and Ring gauges), and four Stream Deck + touchscreen faces at their true relative size, including both multi-row overviews.

Note: Void is the default for new installs. Graphite is the pre-theme legacy look. If you had the plugin configured before themes existed, the deck default stays on Graphite so nothing changes visually; a genuinely fresh install starts on Void. Either way, the moment you pick any theme yourself, that choice takes over.

The display system

All seven presets follow one written display system, and its rules are measured, not eyeballed:

  • True black is the instrument. Void’s background is #000000: OLED pixels off, so the key face physically disappears and only the data glows. The tinted presets keep their backgrounds dark enough to read as black with a cast at arm’s length, which preserves the same effect.
  • One bright element per key. On Void the value sits at 21:1 contrast against the background, the label at 5.5:1, the unit at 4.2:1. The unit is dimmest on purpose: its position and the number’s magnitude already tell you °C from W, so it stays quiet and keeps the number’s silhouette crisp.
  • The physics sets the sizes. At a normal desk distance a Stream Deck key is small enough that one canvas pixel covers roughly 0.6 of an arc minute of your vision. Value digits are sized to stay glanceable; the label is sized for identification, so it earns moderate contrast, never brightness.
  • Anchors never move. Within a layout the anchors are fixed: a one-reading key always puts its label on baseline 32, its value on 94 and its unit on 114, whether it shows a sparkline, a Bar, a Ring or nothing, and on every theme. The two-, three- and four-reading layouts each have their own fixed grid. That constancy is what makes a mixed wall of temperatures, clocks and fan speeds read as one instrument instead of a collage.
  • Alerts break every rule on purpose. Warn and critical recolor the whole face from two global palettes that no theme may tint, so an alert is unmistakable on any theme and with any color vision.

Every key and dial screenshot in these docs is real renderer output regenerated by scripts, never a mockup (the docs also carry real property-inspector captures and one photograph of live hardware), and the geometry above is locked by the test suite.

Per-key vs. deck-wide

Every key and dial has its own Theme setting. You can:

  • Set a preset per key/dial: that key uses exactly that theme, ignoring everything else.
  • Follow the deck default: the key uses whatever the deck-wide theme is, so changing one setting re-skins the whole wall at once.

Set the deck-wide theme under Advanced → Deck theme in any key’s settings, or under Dial gestures & advanced → Deck theme on a dial (it’s a global setting; there’s one value for the whole plugin).

Precedence

The rule: a per-key theme always wins. The Advanced Deck theme only affects keys and dials set to Deck default.

The “Deck default” chip

The theme gallery leads with a Deck default chip, followed by the seven presets. Click it to make that key follow the deck-wide theme instead of pinning a preset.

Because that chip previews the resolved deck theme, it could look identical to the preset it currently follows. To keep it unmistakable, the Deck default chip (as of 1.1.5):

  • wears a dashed frame and a small link/follow badge (a drawn glyph, not an emoji, so it stays legible on any palette),
  • shows “auto” on its face instead of a sample value,
  • names the resolved theme in its tooltip and in the help line under the gallery, e.g. Deck default · Void / “currently Void”.

So even when the deck theme it follows renders an identical palette, the follow chip is never mistaken for the Void (or any) preset chip.

The Theme gallery in the property inspector: the dashed "Deck default" chip with its link badge and "auto" face, followed by the seven preset chips, with the help line under the gallery naming the resolved theme.

Text: Theme, Dim, or Custom

The dark themes use bright near-white values, and Ember uses amber. Both can be too much in a dark room or for light-sensitive eyes, so every key and dial has a Text setting directly under its theme gallery, with a deck-wide default under Advanced → Deck text:

  • Theme (deck-wide default): the selected theme’s own text colors, exactly as before.
  • Dim: a lower-intensity version of the theme’s text. One fixed algorithm blends each text color toward the theme background, so it lands correctly on dark and light themes alike and keeps the value/label/unit hierarchy.
  • Custom: your own color. Text color sets it, and the main value uses it exactly as picked, never adjusted. Dim labels, units and stats decides the secondary text: ticked, labels, units, suffixes and MIN/MAX/AVG badges take the same hue at lower intensity; unticked, every textual element uses the exact color.

Per-key and per-dial settings default to Deck default, which follows the deck-wide Text value; a local Theme, Dim or Custom wins over it, mirroring the theme precedence rule. An invalid custom color falls back to theme text.

The Text select under the theme gallery, set to Custom, with the Text color well and the "Dim labels, units and stats" checkbox revealed.

The setting recolors text only. Backgrounds, theme and type accents, sparklines, bars, rings, range bars, tracks and separators keep their theme colors, status screens keep their fixed safety colors, and the alert palettes always override it: a warning key is amber with black text whatever Text says, and a dial’s alert-colored bar or overview row value is never recolored.

Type accents

Type accents (Advanced → Type accents, on by default) color the accent on each key and dial by the sensor’s type: the sparkline’s line and end dot, the Bar and Ring gauge fills, the MIN/MAX/AVG badge in its gap under the title, and on a dial the range bar fill or the overview’s selection bar. Only the accent changes; label, value and unit keep the theme’s own luminance rhythm.

Sensor type Accent
Temperature Rose (#FF7E8E)
Fan Cyan (#3FBEDD)
Power Gold (#D4AB33)
Clock Green (#38CD89)
Load / usage Violet (#B195FF)
Network Blue (#6FA7FF)
Memory Magenta (#CE8BE0)

Network and memory readings don’t have a dedicated HWiNFO type, so they’re recognized from the unit (throughput like MB/s, Mbps) or label (memory, RAM/VRAM). Anything the plugin can’t classify keeps the theme’s own accent.

Turn type accents off (Advanced → Type accents → “Off (theme accent everywhere)”) to use the theme’s accent color everywhere instead.

Note: Paper ignores type accents by design: its accent stays ink so the light theme keeps its high contrast. Switching to Paper effectively disables accents regardless of the toggle.

Alerts override everything

When a value crosses a threshold (see Alerts & thresholds), the theme steps aside for a global alert palette:

Level Field Text
Warn Bright amber (#E8940D) Black
Critical Red (#CB2114) White

On keys, the whole face flips: background, label, value, accent and track all recolor from the alert palette. On dials (Stream Deck +) the rest of the touchscreen stays themed, because the slot is too small for a full field flip: in the single view the range bar fill flips to the alert color, and in the two-row and three-row overview views, which have no bar, an alerting row’s value takes it instead.

The two alert palettes are global, never tinted per theme, and the warn/crit fields differ in luminance as well as hue. That aviation-style master-caution/master-warning treatment keeps warn and critical unmistakable on any theme and with any color-vision deficiency. Type accents don’t apply while alerting.


Themes and colors are pure display: nothing here is sent anywhere. This is a Windows-only, HWiNFO-dependent plugin with no telemetry (MIT licensed). See Sensor Reading (keys) and Sensor Dial (Stream Deck +) for where each color lands on the face, and Alerts & thresholds for the threshold rules that trigger the alert palette.


MIT licensed. No ads, no telemetry. Not affiliated with REALiX/HWiNFO or Elgato. © Stephen Lawrensen.