如何更改curses应用程序的背景颜色?

如何更改curses应用程序的背景颜色?

我讨厌 ncurses 应用程序中随处可见的蓝色背景,例如:irssi、mc、tig……我想更改该颜色,该怎么做?

我知道午夜指挥官有主题,但是所有 CLI 程序的全局设置又如何呢?我发现settermLinux 和vidcontrolFreeBSD 中都有,但vidcontrol对我不起作用,而且我认为这不是我需要的,因为它是用于 VESA 的东西。我在这里通过 ssh 工作。

答案1

某些终端(例如 xterm)允许通过资源文件或动态重新定义颜色,如果它在 $TERM 的 terminfo 条目中正确公开,您可以使用以下命令来执行此操作:

tput initc 4 1000 0 0

将 ANSI 颜色 4(通常为蓝色)更改为 RGB (1000, 0 0),即亮红色。

如果终端不支持重新定义颜色(请参阅 参考资料infocmp -1 | grep initc),对于使用 terminfo 的应用程序,您还可以欺骗它们发送不同的转义序列来请求颜色 4(蓝色)。

infocmp -x > terminal.info

编辑terminal.info,将终端名称替换为“myterm”之类的名称,然后编辑“setab”属性(设置 ANSI 背景)。

代替

setab=\E[4%p1%dm

那是:

tput setab 4

发送 ^[[44m,将其更改为:

setab=\E[4%?%p1%{4}%=%t1%e%p1%d%;m

,是%? ....一个 if-then-else,表示在请求“4”时发送“1”,否则发送请求的值。

所以

tput setab 4

将发送^[[41m,(红色)tput setab 5并将发送^[[45m

然后,使用以下命令进行编译:

TERMINFO=$HOME/.terminfo tic -x terminal.info

并将其用作:

TERMINFO=$HOME/.terminfo TERM=myterm the-application-to-trick

仅当应用程序使用 terminfo 数据库将序列发送到终端时才有效。

答案2

如果将 TERM 变量切换到不支持 ANSI 颜色的终端,您将不会再看到任何蓝色背景。

相关内容