web-dev-qa-db-ja.com

ターミナルでRGB色の出力を有効にする方法は?

ANSIエスケープコードを使用してgnome-terminalに色付きの文字列を印刷しようとしていますが、カスタムカラーや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-terminalでRGBカラーコードを使用して何かを出力するにはどうすればよいですか?

出力のためにこのリンクをたどっています: Wikipedia ANSIエスケープコード

追加した:

$ export TERM=xterm-256color

256色をサポートするために私の.bashrcファイルに:

$ tput colors

重要な場合は256を出力します。

5
t.pimentel

次の理由により、RGBカラーは端末で使用できません。

  • Bashはコマンドラインの色を選択しません。
  • BashはANSI色のみを指定できます。

上記の2つの理由は非常に密接に関連しています。これらのほとんどは、画面とANSIカラー仕様に依存しています。適切なターミナルエミュレータを使用すると、特定のANSIカラーコードにカスタムRGBカラーを設定できる場合があります。

シェルとしてのBashは、画面がディスプレイでできることに関して無力です。端末上の単語を画面に渡すだけです。画面はそれをどうするかを決定できます。画面は、ANSIエスケープコードが表す色を決定できます(端末が色さえ許可する場合)。

回避策は、端末の色仕様を変更することです。ただし、色を変更できるものはほとんどありません(私は知りません)。

5
Kaz Wolfe

Gnome-terminalでトゥルーカラーを機能させるには、vte> = 0.36が必要です。 vteが十分に新しいことを確認してください。その場合、コードは動作するはずです。

(注:サンプルアプリケーションで行うようにハードコーディングされた文字列を出力する場合、$ TERMの値は必然的に絶対に無関係です。ncursesなど、動作がこれに依存するライブラリを使用している場合にのみ重要です。)

1
egmont