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

时间:2016-08-19 06:27:27

标签: linux macos ansi-escape

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

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

我的应用程序是否真的需要支持在http://invisible-island.net/ncurses/terminfo.src.html找到的数百个terminfo代码,或者是否有我应该检查的最小列表(例如$TERMxterm和{ {1}})?

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

1 个答案:

答案 0 :(得分:1)

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

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

现在这两种情况都是可以接受的,实际上你可以找到实现它们的Java库,比如前者为Java Curses,后者为Lanterna(更多引用here

您应该在文档中清楚地说明。类似的东西:

  

此应用程序需要xterm兼容终端。如果TERM环境变量为xterm-color,或者如果传递了该参数,则该系统属性存在,它将使用颜色。

(替换本和相关选项...)

可替换地:

  

此应用程序基于terminfo系统。请务必将TERM环境变量设置为最佳模拟。如果TERMINFO数据库中存在颜色,则应用程序支持颜色。