[Mac + tmux + iTerm] ステータスバーをpowerlineでカッコ良くする

tmuxのステータスバーをカッコ良くしたい！であればpowerlineを使うのが良いらしい！

vimのプラグインとしてその存在を認知していたpowerlineがtmuxでも使えるとの事で、導入手順をggrksしてみると結構人によってやり方が様々で、関連ツールのバージョンアップで既に情報が古いものになっていたり、vim(vim-powerline)に依存する手順もあったりで、若干情報収集に手こずった。

個人的にちょうどscreenからtmuxへの移行を進めているところで、 __mac + tmux + iTerm な環境でpowerlineを使ってステータスバーをカスタマイズする為に必要最低限の手順__ を残しておく事にした。（と言いつつ、使ったツールの開発が活発なのでこの手順も早い段階で陳腐化する可能性は無くはなし）

## 環境
* Mac(Mavericks)
    * __自宅にある2台(MBA 2011, Mac mini 2012)で同じ手順での導入に成功__
* tmux ver 1.8

## 事前準備

### pythonのインストール
* homebrewでインストールする

```
% brew install python
% which python
/usr/local/bin/python
% python --version
2.7.8
```

### pipのインストール

```
% easy_install pip
```

## powerlineのインストール
[Lokaltog/powerline](https://github.com/Lokaltog/powerline)

```
% pip install --user git+git://github.com/Lokaltog/powerline
```

* `error: can't combine user with prefix, exec_prefix/home, or install_(plat)base` <= こんなエラーが出る場合は、`~/.pydistutils.cfg`を下記内容で作成

```~/.pydistutils.cfg
[install]
prefix=
```

## ステータスバーのフォント文字化け対策

### XQuartzのインストール

* http://xquartz.macosforge.org/landing/ からdmgを落としてインストール

### powerline-fontpatcherのインストール
[Lokaltog/powerline-fontpatcher](https://github.com/Lokaltog/powerline-fontpatcher)

```
% pip install --user --upgrade git+git://github.com/Lokaltog/powerline-fontpatcher
```

### fontforgeのインストール
[fontforge/fontforge](https://github.com/fontforge/fontforge)

* `--use-gcc`はオプション無しだとインストール失敗したので付けた（詳しい原因調査はしていない）

```
% brew install --use-gcc fontforge
```

### powerline-symbols.sfdのインストール（というか取得）

```
% cd ~/Library/Python/2.7
% mkdir fonts
% cd fonts
% wget https://raw.githubusercontent.com/Lokaltog/powerline-fontpatcher/develop/fonts/powerline-symbols.sfd
```

### 使用するフォントにパッチを当てる

```
$ mkdir <作業用フォルダ>
$ cd <作業用フォルダ>
$ cp ~/Library/Fonts/<使用フォント>.ttf ./
$ fontforge -script ~/Library/Python/2.7/bin/powerline-fontpatcher <使用フォント>.ttf
```

* 成功したらファイル名に`Powerline`が含まれているパッチ済フォントファイルが作成されているはず

```
% ls
<使用フォント> Powerline.ttf
```

### パッチ済フォントのインストール

* Finderから対象フォントをダブルクリックでインストール

### iTermのフォントを変更

* iTermのpreferencesから変更

## .tmux.conf のステータスバー関連設定

* インストール直後はどんな設定にするか手探りだったので、powerlineインストール時に同梱されているサンプルconfをコピペ＆一部改修した
    * 最初のうちは`source ~/Library/Python/2.7/lib/python/site-packages/powerline/bindings/tmux/powerline.conf`て具合に読み込んでそのまま使っても良いかもしれない
    * その場合、サンプルは`~/Library/Python/2.7/lib/python/site-packages/powerline/bindings/tmux`フォルダに複数あるので、tmuxのバージョンに合ったconfを読み込む

```tmux:.tmux.conf
## utf8を有効に
set -g status-utf8 on
## 描画間隔
set -g status-interval 2
## ウインドウリストの位置
set -g status-justify left
## ** using powerline **
if-shell 'test -z "$POWERLINE_CONFIG_COMMAND"' 'set-environment -g POWERLINE_CONFIG_COMMAND powerline-config'
run-shell 'eval $POWERLINE_CONFIG_COMMAND tmux source'
### カラー
set -g status-fg colour231
set -g status-bg colour234
### 左部分
set -g status-left-length 20
set -qg status-left '#{?client_prefix,#[fg=colour254]#[bg=colour31]#[bold],#[fg=colour16]#[bg=colour254]#[bold]} #S #{?client_prefix,#[fg=colour31]#[bg=colour234]#[nobold],#[fg=colour254]#[bg=colour234]#[nobold]}(eval $POWERLINE_COMMAND tmux left)'
### 右部分
set -g status-right-length 150
#set -g status-right '#(eval $POWERLINE_COMMAND tmux right -R pane_id=`tmux display -p "#D"`)'
set -g status-right "[%Y-%m-%d(%a) %H:%M]"
### ウインドウ
set -g window-status-format "#[fg=colour244,bg=colour234]  #I #[fg=colour240] #[default]#W "
set -g window-status-current-format "#[fg=colour234,bg=colour31]#[fg=colour117,bg=colour31] #I  #[fg=colour231,bold]#W #[fg=colour31,bg=colour234,nobold]"
setw -g window-status-fg colour249
set -qg window-status-last-fg colour31
setw -g window-status-activity-attr none
setw -g window-status-activity-fg yellow
setw -g window-status-bell-attr none
setw -g window-status-bell-fg red
```

出来上がりのステータスバーはこちら。ウインドウ名の日本語も化けずに表示されてる！

![powerline.png](https://qiita-image-store.s3.amazonaws.com/0/4516/c9e044de-847b-5d2b-302b-9707c5a5fec2.png)