Я не уверен, что это все история, но убедитесь, что возможности вашего терминала действительно обеспечивают описание в 256 цветов.
Что такое значение переменной среды TERM? Попробуйте установить его в xterm-256color и перезапустить.
Затем ncurses должен получить правильные последовательности выхода цвета.
Вы также можете проверить возможности терминала и вывод цвета терминала с помощью программы, которую мы используем при разработке SXEmacs:
http://www.triatlantico.org/tmp/tty-colors.c
Компилировать с помощью gcc -o tty-colors tty-colors.c -lncurses
EDIT:
Обратите внимание, что только из-за того, что скрипты, которые находятся в сети, выводят 256 цветов, это еще не все.
Программы Curses полагаются на terminfo и termcap и переменную окружения TERM, чтобы узнать, как взаимодействовать с терминалом.
Таким образом, чтобы приложение curses могло использовать 256 цветов, необходимо установить для переменной TERM имя существующего терминала, поддерживающего 256 цветов.
Приведенная выше программа на C покажет вам , что ncurses думает о вашем терминале, а не просто выводит последовательности xterm, как это делает большинство скриптов [даже один из X.org]