41
41

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.

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

Posted at

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

% 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のインストール

powerline-fontpatcherのインストール

Lokaltog/powerline-fontpatcher

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

fontforgeのインストール

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.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

41
41
1

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
41
41

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?