GNU screen で ssh ログインしたウィンドウを複数開いてると、hardstatus に表示してるウィンドウタイトル一覧が
... 3 ssh 4 ssh 5 ssh 6 ssh 7 ssh 8 ssh 9 ssh ...
ってなって、ちょっとよくわかんないので、どうにかしてスクリーンショットみたいにした。
やり方
基本は、gist においたスクリプト screen_ssh.sh に書いてある。
ざっと説明すると
- screen_ssh.sh をダウンロード して好きな場所に配置
-
~/.ssh/config
の先頭に、三行追加
Host *
PermitLocalCommand yes
LocalCommand /path/to/screen_ssh.sh $PPID %n %r
... 以下もともとあった設定
/path/to/screen_ssh.sh
は実際に screen_ssh.sh
をおいた場所を書く。
ウィンドウタイトルの形式は、screen_ssh.sh
の変数 TITLE
を好きなように書き換えればいい。
補足
LocalCommand /path/to/screen_ssh.sh $PPID %n %r
って書いた部分の、%n
を %h
にすると、ssh
で引数として書いたホスト名じゃなくて、逆引き?したもっと正確なホスト名になります。よくわかってないので man ssh_config
の LocalCommand
見てください。
困ってること
この方法は、screen ssh foobar
って感じでウィンドウ生成しつつ ssh 接続する時に有効なんだけど、この状態で ssh foobar
ってやると、シェルのウィンドウタイトル書き換えてしまうのに違和感を覚える。
とりあえず、zsh の precmd_funtion
にウィンドウタイトル更新するやつ書いてなんとなく納得してる。
理想を言えば、screen_ssh.sh
内で、新たに生成された screen ウィンドウであることが分かればいいんだけどどうしたものか。
おわり
以上です。
そういえば LocalCommand
の設定がかち合った時どうなるんだろう。