端末エミュレータがサポートする色数を確認する信頼できる方法はありますか?
echo $TERM
はxterm
を出力しますが、不明確端末エミュレータがサポートする色の数を教えてくれますか?この情報を確実に確認するにはどうすればよいですか?
$TERM
の値は、サポートされている色の数に関する情報をあまり提供しません。多くの端末は自分自身をxterm
としてアドバタイズし、任意の数の色をサポートする可能性があります(2、8、16、88、256が一般的な値です)。
OSC 4 ; c ; ? BEL
制御シーケンス を使用して、各色の値を照会できます。色番号c
がサポートされていて、端末がこの制御シーケンスを理解している場合、端末は色の値で応答します。色番号がサポートされていない場合、または端末がこの制御シーケンスを理解していない場合、端末は何も応答しません。以下は、カラー42がサポートされているかどうかを照会するためのbash/zshスニペットです(必要に応じて、ターミナルに/からリダイレクトします)。
printf '\e]4;%d;?\a' 42
if read -d $'\a' -s -t 1; then … # color 42 is supported
人気のある端末の中で、xtermおよびVTEライブラリに基づく端末(Gnome-terminal、Terminator、Xfce4-terminalなど)は、この制御シーケンスをサポートしています。 rxvt、konsole、screen、およびtmuxはサポートしていません。
もっと直接的な方法は知りません。
端末にすべての色を表示するPerlスクリプト256colors2.plがあります。
使用できます
$ tput colors
私のdebianインストールでは、tputはデフォルトでインストールされるncurses-bin
パッケージの一部です。