set_color [OPTIONS] VALUE
set_color is used to control the color and styling of text in the terminal.
VALUE describes that styling. It's a reserved color name like red or a RGB color value given as 3 or 6 hexadecimal digits ("F27" or "FF2277"). A special keyword normal resets text formatting to terminal defaults.
Valid colors include:
The br- (as in 'bright') forms are full-brightness variants of the 8 standard-brightness colors on many terminals. brblack has higher brightness than black - towards gray.
An RGB value with three or six hex digits, such as A0FF33 or f2f can be used.
fish will choose the closest supported color. A three digit value is equivalent to specifying each digit twice; e.g.,
set_color 2BC is the same as
set_color 22BBCC. Hexadecimal RGB values can be in lower or uppercase. Depending on the capabilities of your terminal (and the level of support
set_color has for it) the actual color may be approximated by a nearby matching reserved color name or
set_color may not have an effect on color.
A second color may be given as a desired fallback color. e.g.
set_color 124212 brblue will instruct set_color to use brblue if a terminal is not capable of the exact shade of grey desired. This is very useful when an 8 or 16 color terminal might otherwise not use a color.
The following options are available:
--backgroundCOLOR sets the background color.
--print-colorsprints a list of the 16 named colors.
--boldsets bold mode.
--dimsets dim mode.
--italicssets italics mode.
--reversesets reverse mode.
--underlinesets underlined mode.
Using the normal keyword will reset foreground, background, and all formatting back to default.
--boldescape sequence to switch to a brighter color set rather than increasing the weight of text.
set_colorworks by printing sequences of characters to stdout. If used in command substitution or a pipe, these characters will also be captured. This may or may not be desirable. Checking the exit status of
isatty stdoutbefore using
set_colorcan be useful to decide not to colorize output in a script.
set_color red; echo "Roses are red" set_color blue; echo "Violets are blue" set_color 62A; echo "Eggplants are dark purple" set_color normal; echo "Normal is nice" # Resets the background too
Fish uses some heuristics to determine what colors a terminal supports to avoid sending sequences that it won't understand.
In particular it will:
If terminfo reports 256 color support for a terminal, 256 color support will always be enabled.
To force true-color support on or off, set $fish_term24bit to "1" for on and 0 for off -
set -g fish_term24bit 1.
To debug color palette problems,
tput colors may be useful to see the number of colors in terminfo for a terminal. Fish launched as
fish -d2 will include diagnostic messages that indicate the color support mode in use.
set_color command uses the terminfo database to look up how to change terminal colors on whatever terminal is in use. Some systems have old and incomplete terminfo databases, and lack color information for terminals that support it. Fish assumes that all terminals can use the [ANSI X3.64](https://en.wikipedia.org/wiki/ANSI_escape_code) escape sequences if the terminfo definition indicates a color below 16 is not supported.
© 2019 fish-shell developers
Licensed under the GNU General Public License, version 2.