← wobble · the long version, plus every default hotkey.
Wobble does everything possible on the GPU. If you saw Redshift and wondered why compositing is still so slow, that's what this is for. Where possible, all nodes are compiled into a single compute shader. Nodes that break the flow glow red.
To get the best out of it you will need as fast an SSD as possible, and a good GPU. It is free compositing for people with expensive computers.
If you have fast storage, the bottleneck is often the EXR compression decode.
Wobble caches Read nodes locally and runs the comp in real time on the GPU. If your storage is fast enough, this is the most wobbly way to work.
| RAM | On by default. Size with --cache-gb N (default is a quarter of your RAM, 4–24 GB). |
| NVMe | Menubar → cache… → pick a folder on a fast drive and set a size limit. It is saved for next time. Frames load in ~10–20 ms instead of a full EXR decode. |
| Per Read | Each Read node has RAM cache and NVMe cache toggles, plus an in/out frame range. |
| Viewer | Timeline → cache viewer. Only when you ask. Bakes the finished comp so playback skips the GPU work. Any edit clears it. |
Set a Read's out point past the last frame to watch a render arrive. Missing frames show black and fill in as they land.
In the node graph, hold a key and click a node:
Click again to unpin. Pinned nodes show a small dot.
Shift+Z+click or Shift+X+click clears the bin and solos that node's settings.
Menubar hud: select / pin switches between "follow the selection" and "pinned only". clear empties the HUD.
Hold while dragging any value (slider, number, gizmo):
RGB sliders move all three channels together by default. Hold a key while dragging:
| G | Move one channel on its own |
| S | Saturation |
| D | Orange ↔ cyan (warm / cool) |
| F | Green ↔ magenta |
S, D and F never change brightness. The slider lines preview what the drag will do.
Hold Ctrl and drag any row out of the properties panel. Drop it on the viewer to get a floating HUD slider for that value.
Press E in the graph to open the patch bay. Each node shows its values: inputs on the left, outputs on the right.
Linked values glow amber.
In the graph: hold the key, flick toward an option, let go.
| ` | Node ops: group, ungroup, unify size, tidy, swap inputs, bypass, frame, region… |
| ⌥+` | Global sources: your common inputs (like a crypto or utility Read), anywhere in the graph. |
| ⌘+` | Region sources: the same, for the region you're in. |
| Shift+` | Show and edit all hidden wires (amber). |
A region is a named, coloured area of the graph. Think one per render layer: FG, ENV, CHAR.
A group is a backdrop that wraps its nodes, shaped to fit them. It is only for looks: it never changes the picture.
| ⌘G | Group the selected nodes |
| ⌘⇧G | Ungroup |
Drop a node inside a group to add it. Drag a member away and the backdrop stretches to follow.
Group = tidy label. Region = owns nodes and has its own sources.
Most can be remapped from keys… in the menubar. The key under the cursor belongs to that pane.
| ⌘+S | Save setup |
| ⌘+⇧+S | Save setup as… |
| ⌘+O | Open setup… |
| ⌘+Z | Undo |
| ⌘+⇧+Z | Redo |
| Q | Fullscreen the pane under the cursor |
| ⌘+Q | Fullscreen + node overlay |
| Esc | Back to the panelled layout |
| W | Show / hide the properties bar |
| Y | Curve editor |
| L | Browse for media |
| Space | Play / pause |
| A | Show alpha |
| P | Pixel readout under the pointer |
| ⇧+P | Hold the current sample beside the live one |
| R / Home | Fit image to viewer |
| H | Vector HUD |
| Shift-drag | Scrub the timeline |
| Ctrl-click gizmo | Go to its node |
| Tab | Node search |
| Enter | Open the selected tool / Noise / 2dini |
| Delete / ⌫ | Delete selection |
| R / Home | Frame selection (all when empty) |
| E | Expression-link mode |
| ` | Node-ops radial menu |
| ⌥+` | Global source menu |
| ⌘+` | Region source menu |
| ⇧+` | Node-patch mode (hidden wires) |
| M | Move selection to region |
| D | Bypass |
| U | Unify node size |
| T | Tidy |
| S | Swap two inputs |
| A | Align swipe (hold + drag) |
| Z | Pin properties panels (tap = selection, click = node) |
| X | Pin viewer controls (tap = selection, click = node) |
| G | Pick up / drop a noodle from the selected port |
| . | Hold + click a wire: routing dot (drag for tension) |
| ⌘+G | Group |
| ⌘+⇧+G | Ungroup |
| 1 2 | View in slot A / B |
| 3 4 | View in second pane's slot A / B |
| ⌘+↑ ⌘+↓ | Swap node with parent / child |
| Ctrl+A / ⌘+A | Select all |
| ⌘+C ⌘+X ⌘+V | Copy / cut / paste (Ctrl works too) |
| Ctrl-drag | Slice wires |
| Shift | Wire the courting pair |
| Alt-drag / middle-drag | Pan |
| Ctrl+Alt-drag | Drag zoom |
| ⌘+right-drag | Dolly zoom |
| hold ZXCVBN | Drag rate ×0.01 · ×0.1 · ×⅓ · ×3 · ×10 · ×30 |
| hold G | RGB slider: one channel on its own |
| hold S | RGB slider: saturation |
| hold D | RGB slider: orange ↔ cyan |
| hold F | RGB slider: green ↔ magenta |
| [ ] | Brush smaller / larger (Shift = softness, Alt = opacity) |
| Alt-click | Set clone source |