SSHセッションで端末テキストの色を異なる設定

SSHセッションで端末テキストの色を異なる設定

リモートホストのカラー設定を変更せずにSSHセッションで自分の端末(konsole)に別のテキストカラーを表示させる方法はありますか?たとえば、自動的に別のプロフィールに切り替えますか?

Konsoleはこれらのさまざまな「プロファイル」を使用できます

代替テキスト

デフォルトでは、SSHセッション内で別のプロファイルに変更したいと思います。したがって、黒の背景のデフォルトの緑色のテキストを白い背景の黒いテキストなどに変更しないでください。

このプロファイル設定を使用する必要はありません。しかし、xtermや何かがそのような設定を持っているなら、それも大丈夫でしょう。

アイデアは、特定のシステムの特定のセッションだけでなく、すべてのSSHセッションで作業することです。

答え1

1つの可能性は、端末がサポートしている場合、端末の色の変更エスケープシーケンスを使用することです。明らかにkonsoleはそれをサポートしていません。 Xterm制御シーケンス文書(ctseq):

OSC PS;プラチナベル

Ps = 4; C;仕様 -> 色番号 c を仕様に指定された色、つまり XParseColor 名または RGB 仕様に応じて変更します。 c - 名前のペアは任意の数だけ提供できます。カラー番号は、ANSIカラー0〜7、明るいバージョン8〜15、残りの88または256カラーテーブル(サポートされている場合)に対応します。

これは、制御の順序によって色の外観が変化することを意味する。\e]4;NUMBER;VALUE\a数字数字色番号です(0〜7は8つの基本色を表し、8〜15は明るいバージョンを表し、端末がより多くの色をサポートしている場合はそれ以上を示します)。これこんなことX解析色たとえば、RGB仕様を理解し#123456たり、Xカラー名rgb.txt(コンピュータで閲覧したり、xcolors可能性を確認したりするために使用してください)。

たとえば、次のコマンドは、いくつかの緑を含むようにデフォルトの青(色4)と明るい変形(4+8)を変更します。

printf '\033]4;4;#004080;12;#0040ff\007'

これにより、現在特定の色で表示されているウィンドウのすべての文字が変更されます。後で表示される文字の色の意味を変更する方法はありません。必要に応じて、端末と通信するときに異なる色番号を使用するように端末内に表示される各プログラムを構成する必要があります。

sshセッションで入力するときにこれが発生するのは非常に複雑ですが、一般的なケースを処理するのは非常に簡単です。 ssh用ラッパーを使用してパレットを変更し、sshを実行して最後にパレットを再変更します。処理できない状況の例には、sshプロセスの中断、screenまたはtmux内でsshを実行するなどがあります。

答え2

Konsoleの設定タブの1つに、「私のシェルの代わりにカスタムコマンドを実行する」のようなものがありますか?

その場合は、次のことができます。 (これは私がGnomeターミナル用に設定したものなので、Konsoleに対して少し調整する必要があるかもしれません。Konsoleと違いがある場合は喜んで更新します。)

  1. 目的のカラースキームでプロファイルを作成します。
  2. 「カスタムコマンドの実行」ボックスをチェックしてください。
  3. ssh [remote host alias]「Custom Command」テキストボックスに入力します。
    • ローカル端末のように実行して入力するときにタブを閉じるには、exit「コマンドが終了したとき:端末を終了する」(またはそれに対応する項目)を選択します。

この設定を有効にすると、選択したプロファイルを含む新しいタブを開くと自動的にSSHセッションに接続され、目的のカラースキームが適用されます。

しかし、これはSSH接続では機能しないという欠点があります。 (上記のように各SSH接続に設定ファイルを設定する必要がありますが、リモートホストに入るようにスクリプトを作成することはできます。プロファイルを開く)、デフォルトのプロファイルに設定しない限り、そのプロファイルを具体的に開く必要があります。 。

答え3

xterm(およびいくつかの他のX11端末エミュレータ)で背景色と前景色を変更する順序はと\33]11;black\7です\33]10;green\7xtermcontrol簡単に作成するコマンドがあります。

xtermcontrol --bg black --fg green

したがって、ssh コマンドを次のようにオーバーライドできます。

ssh() {
  [ -t 2 ] && xtermcontrol --bg black --fg green
  command ssh "$@"
  [ -t 2 ] && xtermcontrol --bg white --fg black
}

関連情報