hol*_*lms 3 colors terminal ncurses
我讨厌在 ncurses 应用程序中随处可见的蓝色背景,例如:irssi、mc、tig ……我想改变那种颜色,我该怎么做?
我知道午夜指挥官有主题,但是所有 CLI 程序的全局设置呢?我发现setterm
在 Linux 和vidcontrol
FreeBSD中都有,但vidcontrol
对我不起作用,我认为这不是我需要的,因为它用于 VESA 的东西。我在这里通过 ssh 工作。
一些像 xterm 这样的终端允许通过资源文件或动态重新定义颜色,如果它在 $TERM 的 terminfo 条目中正确公开,你可以这样做:
tput initc 4 1000 0 0
Run Code Online (Sandbox Code Playgroud)
将 ANSI 颜色 4(通常为蓝色)更改为 RGB (1000, 0 0),即亮红色。
如果终端不支持重新定义颜色(请参阅 参考资料infocmp -1 | grep initc
),对于使用 terminfo 的应用程序,您还可以诱使它们发送不同的转义序列以请求颜色 4(蓝色)。
infocmp -x > terminal.info
Run Code Online (Sandbox Code Playgroud)
编辑terminal.info
,将终端名称替换为“myterm”之类的名称,然后编辑“setab”属性(设置 ANSI 背景)。
代替
setab=\E[4%p1%dm
Run Code Online (Sandbox Code Playgroud)
那是:
tput setab 4
Run Code Online (Sandbox Code Playgroud)
发送^[[44m,改成:
setab=\E[4%?%p1%{4}%=%t1%e%p1%d%;m
Run Code Online (Sandbox Code Playgroud)
的%? ....
,当问及对“4”,并请求一个,否则是一个if-then-else的,说发送“1”。
所以
tput setab 4
Run Code Online (Sandbox Code Playgroud)
将发送^[[41m
,(红色)tput setab 5
并将发送^[[45m
然后,编译它:
TERMINFO=$HOME/.terminfo tic -x terminal.info
Run Code Online (Sandbox Code Playgroud)
并将其用作:
TERMINFO=$HOME/.terminfo TERM=myterm the-application-to-trick
Run Code Online (Sandbox Code Playgroud)
这仅在应用程序使用 terminfo 数据库将序列发送到终端时才有效。