shaders
Enables user-supplied GLSL post-process shaders, drop-in compatible with Shadertoy and Ghostty shader source.
[shaders]enabled = falsepost_process = "after_bloom" # only "after_bloom" is implemented todaypreserve_alpha = false # true = keep window transparency/blur showing through the shader# Paths MUST be absolute — they are opened verbatim, so launches from# Finder / Explorer (whose CWD is the system root) won't find relative entries.paths = [ # "/absolute/path/to/your/ghostty-shaders/starfield.glsl", # "/absolute/path/to/your/ghostty-shaders/cursor_blaze.glsl",]| Key | Description |
|---|---|
enabled |
Enable user-supplied custom GLSL post-process shaders (true/false) |
post_process |
Where the chain runs: "after_bloom" (only implemented mode); "before_bloom" / "replace_bloom" are accepted but warn + fall back to after_bloom |
preserve_alpha |
Keep the terminal’s alpha through the shader so window transparency/blur shows through it (true/false, default false). Default false forces opaque output (matching Ghostty). Best for passthrough/tint shaders (CRT, scanline); additive/emissive shaders may over-brighten in transparent regions. |
paths |
Array of GLSL file paths. Absolute paths only — entries are opened verbatim, so launches from Finder / Explorer break with relative paths. Multiple entries form a chain: each pass’s output feeds the next; the final pass writes to the swapchain. |
Supported uniforms
Section titled “Supported uniforms”Shadertoy + Ghostty 1.1+ uniforms:
iResolution, iTime, iTimeDelta, iFrame, iFrameRate, iSampleRate,
iDate, iWindowOffset, iWindowSize (drop-in for ext windows),
iCurrentCursor, iPreviousCursor, iCurrentCursorColor,
iPreviousCursorColor, iTimeCursorChange. iMouse is reserved but currently
unimplemented (always zero).
iChannel0 aliases the terminal contents (back buffer) so existing Ghostty /
Shadertoy shaders that sample texture(iChannel0, uv) work without modification.