Docs Interface

CommandPalette

A command palette inside TouchDesigner: every command your FNS tools declare and TouchDesigner's own palette components in one ranked list, opened with a hotkey and aware of what you are looking at. Manage favourites and hidden commands from its tab in Hub.

▦ Interface Hub tab

Where it appears

Read off the registry hosts in the component, so this is where the tool puts itself in a default install; every one of these can be reordered or hidden from Hub.

  • Hub tabas Commands · position 40

Shortcuts

Global: they fire anywhere in TouchDesigner. Shortcuts scoped to a single panel are a local control scheme and stay off this list.

  • Ctrl+Shift+POpen the palette over the network you are in

CommandPalette

Press the hotkey (ctrl.shift.p by default) and a small window opens over the network you are in: one input, a ranked list, and a footer that always says what Enter will do to the row you are on. Type to filter, Up and Down to move, Enter or a click to act, Esc to close. Clicking anywhere else closes it too.

The list is fed by CommandRegistry: every command any installed FNS tool declares, without the tools knowing this palette exists. TouchDesigner's own palette components are in the same list, read from the Palette Browser's model, so your own palette folders are included; Enter on one places it into the network you came from, right of everything and selected.

Ranking cares about where you were when you opened it. The palette takes a snapshot of your context before its window can take focus, and a command whose context that snapshot satisfies ranks first, most specific first: a command about the parameter under your mouse, then one about the current or selected operator, then one about the network, then general commands, then components. A command whose context is missing is dimmed and refused. Badges are coloured by kind, and context commands carry a small par / op / net tag so the reason for a row's rank is visible.

Once you type, the words you typed decide the order and the context only breaks ties. Every word must hit, and a hit is read as strictly as it can be: the whole title, its start, the start of a word in it, anywhere in it, then the looser readings that only fill in below those, initials (mfo), a typo of a word (opne ext, nosie; one slip for words of four to seven letters, two from eight) and last the letters in order (tmln). Spellings either side of the Atlantic are the same word (randomise finds Randomize). A hit in the title ranks above the same hit in a tool name, and the file path of a component only counts when the word is literally in it.

Enter on a command that declares parameters walks them one at a time. A menu parameter becomes pick rows filtered as you type, the rest a text field whose placeholder names the parameter, its type and its default. Enter accepts (empty keeps the default), Left steps back a parameter, Esc backs out to the list.

Palette components

TouchDesigner's own palette components are rows like any other, tagged TOX. Choosing one (Enter, or a click) loads it into the network the palette was opened over and hands it to your mouse, exactly like a new operator from the OP Create dialog: move it where you want and click to place. You can also press a row and drag it into any network pane, the gesture TouchDesigner's own Palette browser uses. Derivative's built-in components ship as bundles (the component, its icon and its help text in one wrapper); the palette unwraps them either way, so what lands in your network is the component itself.

Prefixes

A leading character scopes the query. With nothing typed the footer shows them.

Prefix Scope
> Commands only: your tools' commands first, then TouchDesigner's own built-in commands, badged TD
? Tool commands only, built-ins left out
= Components only
/, ./, ../ Navigate the network: / is the root, . or ./ is where you came from, each .. goes up a level
~ Public methods of the promoted extensions on the selected COMP, else the current one, else the network you came from
# One tool's commands: # lists the tools, #QuickMarks lists that tool's commands

Navigation and tool rows drill in with Right and back out with Left, keeping whichever convention you are typing in.

Methods complete before they run. Enter (or a click, or Right) on a method row fills the input with ~SetLevel and leaves the palette open, so you can type the arguments; Enter again calls it. Tab only ever completes, never runs, and the footer shows what it would give you.

Scope to one extension. ~ext. lists the extensions on the subject COMP, and ~ext.MyExt. or the shorter ~MyExt. lists that one's members. Addressed this way the list is everything not starting with an underscore, lowercase members included: reaching a member through .ext.MyExt does not require it to be promoted, so the lowercase wiring tier is callable here even though the COMP does not expose it. The name is the Extension Name parameter when one is set and the class name when it is not, which is what .ext. resolves by either way. A method runs through the COMP, so the palette can only call what the COMP itself exposes, and one whose required arguments are still missing is refused with the footer saying how many it needs.

Ctrl+D stars the selected command or component; starred rows lead within their tier. Ctrl+H hides the selected command from the palette; the Commands tab shows it again. Alt+Up and Alt+Down cycle the queries you have run before.

Only what can run. A tool that is bypassed or has cooking off does not offer its commands until it is back on. A tool that is not in the project but that you can install shows as Install with an INSTALL badge; Enter installs it, downloading it first when needed.

Rank by usage. Commands you run often rank higher, on by default. The lift fades over a couple of weeks of not using a command, and it only breaks ties between similar matches: a better match or a starred row still wins. Runs from the TDXLU launcher's quick launch count too. Turn it off with Rank By Usage on the tool's Palette page; your runs are still recorded, so turning it back on picks up where you left off.

Presets. Alt+S saves the selected command under a name of your own. Press it in the middle of a parameter walk and the values entered so far are baked in, the rest taking their defaults, so Set volume with level=0.5 becomes a one-keystroke row. Presets show a PRESET badge, rank just above the command they wrap, run on Enter without prompting, and can be starred. A preset over a hidden command still runs, since saving it was the opt-in. Ctrl+H on a preset deletes it.

Tools with several copies. When a tool is placed more than once, each copy's commands carry its label, as in Freeze scope · Main out and Freeze scope · Preview, and the label is searchable. A preset saved from one of those rows runs on that copy only; a preset over the command itself lists once per copy. Stars and hidden flags cover the command on every copy.

Commands tab

The palette contributes a Commands tab to Hub: every registered command, hidden ones included, with its tool and context. Click Star to star it and Hidden to hide or show it; your choice beats the tool's own default in both directions. A filter field narrows the list, Refresh rebuilds it, and Open palette does what the hotkey does. Clear usage forgets the palette's run history; the launcher's history still counts until you clear it there. TouchDesigner's built-in commands show built-in in their Context cell.

Hotkey and persistence

The hotkey lives on the tool's Hotkey parameter, so HotkeyManager lists it, checks it for conflicts and rebinds it. Which display the window opens on is set by the window placement parameters on the same page.

Favourites, presets and hidden commands are keyed by tool and command id, the same identity the launcher's tray app uses, so they survive a tool moving in the network. They and the query history persist through ConfigRegistry, so under global scope they follow you between projects and under project scope they stay in the .toe.

Parameters

Its Registry page comes from FNS_ConfigRegistry and FNS_HubRegistry.

Palette

ControlType / defaultWhat it does
HotkeyHotkey textctrl.shift.p Keyboard shortcut that opens the palette. Space-separated combos, parts joined with a dot, e.g. ctrl.shift.p. Rebind it from FNS_HotkeyManager.
Justify and Offset To...Justifyoffsetto menuSpecify Display Which display the palette window is placed on: the primary one, the one set on the window, or the bounds of all displays.
Options: Primary Display, Specify Display, Bounds of All Displays
Ignore TaskbarIgnoretaskbar on / offon Place the palette as if the taskbar were not there.
DPI ScalingDpiscaling menuUse DPI Scale Size the palette in native pixels, or scaled with the display DPI.
Options: Native, Use DPI Scale
Shift to Single DisplaySingle menuOff Keep the palette on one display: off, on a single display, or on the display with the cursor.
Options: Off, Keep on Single Display, Keep on Display with Cursor
Favourite keysFavouritekeys text[] Legacy store of starred command identities (tool#id) from before the shared curation file; adopted into that file on first read, then emptied.
Query historyQueryhistory text[] JSON list of executed palette queries, oldest first, recalled with Alt+Up / Alt+Down. Persisted by the config host.
Visibility overridesVisibilityoverrides text{} Legacy store of visibility overrides (tool#id -> hidden or shown) from before the shared curation file; adopted into that file on first read, then emptied.
PresetsPresets text[] Legacy store of presets from before the shared curation file; adopted into that file on first read, then emptied.
Rank By UsageRankbyusage on / offon Commands you run often rank higher: a small bonus that fades with a 14-day half-life and breaks ties between similar matches, never above a better match or a favourite. Usage is shared with the TDXLU launcher (command-usage.json) and recorded even when this is off.

Edit this page on GitHub →