端末が主に暗いか明るいかを確認する1つの方法は、背景色の値を取得してグレーと比較することです。
しかし、これを行うには、白のRGB値が何であるかを知る必要があります(その半分を占めます)。
一部の端末では 0xff+0xff+0xff、他の端末では 0xffff+0xffff+0xffff です。
これらの2つの可能性(存在する場合は他の可能性)のいずれがシェルスクリプト内に存在するかを確認する方法についてのアイデアはありますか?
注:これは次のようになります。暗いまたは明るい端末の背景を設定するためのパブリック環境変数しかし、質問はやや狭いです。
ベストアンサー1
おそらく、次のようなクエリを使用しています。XTerm制御シーケンス:
OSC Ps ; Pt BEL
OSC Ps ; Pt ST
Ps = 4 ; c ; spec -> Change Color Number c to the color
specified by spec. This can be a name or RGB specification as
per XParseColor. Any number of c/spec pairs may be given.
The color numbers correspond to the ANSI colors 0-7, their
bright versions 8-15, and if supported, the remainder of the
88-color or 256-color table.
If a "?" is given rather than a name or RGB specification,
xterm replies with a control sequence of the same form which
can be used to set the corresponding color. Because more than
one pair of color number and specification can be given in one
control sequence, xterm can make more than one reply.
ffff
xterm は X マンページで好まれる形式なので、4 桁の数字を使用します。
The eight primary colors can be represented as:
black rgb:0/0/0
red rgb:ffff/0/0
green rgb:0/ffff/0
blue rgb:0/0/ffff
yellow rgb:ffff/ffff/0
magenta rgb:ffff/0/ffff
cyan rgb:0/ffff/ffff
white rgb:ffff/ffff/ffff
この制御シーケンスに応答して任意の端末から返されたビット数を検出するスクリプトを作成する必要がある場合は、色1、2、4の赤、緑、青のコンポーネントを見てみましょう。 、これらはまだ「白」と同じビット数で使用されます。
これはxtermのスクリーンショットです。スクリプトそれがすることは:
私はいくつかの異なる端末エミュレータをチェックしました。答えたものはRGBコンポーネントを使用し、その中で最大のものはANSIに対応していました(答えた3つのうち2つは実際に報告していませんが)。米国国立標準協会カラー -ymmv)。