Получение 256 цветов из ruby-ncurses - PullRequest
7 голосов
/ 05 октября 2008

У меня 256 терминалов, которые прекрасно работают в моем терминале ( здесь тестовые сценарии ), но он перестает работать, когда я использую ncurses (через Ruby-ncurses). Печать escape-последовательностей, приведенных на этой странице, работает нормально, но когда я инициализирую ncurses, «put» перестает работать, и я не могу вывести цвета ни с одной из найденных мной функций изменения цвета / вывода строки ncurses. Что дает?

Ответы [ 3 ]

7 голосов
/ 05 октября 2008

Я не уверен, что это все история, но убедитесь, что возможности вашего терминала действительно обеспечивают описание в 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]

5 голосов
/ 06 октября 2008

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.

2 голосов
/ 14 сентября 2011

установка

ENV ['TERM'] + = '-256color', если ENV ['TERM'] == 'xterm' # активировать 256 цветов

работает на Ubuntu 10.04 +

...