xtermなどの端末で最大RGB値(白)を決定します。

xtermなどの端末で最大RGB値(白)を決定します。

端末が主に暗いか明るいかを確認する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.

ffffxterm は 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のスクリーンショットです。スクリプトそれがすることは: xtermとquery-colors.pl

私はいくつかの異なる端末エミュレータをチェックしました。答えたものはRGBコンポーネントを使用し、その中で最大のものはANSIに対応していました(答えた3つのうち2つは実際に報告していませんが)。米国国立標準協会カラー -ymmv)。

おすすめ記事