如何在終端機中啟用 RGB 彩色輸出?

如何在終端機中啟用 RGB 彩色輸出?

我正在嘗試使用 ANSI 轉義程式碼將彩色字串列印到 gnome 終端,但是,儘管它適用於自訂顏色,甚至 256 額外顏色,但它不適用於 RGB 程式碼。

所以,簡化一下:

cout << "\033[33m" << '.' << "\033[0m"; # prints with color
cout << "\033[38;5;135m" << '.' << "\033[0m"; # prints with color
cout << "\033[38;2;0;135;0m" << '.' << "\033[0m"; # doesn't work, prints with default color

如何在 gnome 終端機輸出帶有 RGB 顏色代碼的內容?

我正在關注此連結以獲取輸出:維基百科 ANSI 轉義碼

我補充道:

$ export TERM=xterm-256color

我的 .bashrc 檔案支援 256 種顏色並且:

$ tput colors

輸出 256(如果這很重要)。

答案1

由於以下原因,RGB 顏色不能在終端機中使用:

  • Bash 不選擇命令列顏色。
  • Bash 只能指定 ANSI 顏色。

上述兩個原因是緊密相連的。其中大部分取決於您的螢幕和 ANSI 顏色規格。如果您使用良好的終端模擬器,您也許能夠為某些 ANSI 顏色代碼設定自訂 RGB 顏色。

Bash 作為 shell 對於螢幕可以對顯示器執行的操作無能為力。它只會將終端機上的文字傳遞到螢幕上。螢幕可以決定如何處理它。螢幕可以決定 ANSI 轉義碼代表什麼顏色(如果終端允許顏色)。

解決方法是更改​​終端顏色規格。然而,很少(我不知道)會允許你改變顏色。

答案2

您需要 vte >= 0.36 才能讓真彩色在 gnome 終端機中運作。確保您的 vte 足夠新,在這種情況下您的程式碼應該可以工作。

(注意:當您輸出硬編碼字串時,正如您在範例應用程式中所做的那樣, $TERM 的值必然是絕對不相關的。僅當您使用其行為依賴於此的程式庫(例如ncurses)時,它才重要。

相關內容