我讨厌 ncurses 应用程序中随处可见的蓝色背景,例如:irssi、mc、tig……我想更改该颜色,该怎么做?
我知道午夜指挥官有主题,但是所有 CLI 程序的全局设置又如何呢?我发现setterm
Linux 和vidcontrol
FreeBSD 中都有,但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 颜色的终端,您将不会再看到任何蓝色背景。