News

Ember: Color Palettes That Survive Redshift and Night Shift

Ember is a new open-source project that designs terminal, chart, and UI color palettes to remain distinguishable under warm-screen filters like Redshift and Night Shift. It ships four palettes tuned for different color temperatures, with exports for Alacritty, iTerm2, Windows Terminal, Matplotlib, CSS, and JSON.

August 14, 2026· 2 min read· Source: GitHub
Ember: Color Palettes That Survive Redshift and Night Shift

If you code at night with Redshift or Night Shift enabled, you know the pain: colors that look distinct in daylight become muddy and indistinguishable under a warm filter. Ember, a new open-source project, tackles this head-on by designing palettes that stay usable before and after aggressive warm-screen filtering.

Ember's core insight is that a warm filter isn't a simple tint—it multiplies red, green, and blue by different gains. At extreme temperatures like 1200K, the blue channel is effectively zero, so colors that differ only in blue collapse into the same output. Ember models these per-channel gains and authors palettes that maximize perceptual distinctness under the target filter, then tweaks the remaining channels for daytime use.

The project ships four palettes: 3400k-dark, 3400k-light, 2000k-dark, and 1200k-dark. The 3400K variants are for general use, approximating a MacBook's maximum Night Shift effect. The deeper profiles are for true redshift enthusiasts and astronomers. As the filter gets more extreme, the number of distinct colors drops—from six categories at 3400K down to three at 1200K—because the perceptual color space shrinks.

Each palette is authored in commanded sRGB and verified under the modeled filter gains. Exports include terminal themes for Alacritty, iTerm2, and Windows Terminal, plus UI surface roles (a ladder of backgrounds and foregrounds), categorical chart colors, a 256-sample sequential map, and Matplotlib/CSS/JSON/Python artifacts. Ember doesn't apply the filter itself; it assumes you already have one running.

For terminal users, importing a theme is straightforward: copy a file into your Alacritty config, import a preset in iTerm2, or paste a scheme into Windows Terminal's JSON. The UI roles are consistent across families, with bg_0 as the canvas and bg_5 as the strongest background state. The Matplotlib API provides categorical(), sequential(), and surfaces() functions, with capacity checks that match the selected palette.

Ember is a niche but thoughtful tool for anyone who spends long hours staring at terminals and dashboards under warm filters. It's honest about the tradeoffs: deeper filters mean fewer distinct colors, and the project labels aliased terminal slots rather than pretending they're unique. The documentation is clear about what the simulations show and what they don't.

A warm filter is not a tinted overlay: it multiplies red, green, and blue by different gains. At 1200K the blue gain is zero, so colors that differ only in blue produce identical output.
Manul X Editorial
Ember palette profiles and their distinct color counts
At a glance
PaletteUse whenDistinct categories
3400k-darkGeneral-purpose warm theme on near-black6
3400k-lightModerate warm shift on light surface6
2000k-darkRedshift near 2000K4
1200k-darkExtreme 1200K stress profile3