Terminal
如何更改 curses 應用程序的背景顏色?
我討厭在 ncurses 應用程序中隨處可見的藍色背景,例如:irssi、mc、tig……我想改變那種顏色,我該怎麼做?
我知道午夜指揮官有主題,但是所有 CLI 程序的全域設置呢?我發現
setterm
Linux 和vidcontrol
FreeBSD 中都有,但vidcontrol
對我不起作用,而且我認為這不是我需要的,因為它適用於 VESA 的東西。我在這里通過 ssh 工作。
某些終端(如 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 數據庫將序列發送到終端時才有效。