tmuxのステータスバー


## tmuxのステータスバーを格好良く表示したい。

書き方がとても面倒だし、せっかくマニュアルを参考にして書いても、格好良く表示されない。
vimのpowerlineやvim-airline、lightlineのようなステータスバーを見た覚えがあって、ググって調べたら、tmuxline.vimという宝物を見つけた。
tmuxline.vimはtmuxのステータスバーを作るためのジェネレーターである。
tmuxline.vimを使えば、これ以上tmuxのマニューアルを見ながら書き方を学ばなくてもいい。

### 注意点

* tmuxを先に起動
  - tmuxが起動された場合、vimの編集画面でステータスバーが確認される。
  - .vimrcを開き、tmuxline.vimを編集したあと.vimrcをリロードすることで作りたいステータスバーが確認される。
  - しかし、tpmで起動されるpluginの場合、vimの編集画面では表示されない。あくまでvimの編集画面でのことでtmux上ではちゃんと表示される。
* vimのpluginとしてpowerline、vim-airline、lightlineのいずれか一つが必要

### 使い方

tmuxline.vimを設置する。
ここではvim plugin managerとして[vim-plug](http://qiita.com/park-jh/items/226fdc6c6ea7a7598616)を使っている。
作りたいステータスバーのpresetとthemeを指定する。
下記の設定は[tmuxline.vimのreadme](https://github.com/edkolev/tmuxline.vim)から持ってきたものだ。

```vim
vim ~/.vimrc

Plug 'edkolev/tmuxline.vim'

let g:tmuxline_preset = {
  \'a'    : '#S',
  \'c'    : ['#(whoami)', '#(uptime | cud -d " " -f 1,2,3)'],
  \'win'  : ['#I', '#W'],
  \'cwin' : ['#I', '#W', '#F'],
  \'x'    : '#(date)',
  \'y'    : ['%R', '%a', '%Y'],
  \'z'    : '#H'}
let g:tmuxline_theme = 'papercolor'
```

tmuxのステータスバーは左側と右側に別れて設定を行う。
presetの__'a', 'b', 'c'が左側の設定__で、__'x', 'y', 'z'が右側の設定__である。
__'win', 'cwin'はウィンドウ名を表示__する設定だ。
vimのコマンドモードでTmuxlineSnapshot 「ファイル名」を実行してみよう。
ここでのファイル名はtmuxline.confにする。

```vim
:TmuxlineSnapshot tmuxline.conf
```

tmuxline.confというtmuxステータスバーを表示するための設定ファイルが作られる。
.tmux.confファイルからtmuxline.confファイルを読み込む設定を追加する。
tmuxline.vimで生成された設定ファイルは、.tmuxというディレクトリを生成してその配下で管理することを推奨する。
tpmを使っている場合はすでに生成されている。

```vim
# tmuxline.vim
source-file ~/.tmux/tmuxline.conf
```

リロードする前にtmuxline.vimから生成されたtmuxline.confの下記の行を修正する。

```diff
- set -g status-utf8 "on"
+ set -gq status-utf8 "on"
```

比較的に新しいtmuxのバージョンには対応されてないぽい。修正しないとエラーメッセージが表示される。

.tmux.confファイルリロードすれば、新しいステータスバーが表示される。

```sh
tmux source-file .tmux.conf
```

リロードするたびにコマンドを実行するのは面倒な作業なので、バインディングを追加する。
「prefix + r」を押すことで設定ファイルをリロードする。

```sh
bind r source-file ~/.tmux.conf\; display "Reloaded!"
```

下記は僕の設定でキャプチャした画面である。
![스크린샷 2017-06-12 12.13.08.png](https://qiita-image-store.s3.amazonaws.com/0/93752/9b23d0c2-6265-d425-6423-c50205d4df90.png "스크린샷 2017-06-12 12.13.08.png")

おまけに設定も入れて置いたので、必要な方は参考にしていただければと思う。

```vim
" tmuxline
let g:tmuxline_preset = {
      \'a'    : '#S',
      \'c'    : ['#(whoami)'],
      \'win'  : ['#I', '#W'],
      \'cwin' : ['#I', '#W', '#F'],
      \'x'    : ['#{battery_percentage} #{battery_icon}', '#{cpu_percentage} #{cpu_icon}'],
      \'y'    : ['%a', '%R', '#(ansiweather -l tokyo -w false -h false -p false -a false | cut -d " " -f7,8,9)'],
      \'z'    : '#H',
      \'options' : {'status-justify':'left'}}
let g:tmuxline_theme = 'papercolor'
```

右側にバッテリーとCPUの使用率、天気情報を表示しているのが見えるだろうか。
バッテリーやCPUはtmuxのpluginを設置して表示しているもので、天気情報はansiweatherというコマンドで表示している。

* [tmux-battery](https://github.com/tmux-plugins/tmux-battery)
* [tmux-cpu](https://github.com/tmux-plugins/tmux-cpu)
* [ansiweather](https://github.com/fcambus/ansiweather)

追記（2017/09/29）

* ansiweatherがバージョンアップされてオプションとか変更されたみたい。天気情報が正常に表示されない場合は、次のように直して見ましょう。

```
#(ansiweather -l tokyo -w false -h false -p false -a false -s true | cut -d \" \" -f6,7,8,9)
```

tmuxのpluginを設置するためにはtpmというplugin managerが必要だ。
tpmの使い方については別途の記事を作成したので、ご参考にしていただければと思う。

* [Tmux Plugin Manager（tpm）](http://qiita.com/park-jh/items/4ecf01d1a98725cbf5a3)

ちなみに僕はvim-airlineを使っていてthemeもvim-airlineのものを使っている。
vim-airlineのthemeの中で好みのthemeを探してみよう。
[こちら](https://github.com/vim-airline/vim-airline/wiki/Screenshots)で確認する。

### 参考

* https://github.com/edkolev/tmuxline.vim