4.9 KiB
4.9 KiB
title, description, published, date, tags, editor, dateCreated
title | description | published | date | tags | editor | dateCreated |
---|---|---|---|---|---|---|
color | true | 2023-04-28T02:38:18.678Z | markdown | 2023-04-28T02:22:37.379Z |
Style and Colors in the terminal
who doesn't love Style and Colors?
Style is a mixed bag in terms of support
Some things are rarely supported, but it won't hurt.
Number | Style | Code | Disable | Support |
---|---|---|---|---|
0 | Reset | "\e[0m" | All | |
1 | Bold | "\e[1m" | "\e[22m" | All |
2 | thin | "\e[2m" | "\e[22m" | Most |
3 | Cursive | "\e[3m" | "\e[23m" | Most |
4 | Underline | "\e[4m" | "\e[24m" | Most |
5 | Blinking Slow | "\e[5m" | "\e[25m" | Most |
6 | Blinking Fast | "\e[6m" | "\e[25m" | Some |
7 | Inverted Color | "\e[7m" | "\e[27m" | All |
8 | Conceal | "\e[8m" | "\e[28m" | Some |
9 | Striketrough | "\e[9m" | "\e[29m" | Most |
11-20 | Other Fonts | "\e[11-20m" | "\e[10m" | Most |
21 | Double Underline | "\e[21m" | "\e[24m" | Some |
26 | No Monospace | "\e[26m" | "\e[50m" | Some |
51 | Framed | "\e[51m" | "\e[54m" | Some |
52 | Circled | "\e[52m" | "\e[54m" | Some |
53 | Overline | "\e[53m" | "\e[55m" | Some |
The 8 colors supported by all modern terminal emulators
3 bit color, a bit strange but every bit was valueable back then
Number | Color | Foreground | Background |
---|---|---|---|
0 | Black | "\e[30m" | "\e[40m" |
1 | Red | "\e[31m" | "\e[41m" |
2 | Green | "\e[32m" | "\e[42m" |
3 | Yellow | "\e[33m" | "\e[43m" |
4 | Blue | "\e[34m" | "\e[44m" |
5 | Magenta | "\e[35m" | "\e[45m" |
6 | Cyan | "\e[36m" | "\e[46m" |
7 | White | "\e[37m" | "\e[47m" |
9 | Reset | "\e[39m" | "\e[49m" |
Combinations are supported by all modern terminal emulators
In general try to do style first, then color
Code | Description |
---|---|
"\e[0;0m" | Reset All |
"\e[1;3m" | Bold and Cursive |
"\e[30;44m" | Black letters on Blue background |
"\e[1;30;47m" | Bold Black letters on White background |
"\e[45;32m" | Green letters on Magenta Background |
"\e[1;3;4;5m" | Bold Cursive Underlined and Blinking slow |
"\e[2;9;31;46m" | Thin Striketrough Style with Red letters on Cyan background |
Bright Colors are supported by most modern terminal emulators
4 bit color, With a added brighter variant of the 8 default colors
Number | Color | Foreground | Background |
---|---|---|---|
0 | Black | "\e[90m" | "\e[100m" |
1 | Red | "\e[91m" | "\e[101m" |
2 | Green | "\e[92m" | "\e[102m" |
3 | Yellow | "\e[93m" | "\e[103m" |
4 | Blue | "\e[94m" | "\e[104m" |
5 | Magenta | "\e[95m" | "\e[105m" |
6 | Cyan | "\e[96m" | "\e[106m" |
7 | White | "\e[97m" | "\e[107m" |
9 | Reset | "\e[39m" | "\e[49m" |
256 Colors are supported by most modern terminal emulators
8 bit color this is the most common among terminal emulators
0 to 15 are the 8 standard and 8 bright colors
16 to 231 are the extra colors
232 to 255 are some extra grayscale options
Number | Foreground | Background | Underline |
---|---|---|---|
0 | "\e[38;5;0m" | "\e[48;5;0m" | "\e[58;5;0m" |
1 | "\e[38;5;1m" | "\e[48;5;1m" | "\e[58;5;1m" |
2 | "\e[38;5;2m" | "\e[48;5;2m" | "\e[58;5;2m" |
3 | "\e[38;5;3m" | "\e[48;5;3m" | "\e[58;5;3m" |
... | "\e[38;5;...m" | "\e[48;5;...m" | "\e[58;5;...m" |
255 | "\e[38;5;255m" | "\e[48;5;255m" | "\e[58;5;255m" |
Reset | "\e[39m" | "\e[49m" | "\e[59m" |
You can print all of the 256 colors using the following command
print "Basic 16 colors are part of the 256 colors"; for i in {0..15}; do print -Pn "%K{$i} %k%F{$i}${(l:3::0:)i}%f " ${${(M)$(($((i+1))%8))#0}:+"\n"}; done; print "The Extra Colors in 256 colors"; for i in {16..231}; do print -Pn "%K{$i} %k%F{$i}${(l:3::0:)i}%f " ${${(M)$(($((i-3))%12))#0}:+"\n"}; done; print "The Grayscale options in 256 colors"; for i in {232..255}; do print -Pn "%K{$i} %k%F{$i}${(l:3::0:)i}%f " ${${(M)$(($((i-3))%6))#0}:+"\n"}; done
True Color is supported by some modern terminal emulators
24 bit color which is all the color we need for our puny little human eyes
You can replace any of the RGB values you want with your own custom colors
Color | Foreground | Background | Underline |
---|---|---|---|
Black | "\e[38;2;0;0;0m" | "\e[48;2;0;0;0m" | "\e[58;2;0;0;0m" |
Red | "\e[38;2;255;0;0m" | "\e[48;2;255;0;0m" | "\e[58;2;255;0;0m" |
Green | "\e[38;2;0;255;0m" | "\e[48;2;0;255;0m" | "\e[58;2;0;255;0m" |
Yellow | "\e[38;2;255;255;0m" | "\e[48;2;255;255;0m" | "\e[58;2;255;255;0m" |
Blue | "\e[38;2;0;0;255m" | "\e[48;2;0;0;255m" | "\e[58;2;0;0;255m" |
Magenta | "\e[38;2;255;0;255m" | "\e[48;2;255;0;255m" | "\e[58;2;255;0;255m" |
Cyan | "\e[38;2;0;255;255m" | "\e[48;2;0;255;255m" | "\e[58;2;0;255;255m" |
White | "\e[38;2;255;255;255m" | "\e[48;2;255;255;255m" | "\e[58;2;255;255;255m" |
RGB | "\e[38;2;R;G;Bm" | "\e[48;2;R;G;Bm" | "\e[58;2;R;G;Bm" |
Reset | "\e[39m" | "\e[49m" | "\e[59m" |