Here’s a working version:
#include <curses.h>
int main(void) {
initscr();
start_color();
init_pair(1, COLOR_BLACK, COLOR_RED);
init_pair(2, COLOR_BLACK, COLOR_GREEN);
attron(COLOR_PAIR(1));
printw("This should be printed in black with a red background!\n");
attron(COLOR_PAIR(2));
printw("And this in a green background!\n");
refresh();
getch();
endwin();
}
Notes:
- you need to call
start_color()
afterinitscr()
to use color. - you have to use the
COLOR_PAIR
macro to pass a color pair allocated withinit_pair
toattron
et al. - you can’t use color pair 0.
- you only have to call
refresh()
once, and only if you want your output to be seen at that point, and you’re not calling an input function likegetch()
.
This HOWTO is very helpful.