Slider 2D
Two knobs on one pad — and it snaps
- X
- Y
Some values come in pairs, and it's a pain to tune them one field at a time. That's the entire pitch of Slider 2D: a square pad you drag a handle around on, and two outputs - X and Y - that track the handle's position. If you've ever swept a seed-adjacent pair, a camera pan, a warp offset, or the two axes of a strength dial, you know why a 2D control beats two sliders side by side. It's the sibling of the plain Slider in the ComfyUI-XENodes pack, and it's the node you reach for when two numbers genuinely move together.
The mechanism is the interesting part. Like the 1D Slider, each axis's output is a dual INT,FLOAT port and the backend casts whole numbers to int, fractions to float. The pad reads min/max/step per axis from right-click properties - minX/maxX, minY/maxY, stepX/stepY. Then two frontend behaviors do the actual work:
- Precision auto-detection - the node counts the decimals in
stepXandstepYand rounds the display accordingly. Step of 1 gives whole numbers; step of 0.01 gives two decimals. You don't set display precision, it derives it. - Snap - a boolean property (on by default). With snapping, the handle locks to your step increments, so dragging it never leaves you with an off-grid 73.37 when you wanted 73.4. That's the difference between "close enough" and "every value lands where you aimed."
The inputs:
XandY(FLOAT widgets, defaults 512 each, ±4.29 billion range) - socketless, same as the 1D Slider; the pad is the widget.
The outputs:
XandY(eachINT,FLOAT) - wire them to any numeric inputs you want to control in tandem.
Good uses: driving width/height from one pad, feeding a position offset to an image composite, or controlling two strength values (denoise + a LoRA weight) and keeping them visibly coupled. There are cosmetic toggles too - dots, frame, and a debug log option live in properties if you want the pad dressed down.
Install is the pack standard:
cd ComfyUI/custom_nodes
git clone https://github.com/xeinherjer-dev/ComfyUI-XENodes.git xenodes
or search "ComfyUI-XENodes" in ComfyUI Manager, then restart. No models, no pip step.
The honest caveats are the same family as the 1D Slider: min/max/step live in the properties menu, not on the face of the node, so right-click before assuming the pad range is fixed. And because the output type adopts whatever you connect first, re-wiring an axis to the other numeric type means re-connecting the wire to re-type the port. One more that's specific to this node: on the legacy (non-Nodes 2.0) canvas the pad needs a minimum height to render its controls - if the pad looks cramped, give the node a bit more vertical room. It's built for the Nodes 2.0 frontend first, and it shows.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| X | FLOAT | 512.00-4294967296–4294967296 | — |
| Y | FLOAT | 512.00-4294967296–4294967296 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| X | INT,FLOAT | — |
| Y | INT,FLOAT | — |