Получение 256 цветов из рубиновых ncurses

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

7
задан pushcx 05 окт. '08 в 7:33
источник поделиться
3 ответов

njsf: Вы были частично здесь, и после многократного переделания я в конечном итоге заставил его работать. Спасибо за вашу помощь. История: XTerm (и rxvt и Eterm) поддерживают 256 цветов с помощью управляющих последовательностей (что я видел), но "цвета tput" будут говорить "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.

5
ответ дан pushcx 06 окт. '08 в 1:18
источник поделиться

Я не уверен, что это будет вся история, но убедитесь, что ваши возможности терминала действительно обеспечивают описание цветов в 256 цветов.

Что такое значение переменной среды TERM? Попробуйте установить его на xterm-256color и повторите его. ncurses должны затем получить правильные цветовые escape-последовательности.

Вы также можете протестировать возможности терминала и вывод цвета терминала с помощью программы, которую мы используем при разработке 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)

7
ответ дан njsf 05 окт. '08 в 7:42
источник поделиться

Установка

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

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

2
ответ дан grosser 14 сент. '11 в 22:55
источник поделиться

Другие вопросы по меткам