The distinction between set_foreground
and set_a_foreground
(as well as the background capabilities) is in the terminfo(5)
manual page in the Color Handling section. Keep in mind that the long names are used infrequently, and that you should be looking for setf
versus setaf
:
The setaf/setab and setf/setb capabilities take a single
numeric argument each. Argument values 0-7 of setaf/setab
are portably defined as follows (the middle column is the
symbolic #define available in the header for the curses or
ncurses libraries). The terminal hardware is free to map
these as it likes, but the RGB values indicate normal
locations in color space.
Color #define Value RGB
black COLOR_BLACK 0 0, 0, 0
red COLOR_RED 1 max,0,0
green COLOR_GREEN 2 0,max,0
yellow COLOR_YELLOW 3 max,max,0
blue COLOR_BLUE 4 0,0,max
magenta COLOR_MAGENTA 5 max,0,max
cyan COLOR_CYAN 6 0,max,max
white COLOR_WHITE 7 max,max,max
The argument values of setf/setb historically correspond
to a different mapping, i.e.,
Color #define Value RGB
black COLOR_BLACK 0 0, 0, 0
blue COLOR_BLUE 1 0,0,max
green COLOR_GREEN 2 0,max,0
cyan COLOR_CYAN 3 0,max,max
red COLOR_RED 4 max,0,0
magenta COLOR_MAGENTA 5 max,0,max
yellow COLOR_YELLOW 6 max,max,0
white COLOR_WHITE 7 max,max,max
It is important to not confuse the two sets of color capa-
bilities; otherwise red/blue will be interchanged on the
display.
Most applications using just terminfo (and not curses) use the tparm
function to format the string, substituting a (numeric) parameter, and then use tputs
on the resulting string to actually write it. The two account for padding and delays (not usually found in color capabilities, but in terminfo generally).
The ncurses-examples program dots uses these functions to randomly draw colored cells on the screen. (In the example, tparm2
, tparm3
are macros which provide the extra parameters that tparm
prototype requires).