LoginSignup
12
11

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-12-12

公式ドキュメントや先人達の 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

12
11
0

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
12
11