It was September, 3rd when I’ve decided to do an utmost, radically time-invested theme for the plugin zdharma-continuum/fast-syntax-highlighting (for Zshell, see its Github page). I was finishing two www.syntaxenvy.com-based themes, sv-plant and sv-orple and I noticed how unsupported by anything are my decisions about assigning colors in given way. I then decided to understand the objects in command line and colorize them according to a full, narration-based theory even if it was to take me two weeks to get this done. See the effects.

I ended up working for about 10 days, 4 hours each day on average. It was a daunting task of many tries to turn myself into some possible creative state, when staring at a few lines of Zsh code doesn’t yield perfect emptiness in mind, but instead some observation, some fact or theory. An example of such theory that once came up: Zsh builtin command, like echo, should be of the same color as any subcommand (i.e. clone in git clone https://..., etc.), because both builtins and subcommands are not standalone objects, but are embedded in their main programs. So echo is built into zsh program and clone is built into git program (git’s implementation is very modular, but logically clone is a part of git), and this makes those two command line objects a single group, with single color.

X-Paragon

I’ve wrote 130 lines text document with 17 premises or theories of how an object of the command line should be colorized. The effect is the X-Paragon theme:

x-paragon theme

Besides the theory-backed-up allocation of colors described above (130 lines of explaining why object X should be of color Y) and quality traits provided by www.syntaxenvy.com, it has features that never occurred in the free, default themes, like:

  • distinct color for builtin, command and function/alias,
  • distinct color for long (double-hyphen) and short options,
  • 3 shades of blue, obtained thanks to CIE L*a*b conversion (see below).

The theme isn’t available by default (but there’s other one, see below). I’ve created this theme to say thanks to people that support me at www.Patreon.com. You can join and download the theme (and the following X-Fervent & X-Tranquil) for $1 a month. But hold on. I provide a complete palette used by the theme here below, and the screenshot above, so you can recreate the theme in a hour or so (color names are taken from here):

CIE L*a*b (it keeps constant lightness promised by www.syntaxenvy.com):

LightSkyBlue1 
LightSkyBlue3 
LightGoldenrod2 
CadetBlue 
PaleGreen3 
LightSkyBlue3 
Grey11 
 

Naive conversion (note the bumpy, breaking down brightness; still, those colors are in a way similar to the RGB 24-bit colors given by www.syntaxenvy.com, but they aren’t used to constitute the spine of the theme – the above ones are used for this):

LightSkyBlue3 
SteelBlue3 
DarkKhaki 
LightSkyBlue3 
PaleGreen3 
LightSkyBlue3 
Grey0 


The www.syntaxenvy.com base for the theme.

CIE L*a*b

I have an interesting tool written in C. I can disclose it to interested people (it’s not mine, but I can share with a few people). The tool converts 24 bit RGB input color into xterm-256 color palette using CIE L*a*b color space. The point is that CIE L*a*b tries to follow human perception of how much two colors differ. That is why it gave so good results for the X-Paragon theme. When converting color themes from www.syntaxenvy.com such tool is really needed.

Q-JMnemonic

This is a free theme currently shipped with Fast-Syntax-Highlighting. It is a descentant of X-Paragon theme, so it shares the points of the 130-line theory. Check out its SyntaxEnvy base theme. The name comes from me having instant recall of the Johnny Mnemonic movie when I first time saw the theme after SyntaxEnvy drawed it :) I don’t know why it recalled, but there has to be something in the theme :)

q-jmnemonic theme

X-Fervent

Theme created to say thanks to Patreon supporters, available through that portal. It was created because its SyntaxEnvy base theme showed interesting balance between dull and intense colors. It’s X-Paragon descendant, sharing its properties.

x-fervent theme

X-Tranquil

Theme created to say thanks to Patreon supporters, available through that portal. It was created because its SyntaxEnvy base theme has interesting property: it is a dark theme, however it is still easily readable, not dull, only half-way dark. It’s X-Paragon descendant, sharing its properties.

x-tranquil theme

Setting themes

Invoke e.g. fast-theme ./x-paragon.ini after downloading the theme file. For q-jmnemonic, which is shipped with the newest fast-syntax-highlighting version, the path can be skipped, i.e. invoke just fast-theme q-jmnemonic. Use option -t to display the same block of Zsh code as the screenshots are using, to test the theme.

Conclusions

The themes should have significant value in them, because:

  • they’re based on the great SyntaxEnvy theme generator, which promises constant lightness and saturation,
  • colors in them are obtained with CIE L*a*b color space, which promises to do a most faithful reduction from 24-bit color into 8-bit xterm-256 palette,
  • they’re created during as much as 10 days of thinking on backing-up theory on color allocation.

I plan to take different routes in the backing-up theory and see what theme will result from this. It will be available to $5 patrons within two months (before Novermber, 10th). I will make a free spin-off of this theme too and include it in Github repository.

For comments you can use twitter and reddit or send email directly to me using the following address: sgniazdowski {<at>} gmail.com.