Skip to content

Node Reference Sources

Bobby Comet edited this page Aug 2, 2026 · 6 revisions

Node Reference — Sources

Every source has one output socket (kind below). Properties are usually constants (device names, formats), not bindable inputs. Wire the output into a Logic node or a Visual bindable property (gauges, text, graphs, LEDs, triggers).

Kinds at a glance

Kind Meaning Typical targets
percent 0–100 float Arc gauge, bar, LED, history/sparkline
celsius Temperature °C Text, or Map Range → gauge
number Unitless float (MB/s, RPM, MHz, …) Scale/Map Range → gauge; Text via String Format
text Display string Text Label, String Join
category Short token (clear, playing, …) Weather Icon, Enum Map, conditionals

Unused sources are not polled in the export (unless a Custom Script is daemon/self-caching and must run for Custom Lua).


System

CPU Usage — source.cpu_percent

Output percent
core enum — overall or cpu0cpu7

What it does: Reads Conky’s ${cpu} / ${cpu cpuN} — no extra process.

How to use: Wire straight into an Arc Gauge, Bar, or History Graph. For a quieter needle, put Smooth (EMA) in between.

Example: Overall CPU → Arc Gauge (value_suffix = %). Per-core strip without wiring: use CPU Core Strip visual (polls cores itself).

CPU Frequency (MHz) — source.cpu_freq

Output number
core enum — overall ≈ core 0 (${freq}); else ${freq N}

What it does: Current clock in MHz.

Example: Text Label with String Format CPU {value} MHz, or Map Range 800–5000 → 0–100 into a small bar as a “boost” meter.

RAM Usage — source.ram_percent

Output percent

Example: Bar or Arc Gauge. Pair with Invert Percent if you prefer “free RAM” style.

RAM Used — source.ram_used /RAM Total — source.ram_total

Output text (e.g., 3.2GiB / 16.0GiB)

What it does: Conky’s human-formatted ${mem} / ${memmax} — not raw numbers.

Example: Two Text Labels: Used + RAM Used, Total + RAM Total. For gauges use RAM Usage percent instead.

Swap Usage — source.swap_percent

Output percent

Example: LED that lights when swap ≥ 10% (early thrashing warning).

Disk Usage — source.disk_percent

Output percent
mount_path path (default /)

Example: Segmented gauge for /, second node for /home. Critical pulse on Bar when ≥ 90%.

Battery — source.battery_percent

Output percent (or unavailable on desktops)
device string (default BAT0)

What it does: Quietly reports nothing when no battery is present (no fake 0%/100%).

Example: Arc Gauge + LED below 20%. Invert Percent for “empty bar grows as battery dies” is optional styling.


Network

Network Download/Upload — source.net_down / source.net_up

Output number (KiB/s)
interface auto or e.g. wlan0

What it does: Instantaneous speed; auto picks the first up interface at runtime.

Example: Multi-Series Line Graph: series A = down (cyan), series B = up (amber). Or two sparklines in a dense row.

Total Downloaded / Uploaded — source.net_total_down / source.net_total_up

Output text (human cumulative)
interface auto or iface name

Example: Caption under the live speed graph: “Session ↓ …” / “↑ …”.

Wi-Fi Network Name — source.wifi_ssid

Output text
interface prefer explicit wlan0 if auto picks Ethernet

Example: Text Label in a status row next to Wi-Fi Signal.

Wi-Fi Signal Quality — source.wifi_signal

Output percent

Example: Small bar or LED (threshold 40%) for weak-signal warning.

Public IP Address — source.public_ip

Output text
poll_mode default daemon (network can hang)
poll_interval seconds (default 1800)

What it does: icanhazip.com, fallback ifconfig.me.

Example: Text row “WAN: …” for VPN checks — if the IP is not your VPS, the tunnel is down.


System info

Uptime — source.uptime

Output text
format short / long

Example: Footer caption on a sysadmin HUD.

Hostname/Kernel Version — source.hostname / source.kernel

Output text

Example: Header: hostname bold, kernel dim underneath.

Process Count — source.process_count

Output number

Example: Text via String Format Procs {value}.

Load Average — source.loadavg

Output text
which all / 1 / 5 / 15

Example: Terminal-style line load: 0.42 0.38 0.31 with all.

Thread Count/Running Processes — source.threads / source.running_processes

Output number

Example: Compact stats row with process count.

Top Process (Name/CPU %/RAM %) — source.top_process_*

Output name → text; cpu/mem → percent
rank 110 (CPU-ranked list)

What it does: Conky ${top … N}. All three ranks share the same CPU ordering.

Example: Rank 1 name + CPU% as two Text Labels, or use Top Processes Table visual (no wiring needed).


Time

Greeting — source.greeting

Output text (Good Morning / Good Afternoon / Good Night)

What it does: Pure Lua from hour-of-day; no script.

Example: Large title Text Label at the top of a dashboard.

Date / Time — source.datetime

Output text
strftime_format e.g. %A, %B %d %H:%M

Example: Clock readout; for a full analog face use Analog Clock visual instead.


Sensors (external — lm-sensors /GPU tools /smartctl)

External sources support poll_mode: execi (simple Conky cache) or daemon (background loop, zero stutter at high FPS).

CPU Temperature — source.cpu_temp

Output celsius
chip_pattern advanced regex for sensors -u chips
poll_* interval/mode

Example: Map Range 30–95 → 0–100 into Needle Gauge; Hysteresis → LED so it doesn’t flicker at the threshold.

GPU Utilization/Temperature/VRAM Used/VRAM Total

Type Output
source.gpu_util percent
source.gpu_temp celsius
source.gpu_vram_used / _total number (MB)

What it does: NVIDIA via nvidia-smi, AMD via sysfs. Optional amd_drm_card on hybrid laptops.

Example: GPU util → Arc Gauge; VRAM used/total → Math (divide) → percent bar; util + temp on Multi-Series graph.

Disk Temperature — source.disk_temp

Output celsius
device e.g. /dev/sda
poll_interval often 30s+

Notes: May need elevated permissions for smartctl.

Fan Speed (RPM) — source.fan_rpm

Output number

What it does: First non-zero hwmon*/fan1_input.

Example: Text Fan {value} RPM; Rate of Change → rising airflow indicator.


Weather (network / curl, shared cache family)

Shared poll props: prefer daemon, interval ~1800s. Optional fallback_location (e.g. Henderson+KY).

Weather Condition — source.weather_conditiontext

Human string (Partly cloudy).

Weather Category — source.weather_categorycategory

Token: clear / cloud / rain / storm / snow / etc → Weather Icon or Enum Map → opacity.

Weather Temp (F) — source.weather_temp_fnumber

Example: Condition Text + category → Weather Icon + temp Text with suffix °F. For °C use Scale/Map Range or a convert plugin.


Media (needs playerctl)

Shared player name (default spotify) and poll settings.

Node Output Use
Track Title/Artist/Album text Text Labels; String Join for Artist — Title
Playback Status category playing/paused/stopped → image swap or Conditional
Playback Progress % percent Bar or Equalizer Bars trigger

Example: Album Art + title/artist row + progress bar. Empty title when nothing is playing (no stale text).


Custom

Custom Script — source.custom_script

Output From Treat output as (text/number/percent/celsius/category)
Script path / Inline script Path or body (inline wins)
poll_mode / poll_interval execi or daemon

What it does: Escape hatch for shell metrics and legacy sensors.sh / weather.sh. Self-caching scripts keep their own cache filenames so Custom Lua keeps working. Unwired daemon custom scripts still run for pure-Lua themes.

Example: Inline echo "$(df -h /data | awk 'NR==2{print $5}')" as percent after stripping %, or a one-liner JSON parse for a home sensor.


Wiring tips

Goal Chain
Quiet noisy CPU CPU % → Smooth → gauge
°C → ring CPU temp → Map Range 20–100 → 0–100 → Arc Gauge
Warn without flicker Temp → Hysteresis → LED/Glow trigger
Artist — Title Artist + Title → String Join → Text
Weather art Category → Weather Icon; condition → Text
Dual thermal trend CPU temp + GPU temp → Multi-Series A/B

Clone this wiki locally