Icy GLIGENTextBoxApply
GLIGEN boxes — placing 'the cat' at pixel (200, 100) instead of hoping
- conditioning_to
- clip
- gligen_textbox_model
- CONDITIONING
IcyGLIGENTextBoxApply is the IcyHider clone of GLIGENTextBoxApply, and it's the answer to a specific, frustrating question: "how do I tell the model where to put a thing my prompt mentions?" ControlNet gives you that via images and preprocessors; GLIGEN gives it to you with plain text and a box.
What GLIGEN is
GLIGEN (Grounded Language-to-Image Generation) is a grounding model family that was a real deal back in the SD 1.5 era: a separate model you load with a GLIGEN loader, then feed text-plus-rectangle pairs so the sampler puts the described object inside that rectangle. It's the "grounding by layout" tool of that era - the ancestor of the text-grounded masking patterns people use today with VLMs and bounding boxes.
The node's inputs:
conditioning_to- the conditioning you're adding the grounded box to.clip- the text encoder, for tokenizingtext.gligen_textbox_model- the loaded GLIGEN model itself (from a GLIGENLoader, a file you must have on disk).text- the thing you're placing. "a cat," "a lamp," whatever the box should contain.width/height/x/y- the rectangle in image pixels,x/yfrom the top-left. This is the whole point: the prompt now means "this object lives here," not "somewhere, hopefully."
Output: a CONDITIONING that feeds the sampler. Stack multiple GLIGENTextBoxApply nodes - one per object - and you can lay out a whole scene by boxes.
The honest picture in 2026
Two things you need before getting excited. First, GLIGEN models exist for SD 1.5 and SDXL, and not for the model families that dominate 2026 - there's no Flux GLIGEN. Second, even in its heyday GLIGEN was fiddly: box placement is approximate, the model can ignore or overflow the box, and results vary by checkpoint. If you're on a modern base and want grounded layout, the community's current move is a VLM for bounding boxes + an inpainting pass, not GLIGEN. Reach for this node when you're working an SD 1.5/SDXL workflow that already has a GLIGEN model file - it's genuinely good at "exactly these three objects in these three regions."
Install and the "Icy" part
Pack install is the same for all of these: ComfyUI Manager → "IcyHider" → install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/icekiub-ai/ComfyUI-IcyHider.git
Restart. No Python deps; the GLIGEN model is your own file. The node lives in IcyHider Comfy Core, and like every conditioning-output node in this pack, the wrapper changes nothing functional - GLIGENTextBoxApply is the exact code underneath. If boxes aren't landing where you drew them, that's GLIGEN being GLIGEN, not the wrapper.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| conditioning_to | CONDITIONING | — | |
| clip | CLIP | — | |
| gligen_textbox_model | GLIGEN | — | |
| text | STRING | — | |
| width | INT | 648–16384 | — |
| height | INT | 648–16384 | — |
| x | INT | 00–16384 | — |
| y | INT | 00–16384 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| CONDITIONING | CONDITIONING | — |