Nodes/XENodes/Slider 2D
ComfyUI Node

Slider 2D

Two knobs on one pad — and it snaps

By xeinherjer-dev·Created 6 months ago·Updated a day ago· 2
Slider 2D
    • X
    • Y
    X512.00
    Y512.00

    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 stepX and stepY and 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:

    • X and Y (FLOAT widgets, defaults 512 each, ±4.29 billion range) - socketless, same as the 1D Slider; the pad is the widget.

    The outputs:

    • X and Y (each INT,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.

    Categoryxenodes/utils

    Inputs (2)

    NameTypeDefaultDescription
    XFLOAT512.00-4294967296–4294967296
    YFLOAT512.00-4294967296–4294967296

    Outputs (2)

    NameTypeDescription
    XINT,FLOAT
    YINT,FLOAT