簡単に言えば、 2018 年 1 月にncurses 6.1がリリースされるまで、terminfo から情報を取得できなかったということです。
より長い答え:
- TrueColor を効果的に使用するには、3 つのパラメーター ( red、green、blue )を処理するインターフェイスが必要です。Termcap はこれを行うことができません。Terminfo は複数のパラメータを処理できますが...
- TrueColor 自体を扱う標準の端末機能(ブール値、数値、または文字列である機能の名前) はありません。
- 既存の機能を適応させることはできますが、制限があります
terminfo(5)マニュアルを見ると、次の (文字列) が表示される場合があります。
initialize_color initc Ic initialize color #1
to (#2,#3,#4)
initialize_pair initp Ip Initialize color
pair #1 to
fg=(#2,#3,#4),
bg=(#5,#6,#7)
これら(数字)に関連するもの:
max_colors colors Co maximum number of
colors on screen
max_pairs pairs pa maximum number of
color-pairs on the
screen
ANSI の色とそれらと互換性のあるスキーム (16 色、88 色、256 色など) は、前景と背景をペアで色付けしていることを前提としています。その理由は、ずっと前にハードウェア端末がそのように機能したからです。このinitialize_color
機能は、別のスキーム (Tektronix) 用であり、便利に見えるかもしれません。
ただし、terminfo はコンパイルされ、結果のバイナリ ファイルには符号付き 16 ビット整数のみが格納されます。max_pairs
端末の説明を使用して、適切な色または max_colors
24 ビット色を格納することはできませんでした。(termcap はすべてを文字列として格納しますが、前述のように、このアプリケーションには適していません)。
この質問と回答が最初に書かれてから数年後、terminfo が更新され、符号付き 32 ビット整数を使用する新しいファイル形式を使用するようになりました。これは、24 ビット RGB カラーで色数を表現するのに十分です。
詳細については、ncurses 6.1のリリース発表と更新されたマニュアル ページを参照してください。term(5)
マニュアル ページでは、terminfo データに直接アクセスする一部のアプリケーションで使用される古い API にはまだ制限があることを指摘しています。
参考文献: