У меня 256 цветов отлично работают в моем терминале (тестовые скрипты здесь), но он перестает работать, когда я использую ncurses (через Ruby-ncurses). Печать управляющих последовательностей, приведенных на этой странице, работает нормально, но когда я инициализирую ncurses, 'put' перестает работать, и я не могу выводить цвета с помощью любой из различных функций изменения цвета / вывода строк ncurses, которые я нашел. Что дает?
Я не уверен, что это все, но убедитесь, что возможности вашего терминала действительно обеспечивают описание 256 цветов.
Какое значение имеет переменная среды TERM? Попробуйте установить его на xterm-256color и перезапустить. Затем ncurses должен получить правильные escape-последовательности цветов.
Вы также можете протестировать возможности терминала и вывод цвета терминала с помощью программы, которую мы используем при разработке SXEmacs:
http://www.triatlantico.org/tmp/tty-colors.c
Скомпилируйте с помощью gcc -o tty-colors tty-colors.c -lncurses
Обновлено: Обратите внимание, что только потому, что скрипты, которые находятся в сети, выводят 256 цветов, это еще не «все установлено». Программы Curses используют terminfo и termcap, а также переменную среды TERM, чтобы узнать, как взаимодействовать с терминалом. Итак, чтобы приложение curses могло использовать 256 цветов, необходимо установить в переменной TERM имя существующего терминала, которое поддерживает 256 цветов. Программа на C выше покажет вам, что какие ncurses думает о вашем терминале, а не просто выводит последовательности xterm, как это делают большинство скриптов [даже из X.org]
njsf: Вы были частично правы здесь, и после долгой работы я в конце концов заставил это работать. Спасибо за вашу помощь. История: XTerm (и rxvt, и Eterm) поддерживают 256 цветов с помощью escape-последовательностей (что я видел), но в строке tput colors будет указано «8», и ncurses не сможет их получить, потому что ncurses играет хорошо. и пытается получить доступ через terminfo.
Для пользы всем, кто страдает подобной болью:
Я обнаружил, что мне нужно установить пакет ncurses-term (Ubuntu), чтобы получить / lib / terminfo / x / xterm-256color и другие 256-цветные файлы terminfo. Затем я установил свой TERM на xterm-256color и добавил строку '* customization: -color' в мои ~ / .Xdefaults, запустил 'xrdb -merge ~ / .Xdefaults', чтобы загрузить его, и с этого момента у меня есть правильный 256 цветов поддержка в новых xterms.
параметр
ENV ['TERM'] + = '-256color' if ENV ['TERM'] == 'xterm' # активировать 256 цветов
работает на ubuntu 10.04 +
Ага, пришел сюда, чтобы предложить правильно настроить терминал .. Также лакомый кусочек для любых читателей, которые проезжают мимо. Mac OS X Terminal.app, например, поддерживает только 16 цветов, поэтому вы либо используете iTerm, либо XTerm на X11, либо забываете об этом!