This was originally made to better visually differentiate columns of same-length words in bash outputs / text-only interfaces.
To be exact, hue is deterministic based on the matched text, lightness is varied to ensure readability.
Plus the command line just needs more color sometimes.
npm i -g synesthete
Regular usage:
> echo "You pass butter." | synesthete
But that's a lot to type, let's alias it to just sy
:
> alias sy='synesthete'
Ah, much better.
in --help
:
-m, --match : assign the global, case-sensitive regex to match text to colorize
Examples:
-m . will match each character
-m \d+ will match all contiguous digits
-m [^aeiouyAEIOUY]+ will match all contiguous non-vowels
-m="\s*\S+" will match all the spaces before a nonspace, then adjacent nonspaces, etc
Regex with spaces need to be strung: -m="[^a-z] {4}\d+\s*"
(default: \S+ )
-s, --salt : assign anything here to generate new deterministic colors
Examples:
-s 9
-s abcd
-s $RANDOM for something different each time if you use bash
(default: 8D )
-i, --invert : flag colorizes background and makes text black. -w makes text white.
-w, --white : flag makes background white
-b, --black : flag makes background black
-h, --help : flag shows this help
Should work on weird characters, too:
Maybe you want to color the background and spaces surrounding words:
Or color the background with white text:
Or color only digits on a black background:
Or color every character something different each time!
If you find a combination you like, add it to your alias.
Related info: