Terminal

如何更改 curses 應用程序的背景顏色?

  • October 24, 2018

我討厭在 ncurses 應用程序中隨處可見的藍色背景,例如:irssi、mc、tig……我想改變那種顏色,我該怎麼做?

我知道午夜指揮官有主題,但是所有 CLI 程序的全域設置呢?我發現settermLinux 和vidcontrolFreeBSD 中都有,但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 數據庫將序列發送到終端時才有效。

引用自:https://unix.stackexchange.com/questions/46352