I really liked the design principles behind Solarized - it has some great features. However, it has a few problems as well, which Selenized solves:
- Confusing accent colors
- Not enough contrast
- Dark version is too dark
- Hacky implementation in terminals
Some accent colors in Solarized are confusing or too similar to each other:
- green is too much like yellow (looks like olive)
- orange looks almost like red
- magenta too close to red as well
- violet is easy to confuse with blue
This is less of a problem on high-end, color-calibrated displays, but on a regular screen (like the one on my ThinkPad from a couple years ago) it can be really difficult to tell some colors apart. Selenized makes the differences clearer.
Ethan says on Solarized website that he had tested it in a variety of lighting conditions. However, in practice I have encountered numerous situations when Solarized readability was not satisfactory. This is confirmed by Web Content Accessibility Guidelines, which requires contrast of 4.5 for AA grade and 7.0 for AAA grade:
color/color combination | Solarized | Selenized dark | Selenized black |
---|---|---|---|
main content (foreground) | 4.75 - AA ✔️ | 6.07 - AA ✔️ | 9.05 - AAA ✔️✔️ |
fg on bg highlight | 4.11 - 🤔* | 5.04 - AA ✔️ | 7.81 - AAA ✔️✔️ |
secondary content (comments) | 2.79 - AA ❌ | 3.23 - 🤔* | 3.97 - 🤔* |
red (darkest accent color) | 3.25 - 🤔* | 3.71 - 🤔* | 4.79 - AA ✔️ |
🤔* WCAG says that contrast of 3.0 is acceptable if the font has sufficient size and weight. 3.0 is also the minimum contrast for body text required by ISO-9241-3.
Contrast in Selenized remains moderately low, but it is significantly more readable in poor lighting than Solarized.
Solarized dark may work well when used all by itself, but it's too dark when placed next to a window with high-contrast content:
This is even more visible when Solarized dark is used for code snippets on a website with white background:
Selenized dark, being slightly lighter and having more contrast, doesn't have this problem:
Solarized puts both light and dark variants in one color palette, resulting in a weird mapping of ANSI color codes to actual colors. For example, Solarized maps color code meant for bright/bold green to "base 01" (greyish shade used for comments):
Because of that many command line programs will produce strange or unreadable output (see examples here and here).
Selenized keeps standard meaning of terminal color codes: