← Schema index / Config Reference
tui schema (1801-1950)
Canonical generated docsThis section is generated from
caco config schema --json. The table below preserves the runtime field path, type, required/default markers, and canonical description for every value in this slice.TUI configuration — terminal dashboard settings.
| Field path | Type | Required | Default | Canonical description |
|---|---|---|---|---|
└ tui.ghostty.shader.surfaces.popup.inactive | map | optional | Look while the pane is not focused. | |
└ tui.ghostty.shader.surfaces.popup.inactive.material | string | optional | Interior material while unfocused. | |
└ tui.ghostty.shader.surfaces.popup.inactive.border | string | optional | Border light while unfocused. | |
└ tui.ghostty.shader.surfaces.popup.inactive.strength | integer | optional | Strength percentage while unfocused, 0-300. | |
└ tui.ghostty.shader.events | map | optional | Event pulse styles by event kind: info, success, attention, error, operator. | |
└ tui.ghostty.shader.events.info | map | optional | Routine messages and unclassified feed events. | |
└ tui.ghostty.shader.events.info.effect | string | optional | Pulse effect: none, ripple, flare, sweep, firework. | |
└ tui.ghostty.shader.events.info.color | string | optional | Hex colour, accent or secondary. | |
└ tui.ghostty.shader.events.info.strength | integer | optional | Strength percentage, 0-300. | |
└ tui.ghostty.shader.events.info.duration_ms | integer | optional | Pulse duration in milliseconds, 200-4000. | |
└ tui.ghostty.shader.events.success | map | optional | Completions, merges and releases. | |
└ tui.ghostty.shader.events.success.effect | string | optional | Pulse effect: none, ripple, flare, sweep, firework. | |
└ tui.ghostty.shader.events.success.color | string | optional | Hex colour, accent or secondary. | |
└ tui.ghostty.shader.events.success.strength | integer | optional | Strength percentage, 0-300. | |
└ tui.ghostty.shader.events.success.duration_ms | integer | optional | Pulse duration in milliseconds, 200-4000. | |
└ tui.ghostty.shader.events.attention | map | optional | Questions, approvals, choices and blocked work. | |
└ tui.ghostty.shader.events.attention.effect | string | optional | Pulse effect: none, ripple, flare, sweep, firework. | |
└ tui.ghostty.shader.events.attention.color | string | optional | Hex colour, accent or secondary. | |
└ tui.ghostty.shader.events.attention.strength | integer | optional | Strength percentage, 0-300. | |
└ tui.ghostty.shader.events.attention.duration_ms | integer | optional | Pulse duration in milliseconds, 200-4000. | |
└ tui.ghostty.shader.events.error | map | optional | Failures and errors. | |
└ tui.ghostty.shader.events.error.effect | string | optional | Pulse effect: none, ripple, flare, sweep, firework. | |
└ tui.ghostty.shader.events.error.color | string | optional | Hex colour, accent or secondary. | |
└ tui.ghostty.shader.events.error.strength | integer | optional | Strength percentage, 0-300. | |
└ tui.ghostty.shader.events.error.duration_ms | integer | optional | Pulse duration in milliseconds, 200-4000. | |
└ tui.ghostty.shader.events.operator | map | optional | Your own sent messages. | |
└ tui.ghostty.shader.events.operator.effect | string | optional | Pulse effect: none, ripple, flare, sweep, firework. | |
└ tui.ghostty.shader.events.operator.color | string | optional | Hex colour, accent or secondary. | |
└ tui.ghostty.shader.events.operator.strength | integer | optional | Strength percentage, 0-300. | |
└ tui.ghostty.shader.events.operator.duration_ms | integer | optional | Pulse duration in milliseconds, 200-4000. | |
└ tui.ghostty.shader.states | map | optional | Live agent-state auras on agent panes and the sidebar: working, attention, error, done, waiting. | |
└ tui.ghostty.shader.states.working | map | optional | Running with recent tool activity. | |
└ tui.ghostty.shader.states.working.effect | string | optional | Aura effect: none, shimmer, heartbeat, glitch, glow. | |
└ tui.ghostty.shader.states.working.color | string | optional | Hex colour, accent or secondary. | |
└ tui.ghostty.shader.states.working.strength | integer | optional | Strength percentage, 0-300. | |
└ tui.ghostty.shader.states.attention | map | optional | Waiting, blocked, paused or stalled. | |
└ tui.ghostty.shader.states.attention.effect | string | optional | Aura effect: none, shimmer, heartbeat, glitch, glow. | |
└ tui.ghostty.shader.states.attention.color | string | optional | Hex colour, accent or secondary. | |
└ tui.ghostty.shader.states.attention.strength | integer | optional | Strength percentage, 0-300. | |
└ tui.ghostty.shader.states.error | map | optional | Failed. | |
└ tui.ghostty.shader.states.error.effect | string | optional | Aura effect: none, shimmer, heartbeat, glitch, glow. | |
└ tui.ghostty.shader.states.error.color | string | optional | Hex colour, accent or secondary. | |
└ tui.ghostty.shader.states.error.strength | integer | optional | Strength percentage, 0-300. | |
└ tui.ghostty.shader.states.done | map | optional | Completed. | |
└ tui.ghostty.shader.states.done.effect | string | optional | Aura effect: none, shimmer, heartbeat, glitch, glow. | |
└ tui.ghostty.shader.states.done.color | string | optional | Hex colour, accent or secondary. | |
└ tui.ghostty.shader.states.done.strength | integer | optional | Strength percentage, 0-300. | |
└ tui.ghostty.shader.states.waiting | map | optional | Attention that has persisted for 20 s. | |
└ tui.ghostty.shader.states.waiting.effect | string | optional | Aura effect: none, shimmer, heartbeat, glitch, glow. | |
└ tui.ghostty.shader.states.waiting.color | string | optional | Hex colour, accent or secondary. | |
└ tui.ghostty.shader.states.waiting.strength | integer | optional | Strength percentage, 0-300. | |
└ tui.ghostty.shader.unfocused | string | optional | Treatment of panes other than the focused one: dim, frost, deep, fade, phosphor, cool, sketch, hologram, recede, fog, wet, sepia, derez, blur. Defaults to the preset's. | |
└ tui.ghostty.shader.input | map | optional | Pointer, click and keystroke effects; omitted parts come from the preset. | |
└ tui.ghostty.shader.input.pointer | string | optional | Light following the pointer: none, glow, lantern, reticle, lens, magnify, spotlight, magnet, prism, haze. | |
└ tui.ghostty.shader.input.click | string | optional | Click effect: none, shockwave, burst, ping, derez, ink, bloom, shatter, swirl. Scrolling sends speed lines whenever one is set. | |
└ tui.ghostty.shader.input.keys | string | optional | Keystroke effect at the text cursor or focused input: none, sparks, glitch, ripple, flash, heat. | |
└ tui.ghostty.shader.input.color | string | optional | Hex colour, accent or secondary. | |
└ tui.ghostty.shader.input.lens | map | optional | A magnifying lens over the pointer, on any look. Ctrl+Alt+Z shows or hides it. | |
└ tui.ghostty.shader.input.lens.mode | string | optional | pointer | When it shows: pointer (while the pointer moves), toggle (from Ctrl+Alt+Z), always, or off. |
└ tui.ghostty.shader.input.lens.zoom | int | optional | 180 | Magnification percentage, 120-400. |
└ tui.ghostty.shader.input.lens.radius | int | optional | 4 | Radius in text rows, 1-12. |
└ tui.ghostty.shader.input.hover | string | optional | both | What answers the pointer: controls (buttons light, tabs and links underline), panes (the border nearest the pointer lights), both, or none. |
└ tui.ghostty.shader.text | map | optional | Arriving text and the freshest arrival; omitted parts come from the preset. | |
└ tui.ghostty.shader.text.reveal | string | optional | sweep | How a new chat message draws in: sweep (row by row behind a caret of light), dissolve, glow, or none. |
└ tui.ghostty.shader.text.fresh | string | optional | halo | How the freshest arrival is marked: halo (a glow round its box that settles), sheen (and a band of light across it), or none. |
└ tui.ghostty.shader.text.strength | int | optional | 100 | Strength percentage, 0-300. |
└ tui.ghostty.shader.captions | bool | optional | true | Briefly name the event behind each pulse in the footer. |
└ tui.ghostty.shader.source_highlight | bool | optional | true | Flash the row or input that caused a pulse before it spreads. |
└ tui.ghostty.shaders | map[string, map] | optional | Named shader looks selectable with tui.shader_name, caco tui --shader and Ctrl+Alt+S. Each entry is a full shader block; a name shadows the built-in look of the same name. | |
└ tui.ghostty.shaders.enable | bool | optional | false | Enable the live shader. |
└ tui.ghostty.shaders.path | string | optional | Explicit .glsl shader; receives the same palette payload. Defaults to the bundled Lumen shader. | |
└ tui.ghostty.shaders.animation | bool | optional | true | Ghostty custom-shader-animation: animate the focused surface every display frame. |
└ tui.ghostty.shaders.reduced_motion | bool | optional | false | Bundled shader only: freeze materials, use steady borders and state light, and disable pulses, grain, cursor trails and focus glides. Explicit path shaders are unchanged. |
└ tui.ghostty.shaders.intensity | integer | optional | 100 | Overall effect strength percentage, 0-200. |
└ tui.ghostty.shaders.accent | string | optional | Primary light colour (hex). Defaults to the theme accent. | |
└ tui.ghostty.shaders.secondary | string | optional | Secondary light colour (hex). Defaults to the theme purple. | |
└ tui.ghostty.shaders.reactive | bool | optional | true | Drive energy and event pulses from live fleet activity. |
└ tui.ghostty.shaders.effects | map | optional | Individual effect layers; omitted layers are enabled. | |
└ tui.ghostty.shaders.effects.bloom | bool | optional | true | Neon bloom around saturated, luminous UI chrome. |
└ tui.ghostty.shaders.effects.aurora | bool | optional | true | Aurora light inside the focused pane, scaled by fleet energy. |
└ tui.ghostty.shaders.effects.spotlight | bool | optional | true | Gently dim panes other than the focused one. |
└ tui.ghostty.shaders.effects.ripple | bool | optional | true | Refracting light waves for fleet events. |
└ tui.ghostty.shaders.effects.halo | bool | optional | true | Halo and travelling light around the focused pane border. |
└ tui.ghostty.shaders.effects.vignette | bool | optional | true | Soft edge vignette. |
└ tui.ghostty.shaders.effects.cursor_trail | bool | optional | true | Light trail behind the visible text cursor. |
└ tui.ghostty.shaders.effects.input | bool | optional | true | Pointer, click and keystroke effects for every look. |
└ tui.ghostty.shaders.effects.text | bool | optional | true | Arriving text drawing in and the freshest arrival glowing, for every look. |
└ tui.ghostty.shaders.preset | string | optional | lumen | Look preset for omitted settings: lumen, subtle, calm, minimal, glass, neon, crt, synthwave, vapor, prism, cosmos, abyss, winter, forge, storm, mainframe, matrix, amber, noir, blueprint, gridrunner, lava, fireflies, rainfall, sonar, netrunner, zen, cathedral, singularity, festival, biolab, inkwell, hologram, deepsea, arcade, observatory, quicksilver, opaline, reef, sumi, synapse, atelier, loom, kaleidoscope, press, foundry, bitmap, banknote, marquee, comic. |
└ tui.ghostty.shaders.grade | string | optional | Whole-frame colour grade: none, noir, amber, green, duotone, vapor, teal_orange, sepia, infrared. Defaults to the preset's. | |
└ tui.ghostty.shaders.render | string | optional | How the shader's own light is drawn, leaving text crisp: none, halftone, engrave, led, toon, dither, riso. Defaults to the preset's. | |
└ tui.ghostty.shaders.quality | string | optional | balanced | Render quality: low (8 bloom taps), balanced (16), high (24). |
└ tui.ghostty.shaders.resolution | string | optional | auto | Light-layer resolution: full, half (once per 2x2 pixels), auto (half on HiDPI). |
└ tui.ghostty.shaders.speed | integer | optional | 100 | Ambient animation speed percentage, 25-400. |
└ tui.ghostty.shaders.tuning | map | optional | Per-layer strengths; omitted values come from the preset. | |
└ tui.ghostty.shaders.tuning.bloom | integer | optional | Bloom strength percentage, 0-300. | |
└ tui.ghostty.shaders.tuning.bloom_radius | integer | optional | Bloom radius percentage, 25-300. | |
└ tui.ghostty.shaders.tuning.halo | integer | optional | Focus halo and border light strength percentage, 0-300. | |
└ tui.ghostty.shaders.tuning.comets | integer | optional | Travelling lights on comet borders, 0-4. | |
└ tui.ghostty.shaders.tuning.comet_speed | integer | optional | Border light speed percentage, 10-400. | |
└ tui.ghostty.shaders.tuning.materials | integer | optional | Pane material strength percentage, 0-300. | |
└ tui.ghostty.shaders.tuning.unfocused_materials | integer | optional | 100 | Scale for every inactive pane material, percent 0-200. |
└ tui.ghostty.shaders.tuning.unfocused_borders | integer | optional | 100 | Scale for every inactive pane border, percent 0-200. |
└ tui.ghostty.shaders.tuning.events | integer | optional | Event pulse strength percentage, 0-300. | |
└ tui.ghostty.shaders.tuning.ripple_reach | integer | optional | Ripple reach as a percentage of the screen diagonal, 10-150. | |
└ tui.ghostty.shaders.tuning.spotlight | integer | optional | Dimming of unfocused panes, percent 0-60. | |
└ tui.ghostty.shaders.tuning.vignette | integer | optional | Vignette strength percentage, 0-100. | |
└ tui.ghostty.shaders.tuning.grain | integer | optional | Film grain strength percentage, 0-100. | |
└ tui.ghostty.shaders.tuning.chromatic | integer | optional | Chromatic edge split strength percentage, 0-100. | |
└ tui.ghostty.shaders.tuning.backdrop_blur | integer | optional | Blur behind an open modal, percent 0-100. | |
└ tui.ghostty.shaders.tuning.backdrop_dim | integer | optional | Dimming behind an open modal, percent 0-100. | |
└ tui.ghostty.shaders.tuning.depth | integer | optional | How far the backdrop recedes behind an open modal, percent 0-200. | |
└ tui.ghostty.shaders.tuning.shadow | integer | optional | Shadow cast by modals and popups, percent 0-200. | |
└ tui.ghostty.shaders.tuning.bloom_threshold | integer | optional | 0 | How bright chrome must be to bloom, percent 0-100. |
└ tui.ghostty.shaders.tuning.bloom_tint | integer | optional | 25 | Bloom tint toward the accent, percent 0-100. |
└ tui.ghostty.shaders.tuning.sharpen | integer | optional | 0 | Text sharpening, percent 0-100. |
└ tui.ghostty.shaders.tuning.border_width | integer | optional | 100 | Border line thickness, percent 25-300. |
└ tui.ghostty.shaders.tuning.border_glow | integer | optional | 100 | Border glow spread, percent 25-200. |
└ tui.ghostty.shaders.tuning.border_speed | integer | optional | 100 | Breathe, pulse, gradient and wave border speed, percent 10-400. |
└ tui.ghostty.shaders.tuning.curvature | integer | optional | CRT screen curvature, percent 0-100. | |
└ tui.ghostty.shaders.tuning.grade | integer | optional | Colour grade strength, percent 0-100. | |
└ tui.ghostty.shaders.tuning.render | integer | optional | Render style strength, percent 0-100. | |
└ tui.ghostty.shaders.tuning.fill | integer | optional | How far materials show between letters in text-dense panes, percent 0-100; 0 lights only empty space. | |
└ tui.ghostty.shaders.tuning.unfocused | integer | optional | Strength of the unfocused-pane treatment, percent 0-100. | |
└ tui.ghostty.shaders.tuning.input | integer | optional | Strength of pointer, click and keystroke effects, percent 0-200. | |
└ tui.ghostty.shaders.surfaces | map | optional | Styles by pane kind: sidebar, chat, terminal, agent, feed, board, dashboard, other, modal, toast, popup. | |
└ tui.ghostty.shaders.surfaces.sidebar | map | optional | The navigation sidebar. | |
└ tui.ghostty.shaders.surfaces.sidebar.material | string | optional | Interior material: none, aurora, glass, crt, nebula, holo, backlight, sheen, plasma, starfield, matrix, synthwave, ocean, embers, snow, circuit, topo, bokeh, grid, lava, fireflies, sonar, hex, sand, stained, cells, rain, vortex, fireworks, chrome, opal, caustics, ink, neural, watercolor, silk, kaleido. | |
└ tui.ghostty.shaders.surfaces.sidebar.border | string | optional | Border light: none, halo, comet, breathe, neon, wave, glow, pulse, gradient, corners, rainbow, electric, marching, double, lightcycle, glyphs, constellation, frost, coals, sketch, membrane, beam, lead, brush, filament, ribbon, pearls, fiber. | |
└ tui.ghostty.shaders.surfaces.sidebar.tint | string | optional | Hex tint, accent or secondary. | |
└ tui.ghostty.shaders.surfaces.sidebar.strength | integer | optional | Strength percentage, 0-300. | |
└ tui.ghostty.shaders.surfaces.sidebar.inactive | map | optional | Look while the pane is not focused. | |
└ tui.ghostty.shaders.surfaces.sidebar.inactive.material | string | optional | Interior material while unfocused. | |
└ tui.ghostty.shaders.surfaces.sidebar.inactive.border | string | optional | Border light while unfocused. | |
└ tui.ghostty.shaders.surfaces.sidebar.inactive.strength | integer | optional | Strength percentage while unfocused, 0-300. | |
└ tui.ghostty.shaders.surfaces.chat | map | optional | Chat and inbox panes. | |
└ tui.ghostty.shaders.surfaces.chat.material | string | optional | Interior material: none, aurora, glass, crt, nebula, holo, backlight, sheen, plasma, starfield, matrix, synthwave, ocean, embers, snow, circuit, topo, bokeh, grid, lava, fireflies, sonar, hex, sand, stained, cells, rain, vortex, fireworks, chrome, opal, caustics, ink, neural, watercolor, silk, kaleido. | |
└ tui.ghostty.shaders.surfaces.chat.border | string | optional | Border light: none, halo, comet, breathe, neon, wave, glow, pulse, gradient, corners, rainbow, electric, marching, double, lightcycle, glyphs, constellation, frost, coals, sketch, membrane, beam, lead, brush, filament, ribbon, pearls, fiber. | |
└ tui.ghostty.shaders.surfaces.chat.tint | string | optional | Hex tint, accent or secondary. | |
└ tui.ghostty.shaders.surfaces.chat.strength | integer | optional | Strength percentage, 0-300. | |
└ tui.ghostty.shaders.surfaces.chat.inactive | map | optional | Look while the pane is not focused. | |
└ tui.ghostty.shaders.surfaces.chat.inactive.material | string | optional | Interior material while unfocused. | |
└ tui.ghostty.shaders.surfaces.chat.inactive.border | string | optional | Border light while unfocused. | |
└ tui.ghostty.shaders.surfaces.chat.inactive.strength | integer | optional | Strength percentage while unfocused, 0-300. | |
└ tui.ghostty.shaders.surfaces.terminal | map | optional | Shells and consoles. | |
└ tui.ghostty.shaders.surfaces.terminal.material | string | optional | Interior material: none, aurora, glass, crt, nebula, holo, backlight, sheen, plasma, starfield, matrix, synthwave, ocean, embers, snow, circuit, topo, bokeh, grid, lava, fireflies, sonar, hex, sand, stained, cells, rain, vortex, fireworks, chrome, opal, caustics, ink, neural, watercolor, silk, kaleido. | |
└ tui.ghostty.shaders.surfaces.terminal.border | string | optional | Border light: none, halo, comet, breathe, neon, wave, glow, pulse, gradient, corners, rainbow, electric, marching, double, lightcycle, glyphs, constellation, frost, coals, sketch, membrane, beam, lead, brush, filament, ribbon, pearls, fiber. | |
└ tui.ghostty.shaders.surfaces.terminal.tint | string | optional | Hex tint, accent or secondary. | |
└ tui.ghostty.shaders.surfaces.terminal.strength | integer | optional | Strength percentage, 0-300. | |
└ tui.ghostty.shaders.surfaces.terminal.inactive | map | optional | Look while the pane is not focused. | |
└ tui.ghostty.shaders.surfaces.terminal.inactive.material | string | optional | Interior material while unfocused. |