自分のローカルコンピュータの端末の色をSSH接続しているコンピュータの端末の色に設定できますか?

自分のローカルコンピュータの端末の色をSSH接続しているコンピュータの端末の色に設定できますか?

端末にいるときに好きなカラースキームがありますが、複数のソース(ローカル、PuTTY、ネットブックなど)で作業しているコンピュータにSSHで接続し、常に同じカラースキームを維持したいと思います。可能ですか?

私は特にこれをPuTTYで使用したいと思います。 PuTTYの色を変えるのは難しいです。

ベストアンサー1

ターミナルカラー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設定を.terminfo拡張子を持つファイルに保存しますinfocmp >>~/etc/terminfo.txtrs1(デフォルトリセット)順序を変更するには、説明を編集してください(例:rs1=\Ecに置き換える)rs1=\Ec\E]4;4;#6495ed\E\\。一部のプログラムや設定を変更rs2(完全リセット)する必要があります。次にterminfoの説明をコンパイルしますtic ~/etc/terminfo.txt(この説明はディレクトリに書き込まれているか$TERMINFO設定され~/.terminfoていない場合)。
  • termcapベースのシステムでは、/etc/termcaptermcapデータベースからtermcap設定(通常は)を取得します。is(デフォルトリセット)と(フルリセット)シーケンスを変更してrs設定を追加します(例:):is=\Ec\Ec\E]4;4;#6495ed\E\\:。環境変数をTERMCAP編集した値(で始まり終了:)に設定します。

これで、次の内容を次のように配置できます~/.profile

if [ "$(ps -p $PPID -o comm=)" = sshd ] &&
   [ "$TERM" = "xterm" ]; then
  set_color_value … # set color scheme
  TERMCAP=…  # if necessary
fi

おすすめ記事