2008-10-05 62 views
7

我有256种颜色在我的终端中很好用(test scripts here),但当我使用ncurses(通过Ruby-ncurses)时,它停止工作。打印在该页面上给出的转义序列工作正常,但是当我初始化ncurses'puts'停止工作,并且我无法用任何我发现的各种ncurses颜色改变/字符串输出函数输出颜色。是什么赋予了?从ruby-ncurses中获取256种颜色

回答

5

njsf:你是部分就在这里,和后修补更多我最终得到它的工作。谢谢你的帮助。故事:XTerm(和rxvt和Eterm)通过转义序列(我所看到的)支持256种颜色,但'输出颜色'会说'8',而ncurses将无法获得它们,因为ncurses在播放很好并尝试通过terminfo进行访问。

对于具有相似痛苦的人的利益:

我发现我需要安装ncurses的期限(Ubuntu的)包以获得/ lib中/的terminfo/X/xterm方式256color等256color terminfo的文件。然后,我将TERM设置为xterm-256color并将'* customization:-color'添加到我的〜/ .Xdefaults中,运行'xrdb -merge〜/ .Xdefaults'加载它,从此我有适当的256色支持新的xterm。

+0

是的,来到这里建议适当地设置您的终端。对于任何驾驶型读卡器来说,这也是一个小点。例如Mac OS X Terminal.app仅支持16种颜色,因此您可以在X11上使用iTerm或XTerm,或者忘记它! – ocodo 2011-01-25 03:58:21

7

我不确定这是否是所有的故事,但请确保您的终端功能确实提供了256种颜色描述。

什么是TERM环境变量值?尝试将其设置为xterm-256color并重新运行它。 ncurses应该得到正确的颜色转义序列。

您还可以测试终端的能力和终端的彩色输出与我们在SXEmacs开发使用的程序:

http://www.triatlantico.org/tmp/tty-colors.c

编译使用gcc -o TTY的颜色TTY-colors.c -lncurses

编辑: 请注意,只是因为在网上找到的脚本输出256色,这不是“全部设置”。 Curses程序依赖terminfo和termcap以及TERM环境变量来找出如何与终端进行交互。 因此,为了让curses应用程序能够使用256色,人们应该将TERM变量设置为支持256色的现有终端名称。上述 C程序会告诉你 ncurses的想着你的终端,而不仅仅是输出最喜欢的脚本xterm的序列做[甚至从X.org一]什么

2

设置

ENV [ 'TERM'] + = '-256color' 如果ENV [ 'TERM'] == '的xterm' #激活ubuntu上256个色

作品10.04 +