← all works

a flux workflow for wallpapers, in any style

comfyuifluxworkflow
model
flux.1-dev
tool
comfyui
a title card: the words flux.1 wallpaper workflow in white on a teal gradient

every wallpaper generator i tried had a dropdown of styles in it, and the dropdown was always the problem: you get the twelve looks the author thought of and nothing else. this one has no presets at all. there are two text boxes — subject and style — and whatever you write in the second one is the style. "frutiger aero", "y2k vector", "view from orbit", "risograph print in three colours". the model already knows these words; a dropdown just hides them from you.

download the workflow — drag the json onto the comfyui canvas.

what you need on disk

file goes in
flux1-dev-fp8.safetensors models/diffusion_models/
t5xxl_fp8_e4m3fn.safetensors models/text_encoders/
clip_l.safetensors models/text_encoders/
ae.safetensors models/vae/
RealESRGAN_x2plus.pth models/upscale_models/

both the model and the text encoder are fp8 builds — that is the only reason this fits on a normal card. from the custom node side you need UltimateSDUpscale and whichever pack gives you ComfySwitchNode; everything else is core. if a node loads red, manager → install missing custom nodes will find it by type name.

three stages, and why they exist

diffusion at 4k does not work — you get two horizons and a second sun, because the model was trained around one megapixel and has never seen a composition that large. so nothing here diffuses above ~2 mp:

  1. base, ~1 mp. 1344×768 for a 16:9 screen. this is where the picture is actually decided.
  2. detail, ~2 mp. esrgan enlarges it in pixels, then the sampler goes over the result at denoise 0.35 — low enough to add texture without inventing new objects.
  3. tiles, up to ~4k. UltimateSDUpscale at denoise 0.15, one 1024 tile at a time.

the 2.07 megapixels in stage 2 are not a round number for nothing: stage 3 multiplies by exactly 2, so 1344×768 comes out at 3840×2160 rather than at something you then have to crop.

the one trick worth stealing: stage 3 gets its own prompt, with no subject in it and guidance dropped to 2.0. a tile is a square of sky with no idea it is a square of sky, so if you hand it the full prompt it will helpfully paint a whole mountain range inside it. that is where corner artefacts in 4k upscales come from.

flux has no negative prompt

this catches everyone once. flux-dev is guidance-distilled: cfg stays at 1.0 and the negative branch is not part of the maths at all. leaving text in it does nothing — which is worse than an error, because you sit there tuning a string that was never read. ConditioningZeroOut sits where the negative would be, and anything you don't want has to be said positively: not "no blur", but "sharp focus".

what replaces cfg is the FluxGuidance node, and it is the real style dial:

  • 2.0–2.5 — softer, more photographic, better light
  • 3.5 — the default
  • 5–7 — strict to the prompt, harder edges; usually better for graphic styles like frutiger or flat vector

the panel

four booleans in the yellow group: detail pass, final upscale, add an object, and source. a branch that is switched off genuinely doesn't run — comfy is lazy about inputs it doesn't need — so turning off the upscale costs you nothing in time or vram rather than computing it and throwing it away.

the fourth switch is the odd one. flip it and the whole graph turns into an inpainting tool: no wallpaper gets generated at all, and the thing it edits is a photo you upload. same nodes, different machine.

putting something into the picture

paint a mask, write what goes there, get it. InpaintModelConditioning plus DifferentialDiffusion is the pair that works on flux-dev — the first builds the masked latent, the second softens the edge so the seam doesn't show. denoise is 1.0 here and that is correct: under the mask it paints from scratch, outside it nothing is touched.

two things i got wrong before they worked. draw the mask bigger than the object — with a tight outline the model has nowhere to put the thing and squashes it. and describe not just the object but how it sits: "a wooden rowboat resting on the shore, gentle reflection in the water" lands in the scene, "a wooden rowboat" gets pasted on top of it.

what's in the file

the prompt boxes ship empty on purpose, the seeds are zeroed, and all four lora slots are bypassed, so plain flux runs the moment you open it. slot one points at frutiger metro if you want that look — download it, drop it in models/loras, enable the node with ctrl+b. keep the total strength of style loras near 1.2; past that they start arguing with each other.