Получение 256 цветов из ruby-ncurses
У меня есть 256 цветов, прекрасно работающих в моем терминале ( тестовые скрипты здесь), но он перестает работать, когда я использую ncurses (через Ruby-ncurses). Печать escape-последовательностей, приведенных на этой странице, работает нормально, но когда я инициализирую ncurses, "put" перестает работать, и я не могу вывести цвета ни с одной из найденных мной функций изменения цвета / вывода строки ncurses. Что дает?
3 ответа
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.
Я не уверен, что это все, но убедитесь, что возможности вашего терминала действительно обеспечивают описание в 256 цветов.
Что такое значение переменной среды TERM? Попробуйте установить его в xterm-256color и перезапустить. Затем ncurses должен получить правильные последовательности выхода цвета.
Вы также можете проверить возможности терминала и вывод цвета терминала с помощью программы, которую мы используем при разработке 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].
Установка
ENV['TERM'] += '-256color', если ENV['TERM'] == 'xterm' # активировать 256 цветов
работает на Ubuntu 10.04 +