tmuxでアクティブpaneかどうかでの色分けをpane_synchronizedに応じて切り替える

普段あまりtmuxを使っていないのだけど、tmux.confの設定でアクティブなpaneかどうかで色を分けるといった対応をしていたりする。 ↓こんな感じ。

で、pane_synchronizedかどうかに応じてこのアクティブなpaneだけ色を変えるのをtmux.confで変更したいということがあったので、その備忘。 対処方法だが、ちょうど自分がpane_synchronizedの切り替えをショートカットキーでトグル切り替えで処理していたので、以下のようにtmux.confに記述することで対処した(自分のtmux.confから抜粋)。

#-------------------------------------------------------#
# キーバインド
#-------------------------------------------------------#
# Ctrl-I で複数Paneへの入力モードに変更(Toggle)
bind -n C-i setw synchronize-panes \; display "synchronize-panes #{?pane_synchronized,on,off}"\; if-shell 'test #{pane_synchronized} -eq 1' 'set -g window-style "fg=colour250 bg=black"' 'set -g window-style "fg=colour247 bg=colour236"'

#-------------------------------------------------------#
# Pane
#-------------------------------------------------------#
# アクティブなPaneと非アクティブなPaneで色を変化させる($TMUX_VERSIONが2.1以上の場合)
# - window-style .. 非アクティブウィンドウ
# - window-active-style .. アクティブウィンドウ
if-shell -b '[ $(echo $TMUX_VERSION|awk "{if(\$0>=2.1){print 1}}") = 1 ]' " \
    set -g window-style 'fg=colour247,bg=colour236'; \
    set -g window-active-style 'fg=colour250,bg=black';"

実際に動いてるのは↓。大体こんな感じ。

(ssh接続先ごとでのターミナル背景色の切り替えと相性が悪いのもあって)今まであまりtmuxをつかってこなかったのだが、今後はもっと使うようにしたいなぁという気持ち。 tmux.confの書き方がバージョンによって動いたり動かなかったりするので、ssh経由でローカルのtmux.confを読ませるときのためにいちいちif-shellで分岐を頑張る必要があるのはちょっとツライなぁ…。なんかいい方法ないものか…。 f