Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
59
Help us understand the problem. What is going on with this article?
@TsutomuNakamura

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

More than 1 year has passed since last update.

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 ライフを😎

参考

59
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
TsutomuNakamura
Linux 好きなプログラマです。 コミュニケーションはお気軽にしていただけると幸いです。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
59
Help us understand the problem. What is going on with this article?