私はLinuxターミナルの256のテキストカラーをすべて活用するプログラムを書くのが好きです。しかし、これまで「\033[1;NUMmNUM\033[1;m」)形式のカラーコードをいくつか見つけました。ただし、これらのエスケープコードは20〜30色のみを受け入れます。いいえLinux端末では256を許可する必要があります。自分のアプリケーションに異なる色を表示するにはどうすればよいですかcurses
?
答え1
設定で確認できますTERM
。以下に設定される可能性があります。有能なひも。色をテストするには、GNUを実行できます。msgcat
。たとえば、次のようになります。
echo $TERM
msgcat --color=test
TERM=xterm-256color
msgcat --color=test
または使用@イグナシオバスケス - アブラムスmsgcatの代わりにループを実行してください。
詳しくはどのようにたとえば、何を設定するのか見てみましょう。
- 256カラーターミナル
- 用語文字列
- 256色のTTY?
- …など。
答え2
エスケープコードの使用を中止し、setaf
terminfo機能を使用してください。
$ for i in $(seq 0 $(tput colors) ) ; do tput setaf $i ; echo -n "█" ; done ; tput setaf 15 ; echo
答え3
TERM
tput
端末がサポートする色の数と、前景(setaf
)と背景()を設定する方法を教えてください(および端末データベースを使用する他のアプリケーション)。setab
サンプルスクリプトは終了しますが、正しくリセットされません。
for i in $(seq 0 $(tput colors) ) ; do tput setaf $i ; echo -n "█" ; done ; echo ; tput op
以下は、説明するためのxtermのスクリーンショットです。
とにかくmsgcat
、ターミナルデータベースを使用しますが、ターミナルのカラー機能についてハードコードされた仮定をします。これらの一部は再検討する必要があります。例えば、コーディングエラーが記録される。この行:
(strlen (term) >= 4 && memcmp (term, "rxvt", 7) == 0)