Вопрос

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

Это было полезно?

Решение 2

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 должен получить правильные 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]

параметр

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top