Terminal ports of Comfy, a theme designed for endurance rather than looks. Two variants, Comfy (light, the default) and Comfy Night.
Supports Warp, Ghostty, iTerm2, Alacritty, kitty, WezTerm, and Windows Terminal.
The six chromatic ANSI slots are held inside a narrow contrast band — 5.69–6.50:1 in light, 7.47–7.71:1 in dark. A noisy build log stays one even texture instead of a fruit salad, because hue distinguishes meaning while brightness stays flat.
Two deliberate exceptions:
Black and white sit outside the band. They are structural slots, not chromatic ones — programs use them as near-background. Light-mode white is a pale grey at 3.21:1 on purpose; forcing it into the band would break every tool that expects it to recede.
Bright colours go darker in light mode, not lighter. Convention says bright means
lighter, which on a paper ground makes bold output nearly invisible. Here bright is more
saturated and darker, so bold stays readable.
Blue is the one forced compromise. The palette otherwise avoids saturated short-wavelength blue, because longitudinal chromatic aberration leaves ~440nm around one dioptre defocused and S-cones are absent from the foveal centre. The ANSI spec mandates a blue slot, so it is shifted to hue 200–210 and held low in saturation. It remains the weakest colour optically.
Each command has a comfy and a comfy-night file. Substitute as you prefer.
Warp
cp warp/comfy.yaml ~/.warp/themes/Then Cmd/Ctrl+P → Open Theme Picker → comfy.
To set it in ~/.warp/settings.toml instead, a custom theme needs the inline-table form,
with path relative to ~/.warp/themes/:
[appearance.themes]
theme = { custom = { name = "Comfy", path = "comfy.yaml" } }The plain string form (theme = "comfy") will not work — that field only accepts Warp's
bundled theme IDs, and a custom name there fails validation.
Ghostty
cp ghostty/comfy ~/.config/ghostty/themes/Then in ~/.config/ghostty/config:
theme = comfy
iTerm2
Settings → Profiles → Colors → Color Presets → Import, then pick
iterm2/comfy.itermcolors.
Alacritty
cp alacritty/comfy.toml ~/.config/alacritty/Then in alacritty.toml:
general.import = ["~/.config/alacritty/comfy.toml"]kitty
cp kitty/comfy.conf ~/.config/kitty/Then in kitty.conf:
include comfy.conf
WezTerm
mkdir -p ~/.config/wezterm/colors
cp wezterm/comfy.toml ~/.config/wezterm/colors/Then in wezterm.lua:
config.color_scheme = 'Comfy'Windows Terminal
Paste the contents of windows-terminal/comfy.json into the schemes array in
settings.json, then set "colorScheme": "Comfy" on a profile.
| Slot | Comfy | Comfy Night |
|---|---|---|
| Background | #F3F1EC |
#1B1D1C |
| Foreground | #2C2A26 |
#D8D4CA |
| Cursor, accent | #3F7A5E |
#78B894 |
| Red | #8A4B33 |
#D89F8C |
| Green | #55651F |
#A1B76A |
| Yellow | #6F5A24 |
#C3AC84 |
| Blue | #3D5F80 |
#8FB2C4 |
| Magenta | #6A4A78 |
#BCA6CA |
| Cyan | #2F6560 |
#7CB8AE |
Never edit the generated files. Change palette/comfy.json, then:
node scripts/build.mjsThat regenerates all fourteen files — seven formats × two variants — and fails if a chromatic slot drops below 4.5:1 or the band spreads past 1.5 points.
The same palette drives the VS Code theme. Keep the two copies in step when you change a colour.
MIT

