screen でウィンドウタイトルを自動設定する方法

久しぶりにちょっと dot ファイルをいろいろといじっていたのでついでに書いておく。man screen に載っている内容だけど簡潔に。シェルは zsh を使っているとする。

.zshrc

local SETTITLE=$'\033k\033\134'
PROMPT=$SETTITLE'> '

.screenrc

shelltitle '> |zsh'
caption always '%{=r dd} %-w%{=b dd} %n %t %{-}%+w %='

ポイント

  • シェルのプロンプトに空のタイトル文字列用エスケープシーケンスを含めること
    • この例では空のタイトル文字列用エスケープシーケンスを SETTITLE に設定して連結しているけど、別に意味はない
    • 直接
      PROMPT='^[k^[\> '
      とかしてもいい
      • ^[ はエスケープコードで vim なら Ctrl+v ESC で入力できる。Emacs なら確か Ctrl+q ESC
  • プロンプトの最後の部分とshelltitleの最初の部分を一致させること
    • この例では両方とも
      > 
      で一致している
    • shelltitle で指定している | 以降の文字列(zsh)はデフォルトのタイトル

まとめ

とりあえず man 読め。