tmuxを使ってセッションを新しく作ると、最後に作ったセッションの次の番号がセッション名として使われる。端的に言えばSQLのINCREMENTのような仕様となっている。
たとえば、セッション作成を二回行うと、セッション0
と1
ができている。この状態でセッション1
を閉じる。そのあとセッション作成すると、セッション2
が作られてしまう。このとき作成されるセッションの名前は1
であってほしいな〜というのが今回のネタである。
どうするかというと、tmux自体にセッション番号を詰めて割り振る機能はないので、session-created/closedのフックにスクリプトを挟み込むことで実現する。主に Feature request: new option renumber-sessions in addition to renumber-windows · Issue #937 · tmux/tmux の解説となる。
実装
.tmux.conf
に
set-hook -g session-created "run ~/dotfiles/bin/tmux-reorder-sessions.sh"
set-hook -g session-closed "run ~/dotfiles/bin/tmux-reorder-sessions.sh"
みたいに書いておく。ファイル名は何でもいい。スクリプトでは『数字名のついたセッションを見つけ出し、sortして、それぞれに新たに0から名前を振り直す』ようにする。
#!/usr/bin/env bash
sessions=$(tmux ls | grep -E '^[0-9]*:' | cut -f1 -d':' | sort)
new=0
for old in $sessions
do
tmux rename -t $old $new
((new++))
done
こんな感じ。それではみなさん良いtmuxライフを。