Skip to content

Node Reference Visuals

Bobby Comet edited this page Aug 4, 2026 · 8 revisions

Node Reference — Visuals
Visuals draw via Cairo in render.lua. They have no data output. Bindable rows accept wires (source/logic kinds must be in accepts).
Placement: cx, cy = centre; x, y = top-left. Layers dock: draw order, hide (skipped in codegen), lock.
Common bind targets: value, trigger, category, title_label, rotation, opacity-related fields where listed.


Text

Text Label — visual.text

value bindable — all kinds (numbers auto-format)
prefix/suffix/decimals formatting
x, y, align, font, colour, halo style

What it does: Single-line readout or caption.
Examples: Fixed title "SYSTEM"; wire CPU % for a live number; wire String Format/String Join for Artist — Title. Halo helps on busy wallpapers.

Text List — visual.text_list

Multi-line block; value bindable (all kinds; newlines separate lines).
Example: Custom Script printing three lines of service status.

Wall Calendar — visual.wall_calendar

Month grid with today highlight, optional outside days, fonts/colours per role.
Example: Side panel on a desktop HUD; pair with Date/Time text above.

Flip Digit — visual.flip_digit

Split-flap / departure-board style digit. On value change it runs a fold-and-shrink animation (cairo_scale + STATE that tracks the previous value).
Example: Large clock digits or a counter that “flips” when the number updates; pair several for multi-digit readouts.

Loading Dots — visual.loading_dots

Small bouncing-ellipsis loader.
Example: Idle “thinking” indicator next to a status line or while a long-running script is active.


Gauges & bars

Arc / Ring Gauge — visual.arc_gauge

value bindable numeric
min/max, cx, cy, radius, thickness, start/sweep geometry
value_suffix, track/fill, caps, gradients style

Example: CPU % or RAM % direct. Partial sweep (270°) for “dashboard” look. Stack Ring Track underneath for chrome.

Segmented Gauge — visual.segmented_gauge

Discrete lit segments (LED-ring style).
Example: Battery or GPU util in sci-fi HUDs; fewer segments = chunkier look.

Needle Gauge — visual.needle_gauge

Analog dial: zones (ok/warn/danger), ticks, needle, optional value text.
Example: CPU temp after Map Range; warn zone from 60%, danger from 85%. Requires current Studio build with framework text helpers (needle labels).

Bar — visual.bar

Horizontal/vertical; solid, segmented, or trapezoid skin; optional critical pulse.
Example: RAM % segmented; disk % with pulse ≥ 90%.

Reactor Gauge — visual.reactor_gauge

Stylized core gauge with accent / warn / critical behaviour (theme chrome).

Ring Track — visual.ring_track

Static arc only; no value.
Example: Decorative rings behind Arc Gauge or Radar.

LED Dot — visual.led_dot

value bindable; on when ≥ threshold
color_on / color_off, glow, cx, cy, radius

Example: Wire Hysteresis/Threshold output (0/1); threshold 0.5. Status “disk hot”, “VPN down”, etc.

CPU Core Strip — visual.core_strip

Per-core bars from ${cpu cpuN} inside the visual; no source nodes required.
Example: 8-core strip with heat-map colours at the bottom of a gaming HUD.

Spinning Fan — visual.spinning_fan

Drawn fan (curved Bézier blades + hub) that rotates; speed driven by a bound value. Pairs with the fan_sensors script family. Optional motion-blur ghost-blade pass so motion remains readable even at slow Conky refresh rates.
Example: Wire a fan RPM (or normalised 0–1) so the blades spin proportionally; place next to a temperature gauge.


Graphs

History Graph — visual.history_graph

value bindable — rolling samples
title_label bindable caption above the frame (text or numbers)
width/height, fill, colours style

Example: CPU % history; title wired from String Format CPU {value}%.

Sparkline — visual.sparkline

Compact, borderless; auto_scale fits recent samples.
Example: Dense row of net down/up sparklines without heavy frames.

Multi-Series Line Graph — visual.multi_line_graph

Up to three series (value_a/b/c), shared min/max, optional title_label.
Example: CPU temp (A) + GPU temp (B); or download + upload. Leave unused series unwired.

Top Processes Table — visual.top_table

Conky ${top} table (rank, name, CPU, MEM) drawn as rows — no source wiring.
Example: Classic sysmon corner; 5 rows, header on.

Radar Chart — visual.radar_chart

Polar / spider chart with up to 6 bound axes. Plots multiple series on one shape (e.g. CPU / RAM / GPU / Disk / Net / Temp as a single polygon).
Example: System-health overview in the centre of a HUD; each axis wired to a normalised 0–1 metric.

Radial Spectrum — visual.radial_spectrum

Equalizer-style bars arranged in a ring.
Example: Decorative audio-reactive (or CPU-reactive) ring around a central gauge or album art.


Effects

Glow / Pulse — visual.glow_pulse

mode circle/image silhouette/star/triangle
trigger + threshold optional gate
pulse Hz, alpha min/max, layers motion

Example: Always-on soft ring behind a logo; or trigger from CPU ≥ 85 so the glow only appears under load.

Spiral — visual.spiral

Rotating spiral or tick radar.
Example: Idle chrome; rotation_speed_dps negative to reverse.

Radar Sweep — visual.radar_sweep

Concentric rings, sweep beam, optional blips.
Example: Sci-fi/JARVIS centrepiece under a Reactor Gauge.

Orbit Field — visual.orbit_field

Dots on rings; trigger scales speed (and slightly radius).
Example: Wire CPU % so orbits speed up under load.

Equalizer Bars — visual.equalizer_bars

Decorative EQ (not real FFT). trigger raises energy; unbound uses idle energy.
Example: Trigger from Playback Progress or CPU for “alive” chrome near Now Playing.

Moon Phase — visual.moon_phase

Phase disc, illumination, next full/new; approximates lunar eclipses (e.g. deep partial 2026-08-27/28, total 2028-12-31/2029-01-01) and solar-eclipse seasons. Southern hemisphere flips the limb. Labels fit inside the bracket box.
Example: Side widget with brackets on; southern_hemisphere for AU/NZ users.

Analog Clock — visual.analog_clock

Face, hands, optional digital readout — wall-clock time, not a source wire.

Corner Brackets — visual.corner_brackets

HUD corner frame; arm length/thickness/which corners.

Vinyl Spinner — visual.vinyl_spinner

Spinning record with grooves, label, spindle, and specular sheen. Freezes on a bound spin gate via STATE + delta-time (not naive wall_clock() * rpm), so pause does not jump the angle.
Example: Beside Now Playing / Album Art; gate from playback state so the disc stops cleanly when the track is paused.

Matrix Rain — visual.matrix_rain

Matrix-style falling code, fully procedural (time + index hashing; no per-frame random seed to manage).
Example: Full-panel or side-strip background chrome for a cyberpunk theme.


Shapes

Node Role
Rectangle Panels, cards, backdrop chips (fill/stroke, radius, gradient)
HLine/VLine Section dividers, gutters
Crosshair Reticle/radar centre
Circle Full disc, arc, or pie
Star/Triangle Decorative geometry

Example: Semi-transparent Rectangle behind a cluster of gauges; HLine under a title.


Icons & images

Image / Icon — visual.image_icon

path PNG/SVG (copied to images/ on build)
size, rotation (bindable)
swap paths by threshold optional

Example: Logo; rotation from a Math node for a slow spin. Threshold swaps for temp-based artwork.

Weather Icon — visual.weather_icon

category bindable category (or constant for preview)

Example: Wire Weather Category; no image files needed (vector).

Album Art — visual.album_art

Fetches art via playerctl ecosystem; size/position; daemon helper script.
Example: Square art beside Now Playing text.

Icon Glyph — visual.icon_glyph

Font codepoint glyph (Nerd Font/icon font).


Advanced

Custom Lua — visual.custom_lua

Offset X/Y Shift whole block
Input 1–12 Bindable (in1in12; nil if unwired)
code Cairo with cr, W, H, helpers (clamp, lerp, wall_clock, load_image_cached, …)

Example: Legacy theme body paste; later wire CPU to in1 and prefer tonumber(in1) or safe_number('${cpu}', 0).


Click actions

Where exposed: on_click_command + click region (x,y,w,h) in canvas pixels. Conky mouse hook runs the shell command (e.g. playerctl play-pause).


Gradients

Many fill-capable nodes support solid/linear/radial via fill mode + end colour. Sparklines, multi-series lines, and segmented gauges use solid colours only.


Quick recipes

HUD idea Nodes
CPU ring + label CPU % → Arc Gauge; String Format → Text
Smooth needle temp CPU temp → Smooth → Map Range → Needle Gauge
Hot LED without flicker Temp → Hysteresis → LED Dot
Net history Down + Up → Multi-Series; title_label caption
Weather row Category → Weather Icon; Condition + Temp → Text
Now Playing Album Art + String Join(Artist,Title) + Progress Bar
Sci-fi chrome Ring Track, Radar Sweep, Orbit Field (trigger=CPU), Corner Brackets
Fan + temp Fan RPM → Spinning Fan; Temp → Needle or Arc Gauge
System spider Six normalised metrics → Radar Chart
Vinyl + art Playback state → Vinyl Spinner gate; Album Art beside it
Cyberpunk panel Matrix Rain background + Flip Digit clocks + LED Dot status
Radial EQ chrome Trigger (CPU or progress) → Radial Spectrum around a central gauge

Clone this wiki locally