tmux をv2.9 にアップグレードしたら出たエラー
tmux をv2.9 にアップグレードすると以下のようなエラーが出るようになりました。
/home/your-name/.tmux.conf:9: invalid option: pane-active-border-fg
/home/your-name/.tmux.conf:10: invalid option: message-bg
/home/your-name/.tmux.conf:12: invalid option: status-right-attr
/home/your-name/.tmux.conf:13: invalid option: message-fg
/home/your-name/.tmux.conf:14: invalid option: message-command-bg
/home/your-name/.tmux.conf:15: invalid option: status-attr
/home/your-name/.tmux.conf:17: invalid option: pane-border-fg
/home/your-name/.tmux.conf:18: invalid option: status-left-attr
/home/your-name/.tmux.conf:19: invalid option: window-status-fg
/home/your-name/.tmux.conf:20: invalid option: window-status-attr
/home/your-name/.tmux.conf:21: invalid option: window-status-activity-bg
/home/your-name/.tmux.conf:22: invalid option: window-status-activity-attr
/home/your-name/.tmux.conf:23: invalid option: window-status-activity-fg
/home/your-name/.tmux.conf:25: invalid option: window-status-bg
これはtmux をv2.9 系へ上げたことによっていくつかのオプションの記載方式が変わったためです。
このissue は既に挙げられています。
tmux がv2.9 にバージョンアップしたことに対してマイグレーションに関するissue が約3 日前から上がっている。これから自分のtmux 設定ファイルもマイグレーション始めるか💪https://t.co/fCoHvhDUPI
— tsutomu (@tsuna0x00) April 29, 2019
どのように修正すればよいか
今まで記載していたオプションを以下のように書式変更すれば良いです。
set -g pane-border-fg "colour236"
↓ ↓ ↓ ↓ ↓
set -g pane-border-style fg="colour236"
setw -g window-status-activity-bg "colour16"
setw -g window-status-activity-attr "underscore"
setw -g window-status-activity-fg "colour45"
↓ ↓ ↓ ↓ ↓
setw -g window-status-activity-style bg="colour16","underscore",fg="colour45"
新しく書式が変更されたオプションについては以下のものになります。
message-command-style
message-style
mode-style
pane-active-border-style
pane-border-style
status-left-style
status-right-style
status-style
window-active-style
window-status-activity-style
window-status-bell-style
window-status-current-style
window-status-last-style
window-status-style
window-style
修正する
tbutts 氏のmigration スクリプトを使うと簡単にできます。
- tbutts/tmux-migrate-options.py
これをtmux-migrate-options.py
というファイル名で保存して以下のようにコマンドを実行すればOK です。
$ wget https://gist.githubusercontent.com/tbutts/6abf7fb5b948c066bf180922fb37adcf/raw/198f744327a9924febdd11677f044a4ecd3f3c96/tmux-migrate-options.py
$ cp ~/.tmux.conf ~/.tmux.conf.org
$ python tmux-migrate-options.py ~/.tmux.conf.org > ~/.tmux.conf
$ diff ~/.tmux.conf.org ~/.tmux.conf
......
※.tmux.conf からsource-file
でファイルを別ファイルからインポートしている場合はそのファイルに対しても実行するようにしてください。
後方互換性も持たせたい場合
後方互換性も持たせたい場合はtmux.conf のif-shell 構文を使って以下のようにtmux のバージョンによって適用するオプションを変更することができます。
# ......
run-shell "tmux setenv -g TMUX_VERSION $(tmux -V | cut -c 6-)"
if-shell -b '[ "$(echo "$TMUX_VERSION < 1.9" | bc)" -eq 1 ]' \
"setw -g window-status-activity-bg 'colour16'; \
setw -g window-status-activity-attr 'underscore'; \
setw -g window-status-activity-fg 'colour45'"
"setw -g window-status-activity-style bg='colour16','underscore',fg='colour45'"
- 2019/05/06 @ttdoda さんのコメントより、v2.9未満から
foo-{fg,bg,attr}
スタイルを適用するのではなくv1.9未満から使うように修正
上記のようにすることでtmux v2.9 未満の場合は従来どおりのオプションを、v2.9 以上の場合は新しいオプション書式を適用するようになります。
以上でtmux v2.9 へのマイグレーションは完了です。
楽しいtmux v2.9 ライフを😎
参考
-
Tmux 2.8.X to 2.9.X migratio #1689
-
tbutts/tmux-migrate-options.py
-
How to write if statement in .tmux.conf to set different options for different tmux versions?