使用ruby-ncurses如何获得256种颜色?

8

我的终端里已经成功地使用了256种颜色(测试脚本在这里),但是当我使用ncurses(通过Ruby-ncurses)时,它就停止工作了。打印该页面上给出的转义序列没有问题,但是当我初始化 ncurses 后,'puts' 无法正常工作,并且我找到的各种 ncurses 颜色更改/字符串输出函数都无法输出颜色。怎么回事?

3个回答

7
我不确定这是否是全部内容,但请确保您的终端能力确实提供了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的脚本也是如此]。

5

njsf: 你的部分观点是正确的,在进一步尝试后,我最终让它起作用了。感谢您的帮助。故事如下:XTerm(以及rxvt和Eterm)通过转义序列支持256种颜色(我所看到的),但“tput colors”会说“8”,ncurses无法使用它们,因为ncurses正在努力通过terminfo进行访问。

为了使任何遇到类似问题的人受益:

我发现我需要安装ncurses-term(Ubuntu)软件包才能获得/lib/terminfo/x/xterm-256color和其他256色terminfo文件。然后我将我的TERM设置为xterm-256color,并在我的~/.Xdefaults中添加了一行'*customization:-color',运行'xrdb -merge ~/.Xdefaults'来加载它,从那时起,我在新的xterms中拥有适当的256色支持。


是的,我来这里建议您正确设置终端。还有一个小提示供任何路过的读者参考。例如,Mac OS X Terminal.app仅支持16种颜色,因此您可以使用iTerm或在X11上使用XTerm,否则就忘了吧! - ocodo

2

设置

如果环境变量中的 TERM 为 xterm,则将其改为 TERM-256color,以启用 256 色。

适用于 Ubuntu 10.04 及以上版本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接