linux - 将 TERM 映射到支持的 ANSI 颜色代码?

标签 linux macos ansi-escape

我想检测系统控制台是否支持来自 Java 应用程序的 ANSI 颜色代码(以及哪些颜色代码),而不依赖于 native 代码(这意味着我无法与 ncurses 交互)。

是否有一种简单可靠的方法将 $TERM 映射到控制台支持的颜色代码列表?

我的应用程序真的需要支持 http://invisible-island.net/ncurses/terminfo.src.html 中找到的数百个 terminfo 代码吗?或者是否有一个我应该检查的最小列表(例如 xtermxterm-colorxterm-256color)?

更新:我在 http://tldp.org/HOWTO/Text-Terminal-HOWTO-16.html 找到了 terminfo 的精彩概述。

最佳答案

这里有两种不同且互补的方法:

  • 您希望您的系统能够在任何可能的终端上运行(包括旧的真实终端,例如 televideo-tvi950 的 dec-vt100)=> 使用 [n]curses 构建一些东西。它是为这种用途而开发的:从真实终端抽象程序
  • 您希望您的系统适用于一种单一终端类型(例如 xterm-color)并依赖模拟器来实现它。您只需对 TERM 环境变量 xterm-color 进行测试,或者将选项传递给程序以尝试使用颜色或不使用颜色。

这两种情况现在都是可以接受的,事实上您可以找到实现它们的 Java 库,例如 Java Curses对于前者或 Lanterna对于后者(更多引用here)

您应该在文档中简单地说明这一点。像这样的东西:

This application requires an xterm compatible terminal. If the TERM environment variable is xterm-color or if this parameter is passed of that system property is present it will use colors.

(用相关选项替换这个和那个...)

或者:

This application is based on the terminfo system. Be sure to set the the TERM environment variable to the best possible emulation. Colors are supported by application if present in TERMINFO database.

关于linux - 将 TERM 映射到支持的 ANSI 颜色代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39032411/

相关文章:

ruby - SoundCLI gem 失败

json - 使用 bash 找到匹配的字符串键并在 json 文件中增加其值

macos - 如何跟踪/监听路由变化?

python - 在 Python 3 中使用 ANSI 序列确定终端光标位置

objective-c - 在 Objective-C 和 Linux 上进行游戏编程

linux - 我可以使用 USB 转串口适配器与我的 VMWare Fusion 开发板通信吗?

Mac App Store 上的 Xcode 无法安装,显示磁盘空间不足

bash - 从同一脚本杀死其他 bash 守护进程

python-3.x - 是否可以使用 Python 的 ANSI 转义码获取光标位置?

ruby - 在将字符串写入日志文件之前从字符串中删除颜色装饰