公式ドキュメントや先人達の Qiita 投稿を参考に、tmux + Powerline の環境構築を行いました。
その際に上手く動作せずハマったのでメモを書いておきます。
環境
- OS X El Capitan
- iTerm 2
- tmux 2.1 (brew で install)
経緯
以下のコマンドで必要なパッケージをインストール。
pip install --user powerline-status
続いて .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 は起動し、エラー等も表示されないようですが、ステータスラインはカッコよく表示されないという問題が発生しました。
これには 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 を通しました。
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
環境変数が空になっていることがあるそうです。シェルの設定ファイルに以下を追記します。
export LC_ALL='ja_JP.UTF-8'