从 ruby??-ncurses 中获得 256 种颜色

Getting 256 colors out of ruby-ncurses

我有 256 种颜色在我的终端中运行良好(此处为测试脚本),但当我使用 ncurses(通过 Ruby-ncurses)时它停止运行。打印该页面上给出的转义序列可以正常工作,但是当我初始化 ncurses \\'puts\\' 时停止工作,并且我无法使用我发现的任何各种 ncurses 颜色更改/字符串输出函数输出颜色。什么给了?


我不确定这是否就是全部内容,但请确保您的终端功能确实提供了 256 色描述。

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

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

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

用 gcc -o tty-colors tty-colors.c -lncurses 编译

编辑:
请注意,仅仅因为在网上找到的脚本输出了 256 种颜色,这并不是"全部设置"。
诅咒程序依靠 terminfo 和 termcap 以及 TERM 环境变量来找出如何与终端交互。
因此,为了让 curses 应用程序能够使用 256 色,应该将 TERM 变量设置为支持 256 色的现有终端名称。
上面的 C 程序将向您展示 ncurses 对您的终端的看法,而不仅仅是像大多数脚本一样输出 xterm 序列 [甚至来自 X.org 的那个]


njsf:你部分地在这里,在修改了很多之后,我最终让它工作了。谢谢你的帮助。故事:XTerm(以及 rxvt 和 Eterm)通过转义序列(我所看到的)支持 256 种颜色,但 \\'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\\' 来加载它,从那时起我在新的 xterms 中有适当的 256 色支持。


设置

ENV[\\'TERM\\'] = \\'-256color\\' if ENV[\\'TERM\\'] == \\'xterm\\' # 激活256色

适用于 ubuntu 10.04