Screensaver Generator
Generate After Dark-style screensaver footage, frame by frame, inside ComfyUI
- images
ScreensaverGenerator makes classic screensaver animations as image batches: flying pipes, starfields, Matrix rain, bouncing shapes, plasma. You give it dimensions, an fps, a frame count, and a preset, and it renders that many frames of pure retro computer-generated footage. If you've ever wanted a synthwave background loop or a fake "this computer is idle in 1997" clip without hunting down stock footage, this is the node - and it's one of the most purely fun things in the DJZ pack.
It outputs an IMAGE batch, which is the currency video nodes speak: wire it into a Video Combine / save-animated-WEBP node (or the pack's video-save nodes) and you have a video. No diffusion, no GPU - it's procedural rendering, CPU-only, and fully deterministic in its look if you like what you get.
How it works
Each preset is a little stateful renderer that draws frames with numpy and OpenCV:
- pipes - the classic 3D pipes screensaver, recreated as 2D line segments that grow and turn.
- starfield - stars with random depths that fly toward you; the classic warp effect.
- matrix - falling green character columns.
- bounce - shapes bouncing around the screen (you set shape count/size via... well, V1 keeps it simple; the per-preset knobs arrive in V2).
- plasma - flowing colored noise fields, the lava-lamp of screensavers.
Each preset tracks its own state across frames (positions, velocities, pipe lengths), so the animation is coherent instead of each frame being random. speed (0.1–5) scales how fast everything moves, and color_scheme - classic, rainbow, neon, monochrome - recolors the whole thing. fps and max_frames define the output: 30 fps × 60 frames = 2 seconds of footage.
The inputs that matter
- preset - pipes / starfield / matrix / bounce / plasma. This is the whole character of the output.
- width / height - canvas size. 64–4096 in steps of 64. 512×512 is the sensible playground.
- fps / max_frames - 30 fps and 60 frames gives a 2-second loop, a good first render.
- color_scheme - classic (blue/cyan/green), rainbow, neon, monochrome.
- speed - 1 is normal; crank to 3–5 for frantic.
Output: images - an IMAGE batch of max_frames frames, ready for video encoding.
Installing it
Part of DJZ-Nodes. ComfyUI Manager → Install Custom Nodes → search DJZ-Nodes → install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/MushroomFleet/DJZ-Nodes
cd DJZ-Nodes
pip install -r requirements.txt
It uses OpenCV (opencv-python) and PIL, both covered by the pack's requirements. The rest of the pack's install is heavier than this node needs, but nothing here will bite you.
Common issues
The main practical note: this generates a batch of frames, not a video file - you need an encoder node downstream (VHS Video Combine or similar) to get an actual .mp4/.webm. Second, higher resolutions slow things down fast because every frame is drawn procedurally on CPU; 512×512 at 30fps is comfortable, 4096 at 60fps is a long render. And the presets are intentionally simple - if the plain pipes looks flat, that's the aesthetic; V2 adds "3d pipes," "flying toasters," and "windows maze," plus a pile of per-preset tuning knobs, so the upgrade path is real. For quick background loops this V1 is all you need.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| width | INT | 51264–4096 | — |
| height | INT | 51264–4096 | — |
| fps | INT | 301–60 | — |
| max_frames | INT | 601–9999 | — |
| preset | COMBO | 5 options: pipes, starfield, matrix, bounce, plasma | |
| color_scheme | COMBO | 4 options: classic, rainbow, neon, monochrome | |
| speed | FLOAT | 1.00.1–5 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |