ばうあーろぐ TOP へ戻る

tmux で自動起動するついでにセッション管理もする

tmux の自動起動周りに少し不満があって、 zshrc に以下の記述を追加しました。

# 初期に用意されているセッション
# "prefix -> (" or "prefix -> )" でセッション切り替え
TMUX_INITIAL_SESSIONS=(
"config"
"works"
"personal"
)

# 初期セッションが存在していなかったらバックグラウンドで作る
for tmux_session in ${TMUX_INITIAL_SESSIONS[@]}
do
  if ! $(tmux has-session -t ${tmux_session} 2> /dev/null)
  then
    tmux new-session -d -s ${tmux_session}
  fi
done

# tmux が起動中でなければ attach する
if [ -z "$TMUX" ]
then
  tmux attach-session -t "${TMUX_INITIAL_SESSIONS[0]}"
else
fi

基本的に書いてある通りなのですが、 自分であらかじめ用意したいセッションを変数(TMUX_INITIAL_SESSIONS)に入れておきます。 別に他の名前でも良いです。

TMUX_INITIAL_SESSIONS=(
"mysession1"
"mysession2"
"mysession3"
)

シェルが立ち上がるたびに、そのセッションがなければバックグラウンドで作ります。

if ! $(tmux has-session -t ${tmux_session} 2> /dev/null)
then
  tmux new-session -d -s ${tmux_session}
fi

これで常に TMUX_INITIAL_SESSIONS にある名前のセッションは存在していることになるので、 TMUX 変数に何らかセットされていない場合に限って attach すれば良いことになります。

もし記事内に誤りなどございましたら、 @girigiribauer までご一報いただけると助かります。