πΌοΈ Float Preview
A floating always-on-top preview window
- Image
Every ComfyUI session ends with the same dance: hover a node, squint at the tiny preview thumbnail wedged into the browser tab, and try to judge detail you can't actually see. FloatPreview ends that. Drop it at the end of a workflow and your image pops into a real, resizable, always-on-top window that lives outside the browser - the kind of thing that becomes indispensable the moment you have a second monitor or a long batch to scroll through.
It's one half of the small ComfyUI Mohseni Kit pack (the other is MohseniScheduler), and it's a genuinely nice quality-of-life node even though the pack is new enough that nobody's really talking about it yet. There's no AI magic here - it's a preview window, and it does the job well.
How it works
FloatPreview is an output node - it takes an image, shows you a window, and returns nothing. Under the hood it's cleverer than it looks. On each run it saves the incoming tensor to a temp PNG, writes the path list to a JSON file in a temp directory, then spawns a separate Python subprocess running a PyQt6 window that reads that file. If a window process is already running, it just updates it instead of stacking up a second one - you only ever get one float window. Your window size, position, and always-on-top state persist in float_preview_settings.json inside the pack folder across sessions, so you set it up once and it stays put.
Because it's a separate process, the window keeps living even when ComfyUI is busy churning through a batch - no more freezing previews.
The inputs
Just two, and only one you'll touch:
Image(required) - anyIMAGEoutput. Drop it after aVAE Decode, or anywhere an image flows.Always_Show_Preview(optional, defaultfalse) - force the window up on every run. Off by default because on a long batch you don't want a window flashing at you per image.
That's it. No outputs, no other knobs.
The controls that matter
- β / β and β / β - previous / next image in the batch
- Ctrl + T - toggle always on top
- Ctrl + C - copy the current image to your clipboard (paste it straight into a chat, no file juggling)
- Ctrl + S - save as PNG or JPEG
- Esc - close; right-click for the context menu
Where it shines
Pairing it with the kit's scheduler node is the obvious combo: run your composition pass, then the detail pass, and flip between the two outputs side by side in separate windows to judge whether rho actually bought you anything. Beyond that, batch review on a second monitor is the killer use case, and copying straight out of the window beats saving and re-opening every time.
Install
FloatPreview ships with the whole pack, so install is the same either way:
cd ComfyUI/custom_nodes
git clone https://github.com/mohseni-mr/ComfyUI-Mohseni-Kit
...or search ComfyUI Mohseni Kit in ComfyUI Manager, then restart. The catch: this node needs PyQt6, a full Qt GUI toolkit - a real install, not a micro-dependency. requirements.txt lists PyQt6 and ftfy; if the pack fails to load in a bare environment, that's the first thing to check, and pip install PyQt6 fixes it. The README also mentions psutil (used to detect the running window) but it's missing from requirements.txt - worth a pip install psutil if you get an import error.
One thing to expect: the first run fires up a new subprocess, so there's a moment before the window appears, and the ComfyUI console will log "Starting new float window process" when it does. If you see no window at all, that console line is where you'll spot the actual error - it's a separate process, so a crash there won't take down your workflow.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| Image | IMAGE | β | |
| Always_Show_Previewopt | BOOLEAN | false | β |
Outputs (0)
No outputs