tmux: tmux 2.7でデフォルトでウィンドウ名が変更されない

Fedora 28で使われているtmux 2.7がデフォルトでウィンドウ名を変更しなくなっていたので、この記事ではその回避策を記載します。

1 PROMPT_COMMAND

環境変数PROMPT_COMMANDを設定しておくことで、tmuxとscreenのウィンドウ名を動的に変更することができます。

これはtmuxとscreenで複数のホストにSSHで接続したりする場合は便利です。

  • cdでディレクトリを変更した時にウィンドウ名も更新される。
  • SSHで接続したホストでPROMPT_COMMANDを設定しておけば、ウィンドウ名がSSH接続したホストのものになるので区別しやすい。
$ cat ~/.bashrc
<snip>
case ${TERM} in
  screen*)
    export PROMPT_COMMAND='printf "\033k%s:%s\033\\" \
"${HOSTNAME%%.*}" `basename "${PWD/#$HOME/~}"`'
    ;;
  *)
    unset PROMPT_COMMAND
    ;;
esac

2 tmux 2.7でデフォルトでウィンドウ名が変更されない

tmux 2.7ではPROMPT_COMMANDを設定していても、以下のようにウィンドウ名が動的に変更されません。

allow-renameのデフォルト値が1から0に変更されたためです。これはウィンドウ名をウィンドウ作成時に固定したいユーザのための措置のようです。

0001_tmux-window-name-is-not-renamed.png

3 set-option -g allow-rename on

~/.tmux.confでallow-renameを1に変更します。

set-option -g allow-rename on

tmux 2.7でもPROMPT_COMMANDがで下のようにウィンドウ名を動的に変更されるようになりました。

0002_tmux-window-name-is-renamed.png