最近、 ローカルにおいてあるtmux.confをリモートサーバで利用する ことが多いのだけど、その時にリモートサーバのtmuxのバージョンが古いとうまく動かないことがある。 そのため、特定の設定についてtmux.conf側でバージョンに応じて読み込みをさせる必要がでてきた。

調べて知ったのだが、実はtmuxではShellのコマンドを叩くことができるようで、以下の様に一度tmuxのバージョンを変数に代入したりして、それを参照させて分岐させることができるようだ。

# 環境変数TMUX_VERSIONにバージョンを代入
run-shell "tmux setenv -g TMUX_VERSION $(tmux -V | cut -c 6-)"

# TMUXのバージョンに応じて処理を切り替える
if-shell -b '[ "$(echo "$TMUX_VERSION < 2.1" | bc)" = 1 ]' \
    "set -g mouse-select-pane on; set -g mode-mouse on; \\
     set -g mouse-resize-pane on; set -g mouse-select-window on"

if-shell -b '[ "$(echo "$TMUX_VERSION >= 2.1" | bc)" = 1 ]' \
    "set -g mouse on"

知らなかった。 これを利用すれば、バージョンごとに読み込ませる設定を指定できそうだ。