ターミナルで256色カット

ターミナルで256色カット

さまざまな環境で256色を有効にする方法に関する質問がたくさんあります。私はその反対を望んだ。すべてのアプリを私が自分で選択した16のカラーパレットに制限しました。その理由は、アプリケーションが読みにくい色を使用しないようにしたいからです。

bashrcで設定しようとしましたが、TERM=xterm明らかな効果はありませんでした。

ベストアンサー1

これはいくつかの理由で不可能です。

アプリケーションは依然としてさまざまなカラーシステムを使用して、端末で使用する色を知らせます。 ECMA-48:1976のオリジナル1970年代8色システム、1990年代AIXterm 16色システム、ISO 8613-6/ITU T.416索引1990年代のカラーシステムとISO 8613-6/ITU T.416直接1990年代のカラーシステム。

最初の理由:これら4つのうち3つが、このカラーパレットに関連しています。 直接色の場合はそうではありません。アプリケーションが直接カラーコントロールシーケンスをエクスポートしている場合は、アプリケーションを直接再構成または再コーディングして(何らかの方法で)使用される色を変更する場合を除き、その色を変更することはできません。 (一部の端末エミュレータは直接色をうまくサポートしておらず、直接色制御シーケンスを使用するように指示されたときにパレットを含みますが、これは最も近い一致メカニズムの1つであり、合理的に効率的な制御形式を提供しません。エミュレータは一般的なものではありません。)また、TUIアプリケーションには汎用の「カラースキーム」ユーザー設定システムはありません(一部のGUIアプリケーションのGUIにはこれらのシステムがあります)。

2番目の理由:パレットが16項目ではありません。 これらのパレットを持つほぼすべての端末エミュレータには、256のVGAスタイルのアイテムパレットがあり、これは8色と16色の制御シーケンスで使用されているものと同じパレットです。 (Microsoftターミナルの人々はこれを別々に維持する可能性を考慮しましたが、私が知っている限り、実際にそうしたターミナルエミュレータの作成者はいません。)パレット自体にmod-16またはmod-8の制限はありません。

3番目の理由:16色は簡単ではありません。 カラーターミナルが出たとき、最初は(一部の詳細は無視して)8つの標準色がありました。 16の色は拡張であるため、太字、点滅、および下線のテキスト属性を色と混同する可能性があります。汚れた履歴と詳細はこの回答の範囲を超えており、最終的には汚れた部分を整理しなければならないという圧迫感がありますが、結果はそうです。16色のうち少なくとも8色をいつ、どのように取得できるかについては意見が分かります。お客様の申請書が必ずしもお客様の要求に同意するわけではありません。

皮肉なことに、あなたが設定したアイデアは特に深刻な分裂を引き起こす方法の1つであるため、TERM特に悪いです。linux(また、次の事実を無視します。使用している端末と一致しない誤った端末タイプを設定することはお勧めできません。今すぐそれ自体が答えです.) これはアプリケーションに通知する方法の1つです。使用しないでくださいAIXtermは16色システムですが、代替色属性を乱用する8色システムを使用しています。

4番目の理由:16色は簡単ではありません。 残念ながら、一部の端末エミュレータは、画面の「明るい/暗い背景」設定や反転ビデオプロパティなどの項目に基づいて、パレットの最初の16項目を動的に変更します。彼らはあなたとあなたの申請書よりもよく知っているからです。 ☺

5番目の理由:ターミナルとターミナルエミュレータではこれを設定できません。 アプリケーションがこれらの制御シーケンスを発行すると、256色のインデックス色または24ビット直接色を理解できないことを端末(エミュレータ)に通知できません。私が知る限り、端末エミュレータには制御シーケンス処理を色に変換するスイッチはありません。去る

したがって、人ができる唯一のことはアプリケーションに通知することです。送信しない端末に理解を拒否するように指示する代わりに、シーケンスを制御します。理論は(正しい)ターミナルタイプは環境変数に-16coloror-monoまたは類似のサフィックスを付けます。TERMこれは、terminfoライブラリが色分けのための制御シーケンスで生成できることを制限するので、アプリケーションはこれ以上の色を指定する方法を知りません。これは6番目の理由につながります。

6番目の理由:アプリケーションはterminfoを使用せずに色を固定する傾向があります。 繰り返しますが、この回答の範囲外の歴史の混乱がありますが、誰もがterminfosetabsetaf関数を使用しているという考えは無駄な夢です。 ㅏたくさんのアプリケーションには、色制御シーケンスがコードに直接組み込まれています。これには、PythonやGoなどのプログラミング言語で書かれたアプリケーションが含まれています。 (私が出会ったこのPython、例えば、少し前の場合です。 )しかし、Cで書かれたいくつかの一般的なGNUツールでもこれが行われることがわかります。

おすすめ記事