๐ Controls 4 (Drawer)
Four knobs in one node, wired straight into your sampler
- value_1
- value_2
- value_3
- value_4
Every ComfyUI workflow has the same handful of numbers you actually touch: steps, CFG, a seed, maybe a strength. Everything else is wiring. DrawerControls4 is the node that turns those four numbers into a clean control panel - and when you use it with the ComfyUI-Drawer pack it belongs to, those four become sliders and toggles in a bottom drawer you can drive with your thumb.
DrawerControls4 is one of four siblings in the pack - Controls1, Controls4, Controls8, Controls12 - with 1, 4, 8, and 12 slots respectively. Four is the sweet spot: one node holds the classic sampler cluster.
The two-input-per-slot trick
Each slot has two text widgets:
- value_N - the actual value, as text. "28" or "7.5" or "true".
- def_N - a small definition string. The first token is the type; the rest is presentation. Real examples from the README:
int | Steps | 1 | 80 | 1 | 0
float | CFG Scale | 1 | 20 | 0.5 | 1
combo | Scheduler
bool | Enable Debug
string | Prefix
string | Prompt | multiline
So def_1 of int | Steps | 1 | 80 | 1 | 0 says: this is an integer called Steps, range 1โ80, step 1, default 0. The node's backend only really needs the first token - int, float, bool, combo, string - to convert the text in value_N into the right Python type. The rest is what the Deck UI renders as the label, min/max, and step.
Outputs are value_1 through value_4, all typed * (any type). That wildcard matters: ComfyUI won't type-check, so a slot can feed an INT widget or a FLOAT widget. The catch is that means a type mismatch surfaces downstream, not at the node.
How you actually use it
Right-click the widget you want to drive - say steps on a KSampler - choose Convert to input, and wire value_1 into it. Repeat for CFG, seed, whatever. Now, because DrawerControls4 is a Drawer node, put a ๐ in its title and all four slots appear in the Deck. Only slots whose output is actually connected show up, so unused ones stay out of your way. For combo slots, the options are read live from the widget the output is plugged into - you don't maintain a list, it just mirrors the sampler's scheduler dropdown.
Installing it
cd ComfyUI/custom_nodes
git clone https://github.com/Kuroi961/ComfyUI-Drawer.git
pip install -r ComfyUI-Drawer/requirements.txt
Or search ComfyUI-Drawer in ComfyUI Manager. requirements.txt is a single package (Send2Trash), no model downloads.
Gotchas
- Empty
def_Ndefaults to treating the value as a string - you'll notice when a "28" arrives at an INT input as text. - Type tokens have aliases:
integerandnumber:intmean int,number/num/number:floatmean float,boolean/togglemean bool. If your Deck slider is missing its range, the min/max comes from the target widget, not fromdef_N. - It's a value hub, not a processor - nothing here samples or generates. It exists so a graph too big to read stays something you can still drive.
For a shared workflow or a mobile setup, this is the control panel I'd hand someone. The graph underneath stays untouched; the four numbers that matter live in one node.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| value_1 | STRING | โ | |
| def_1 | STRING | โ | |
| value_2 | STRING | โ | |
| def_2 | STRING | โ | |
| value_3 | STRING | โ | |
| def_3 | STRING | โ | |
| value_4 | STRING | โ | |
| def_4 | STRING | โ |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| value_1 | * | โ |
| value_2 | * | โ |
| value_3 | * | โ |
| value_4 | * | โ |