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.

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.
| Palette | Use when | Distinct categories |
|---|---|---|
| 3400k-dark | General-purpose warm theme on near-black | 6 |
| 3400k-light | Moderate warm shift on light surface | 6 |
| 2000k-dark | Redshift near 2000K | 4 |
| 1200k-dark | Extreme 1200K stress profile | 3 |
Source: GitHub
Discussion
0 Comments
Be the first to start the discussion.