Edited at

tmux + Powerline が上手く動作しない場合の確認ポイント

More than 1 year has passed since last update.

公式ドキュメントや先人達の Qiita 投稿を参考に、tmux + Powerline の環境構築を行いました。

その際に上手く動作せずハマったのでメモを書いておきます。


環境


  • OS X El Capitan

  • iTerm 2

  • tmux 2.1 (brew で install)


経緯

以下のコマンドで必要なパッケージをインストール。

pip install --user powerline-status

続いて .tmux.conf に以下の行を追加しました。


tmux.conf

run-shell "powerline-daemon -q"

source "/Users/USER_NAME/Library/Python/2.7/lib/python/site-packages/powerline/bindings/tmux/powerline.conf"

最後に patch をあてたフォントをインストールし、最低限の動作環境が整ったかと思いました。

この状態で tmux は起動し、エラー等も表示されないようですが、ステータスラインはカッコよく表示されないという問題が発生しました。

tmux1.png

これには 2 つの問題が潜んでいました。


問題1: powerline-daemon への PATH が通っていない

.tmux.conf の内容を見ると、 run-shell でシェルコマンドを実行しているようです。

powerline-daemon への PATH が通っているかを確かめてみると、コマンドが見つからないと言われてしまいました。

% which powerline-daemon

powerline-daemon not found

powerline 関連コマンドは ~/Library/Python/2.7/bin 内に配置されているようでした。

シェルの設定ファイルに以下の行を記述し、コマンドへの PATH を通しました。


.zshrc

export PATH="$HOME/Library/Python/2.7/bin:$PATH"


% which powerline-daemon

/Users/USER_NAME/Library/Python/2.7/bin/powerline-daemon


問題2: ValueError: unknown locale: UTF-8

PATH が通った状態で tmux コマンドを打ってみましたが、ステータスラインの表示は変わらず正常に動作していないようでした。

試しに powerline-daemon をシェル上で直接実行してみたところ ValueError: unknown locale: UTF-8 が発生していることがわかりました。

% powerline-daemon

Traceback (most recent call last):
File "/Users/USER_NAME/Library/Python/2.7/bin/powerline-daemon", line 18, in <module>
from powerline.commands.main import finish_args, write_output
File "/Users/USER_NAME/Library/Python/2.7/lib/python/site-packages/powerline/commands/main.py", line 17, in <module>
encoding = get_preferred_arguments_encoding()
File "/Users/USER_NAME/Library/Python/2.7/lib/python/site-packages/powerline/lib/encoding.py", line 77, in get_preferred_arguments_encoding
locale.getdefaultlocale()[1]
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/locale.py", line 543, in getdefaultlocale
return _parse_localename(localename)
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/locale.py", line 475, in _parse_localename
raise ValueError, 'unknown locale: %s' % localename
ValueError: unknown locale: UTF-8

この問題は、こちらの blog 記事を参考にさせていただきました。sphinx で ValueError: unknown locale: UTF-8 というエラーが出た

Mac では LC_ALL 環境変数が空になっていることがあるそうです。シェルの設定ファイルに以下を追記します。


.zshrc

export LC_ALL='ja_JP.UTF-8'


この状態で tmux コマンドを実行したところ、ステータスラインのデザインが変わり、動作することが確認できました。

tmux2.png