ターミナルにいるときに好きな配色がありますが、複数のソース(ローカル、PuTTY、ネットブックなど)から作業しているマシンにSSHで接続し、全体を通して同じ配色を維持したいと考えています。 。これは可能ですか?
特にPuTTYで欲しいです。 PuTTYの色を変更するのは難しいです。
承認された回答:
端子の色は2つのステップで決定されます:
- 端末で実行されているプログラムは、特定の色番号を使用するように端末に指示します。
- 端末は各色番号を色値に変換します。
Xtermには、色番号に関連付けられた色の値を変更するためのエスケープシーケンスがあります。 PuTTYがこのシーケンスをサポートしているかどうかは覚えていません。私はミンティがそうすることを知っています。
set_color_value () {
printf "\e]4;$1;$2\a"
}
set_color_value 4 '#6495ed' # set color 4 (blue) to CornflowerBlue
これらの設定は、端末のリセット後は存続しません。カーソル構成変更シーケンスを端末のリセット文字列に追加することで、この問題を克服できます。
- ncursesを使用するterminfoベースのシステムで、端末のterminfo設定を
infocmp >>~/etc/terminfo.txt
を使用してファイルに保存します 。説明を編集して、rs1
を変更します (基本リセット)シーケンス、例:rs1=Ec
を置き換えますrs1=EcE]4;4;#6495edE\
による 。一部のプログラムと設定では、rs2
を変更する必要がある場合があります (フルリセット)も。次に、terminfoの説明をtic ~/etc/terminfo.txt
でコンパイルします。 (これはディレクトリ$TERMINFO
の下に書き込みます 、または~/.terminfo
設定されていない場合)。 - termcapベースのシステムでは、termcapデータベース(通常は
/etc/termcap
)からtermcap設定を取得します。 )。is
を変更します (基本リセット)およびrs
(完全リセット)設定を追加するシーケンス(例::is=EcEcE]4;4;#6495edE\:
。TERMCAP
を設定します 編集された値に対する環境変数(:
で始まり、終わる 。
これで、このようなものを~/.profile
に入れることができます :
if [ "$(ps -p $PPID -o comm=)" = sshd ] &&
[ "$TERM" = "xterm" ]; then
set_color_value … # set color scheme
TERMCAP=… # if necessary
fi