146
62

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

tmux v2.9 マイグレーションガイド 〜 tmux をv2.9 に上げたらinvalid option エラーが出た

Last updated at Posted at 2019-04-29

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 は既に挙げられています。

どのように修正すればよいか

今まで記載していたオプションを以下のように書式変更すれば良いです。

例)オプションの変更例
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 スクリプトを使うと簡単にできます。

これを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 のバージョンによって適用するオプションを変更することができます。

tmux.conf内に書く例
# ......
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 ライフを😎

参考

146
62
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
146
62

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?