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のインストール
% 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
% pip install --user --upgrade git+git://github.com/Lokaltog/powerline-fontpatcher
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.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
出来上がりのステータスバーはこちら。ウインドウ名の日本語も化けずに表示されてる!