Skip to content

Scale Percent

Bobby Comet edited this page Aug 23, 2026 · 1 revision

Scale %

What it is

Scale % is a property on visual nodes (built-in and plugin). It uniformly scales the entire drawn element—geometry, text, strokes, and images—around the node’s position or center.

It does not replace Width, Height, Radius, Size, and similar fields. Those set the base size; Scale % is an extra multiplier applied on top (100% = no change).


Where it appears

In the Properties panel, under the Shape group (with dimensional controls), on nodes that support drawing:

  • Bars, arcs, gauges, needles
  • Text, shapes, images, icons
  • Effects (glow, spiral, orbit, equalizer, matrix rain, etc.)
  • Custom Lua visuals

Default: 100. Range: 1–500, step 1.


What it does

Scale % Result
100 Normal size (no extra transform)
50 Half size, paths, text, line widths, and images stay in proportion
200 Double size, same proportions
1 Near-minimum (still drawn, very small)
500 Maximum allowed in the UI

Everything inside that node’s draw call is scaled together:

  • Paths and fills
  • Stroke widths
  • Text and font rendering
  • Loaded images/icons

So a bar, its label, and its stroke all grow or shrink as one unit.


Pivot (what stays fixed)

Scaling is done around a pivot:

  1. cx / cy if the node has them (arc gauge, needle, fan, orbit, etc.) → center stays put
  2. Otherwise x / y → that corner/origin stays put
  3. If neither is usable → (0, 0)

So a centered ring stays centered when you change Scale %; a bar anchored at top-left keeps that corner fixed and expands outward.


How it works under the hood

At Build / Live Preview, codegen wraps the node’s draw body in a Cairo transform:

  1. cairo_save
  2. Translate to the pivot
  3. cairo_scale(s, s) where s = Scale% / 100
  4. Translate back
  5. Run the normal draw code (in a protected call)
  6. cairo_restore

If Scale % is missing or exactly 100, no wrap is emitted (no extra cost).

That runs after the node’s own size props are used in the generator, so Scale % multiplies the finished drawing rather than rewriting every size field.


Relation to other size controls

Control Role
Width/Height/Radius/Size/etc. Define the base geometry in the generator
Scale % Uniform multiplier on the whole result
Position Stage/X·Y/Cx·Cy Where the element sits; pivot for scale

Example: Arc Gauge with Radius 70 and Scale 150% draws as if the radius (and thickness, value text, etc.) were scaled by 1.5 around (cx, cy).


Practical tips

  • Use Scale % to shrink or enlarge a finished element without retuning every size slider.
  • For layout on the Position Stage, scale does not change the proxy’s estimated size in the stage UI the same way live Conky does—check Live Preview for the true look.
  • Very large values (near 500%) can push content outside the window; combine with position or window size.
  • Custom Lua: scale still wraps the generated draw_node_* function, so your code is scaled with the node unless you opt out of the normal pipeline.

Clone this wiki locally