xterm-256color端末のデフォルトカラーパレットを変更できますか?

xterm-256color端末のデフォルトカラーパレットを変更できますか?

通常の16色xtermを使用すると、 "*color0:#"〜 "*color15:#"コマンドを使用して.Xresourcesファイルの色値を再割り当てできることがわかりました。

より多くの色を使用することを目的としてxterm-256colorに切り替えましたが、色の再割り当てはもはや機能しないようです。

256パレットを再配布する方法はありますか?それとも、より多くのカラーオプションを許可する別のxterm設定がありますか?

答え1

エスケープシーケンスを使用してパレットをプログラムするか、またはtput

一つあるxterm ソースコードのスクリプトエスケープシーケンスを表示します。

256色(デフォルト)

そしてスクリプトを使ってパレットを反転させます。

256色(反転)

それはxterm確かに。 xtermに似たいくつかのツールはこの機能を(部分的に)実装するのに時間がかかりましたが、一部はまだ実装していません。

あなたできる256色のリソースをサポートするようにxtermをコンパイルしますが、次のUTF-8が失われます。手動:

           Resources past color15 are available as a compile-time option.
           Due to a hardcoded limit in the X libraries on the total number
           of resources (to 400), the resources for 256-colors are omitted
           when wide-character support and luit are enabled.  Besides
           inconsistent behavior if only part of the resources were
           allowed, determining the exact cutoff is difficult, and the X
           libraries tend to crash if the number of resources exceeds the
           limit.  The color palette is still initialized to the same
           default values, and can be modified via control sequences.

答え2

"*color16"と友達が.Xresourcesで動作しているかどうかはわかりません。そうでなければ、なぜできないのかわかりません。

ただし、OSC 4エスケープシーケンスを使用して実際の色を動的に変更できます。たとえば、色16を#abcdefに変更するには、次の手順を実行する必要があります。

echo -ne '\e]4;16;#abcdef\a'

.bashrc出力が端末(if [ -t 1 ]; then...)に移動した場合、またはシェルが対話型(で「i」検索)の場合は、これらのステートメントを入れることができるため、$-scp / rsyncは中断されません。

これはサポートされています一部xtermやvte(gnome-terminalなど)を含む端末エミュレータですが、konsoleなどの他のエミュレータはあまりありません。

最初の16色はすべての端末エミュレータで異なるため、好みの値の設定を提供します(エミュレータに応じて、設定ファイルまたはグラフィック設定ダイアログボックスを介して)。しかし、私が知っている限り、追加の232色(6×6×6カラーキューブ+ 24グレースケール)の色は、すべての端末エミュレータでまったく同じです。これを再定義することで、「すべての人」から遠ざかります。これはおそらく最善のアイデアではないでしょう。

トゥルーカラーサポートも確認できます。ただし、可用性は非常に限られています。一部の一般的な端末エミュレータ(gnome-terminalやkonsoleなど)はこれをサポートしていますが、残念ながら他の一般的なエミュレータ(xtermやuxrvtなど)はサポートしていません。また、ほとんどすべてのアプリケーションでサポートされていませんが、エスケープシーケンスを手動で実行する場合(たとえば、シェルプロンプトや単純なスクリプトなど)、使いやすいです。

関連情報