web-dev-qa-db-ja.com

端末エミュレータがサポートする色の数を確認する

端末エミュレータがサポートする色数を確認する信頼できる方法はありますか?

echo $TERMxtermを出力しますが、不明確端末エミュレータがサポートする色の数を教えてくれますか?この情報を確実に確認するにはどうすればよいですか?

21

$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があります。

11
SSD

使用できます

$ tput colors

私のdebianインストールでは、tputはデフォルトでインストールされるncurses-binパッケージの一部です。

9
Victor Klos