Skip to content

Node Reference Visuals

Bobby Comet edited this page Aug 2, 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.


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.


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.


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.


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

Clone this wiki locally