2016/10/18 21:07:17

Powerlineを導入する

powerline
目次(クリックするとジャンプします)
  • 1:Powerlineと諸ツールのインストール
  • 1.1:pythonをインストールする
  • 1.2:パッケージ管理システムpipのインストール
  • 1.3:フォントのダウンロード
  • 1.3.1:公式ドキュメントでのフォント
  • 1.3.2:Powerline用のフォント
  • 1.3.3:フォントインストール
  • 1.3.3.1:グローバル(全ユーザ共通)インストール
  • 1.3.3.2:ユーザ毎インストール
  • 1.4:powerline本体と各種ツールのインストール
  • 1.5:pipでインストールをする場合のエラー
  • 1.5.1:python-devが無い
  • 1.5.2:libtool(libtoolize)やautomake(aclocal)が無い
  • 1.6:パスを通す
  • 2:bashでのpowerline使用
  • 2.1:.bashrc設定
  • 3:tmuxでのpowerline使用
  • 3.1:.tmux.conf設定
  • 4:vimでのPowerline使用
  • 4.1:プラグインを使う
  • 5:後記

Powerlineと諸ツールのインストール

Powerlineはシェルやエディタなどのステータスラインをリッチに機能的にしてくれるツールです。見た目もかなりかっこ良くなります。

必要な情報を表示することができ作業が捗リマス!!ただ意外と導入の手順が多く四苦八苦したので、導入までの道のりを書き留めておきます。

説明の環境はGNU/Linux debian8ですが、他のディストリビューションやMacでも参考になるかもしれませぬ。

Powerline公式ドキュメント(英語)

pythonをインストールする

おそらくほとんどの環境でpython入っているかと思います。

Powerlineはこの記事を書いた時点ではpython2.6以降、もしくはpython3.2以降で動くそうですので、入っているpythonのバージョンを確認してみてください。

$ python
Python 2.7.9 (default, Mar  1 2015, 12:57:24)                                                      
[GCC 4.9.2] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>>exit()

もし入っていないならインストールをしてください。

パッケージ管理システムpipのインストール

pipとはpythonで書かれたプログラムのパッケージ管理システムだそうです。知らなんだ。

Powerlineはpythonで書かれておりpipで管理されておるとのことで最初にpipを入れます。

かーるちゃんでインストーラをダウンロードします。

$ curl -O https://bootstrap.pypa.io/get-pip.py

インストーラを起動します。

$ sudo python get-pip.py

ここまでは簡単。

フォントのダウンロード

公式ドキュメントでのフォント

公式では以下のフォントが紹介されてます。

PowerlineSymbols.otf

このフォントはPowerlineが装飾につかう記号やマークが入ったフォントです。

このフォントを使うのもいいのですが、すこし設定が面倒です。そこでPowerline用に調整された欧文フォントを使うのが楽かと思います。

Powerline用のフォント

Powerlineの対応フォントがgitにあります。以下のコマンドでカレントディレクトリにフォントが複数ダウンロードされます。

git clone https://github.com/powerline/fonts.git

このフォントの中から好きなものをインストールしてください。

@MINOは見やすかった「Roboto Mono for Powerline」を選びました。

フォントインストール

フォントのインストールはグローバルに入れる方法とユーザ毎に入れる方法があります。

グローバル(全ユーザ共通)インストール

debianなら以下のディレクトリにフォントが入っています。おそらくopentypeやtruetypeなどがディレクトリに仕分けられていると思います。

/usr/share/font/opentype
/usr/share/font/truetype

今回ダウンロードしたフォントはopentypeやtruetypeも混在していますので、ちゃんと整理したい場合はそれぞれのディレクトリに入れるのがいいでしょう。

Arimoフォント(truetype)をコピーする

$sudo cp -r ~/fonts/Arimo /usr/share/font/truetype

フォントリストを更新にするために以下のコマンドを打ちます

$ fc-cache -fv

これでシステムのユーザみんなが使えるようになります。

-fvオプションはフォントリストの初期化をするオプションです。付けておいたほうが安心です。

ユーザ毎インストール

ユーザディレクトリ直下の.fontsというディレクトリに(ない場合は作って)ダウンロードしてきたフォントを放り込んでしまいます。

gitcolneを行ったのがホームディレクトリの場合(ダウンロードしたものを全部コピー)

$ cp -r ~/fonts/* .fonts

フォントリストを更新にするコマンド

$ fc-cache -fv ~/.fonts/

ただし、この方法はユーザのみに有効なので、複数のユーザを使う環境ではグローバルに入れたほうがいいかもしれません。

powerline本体と各種ツールのインストール

フォントを準備したら本体とツールをインストールしていきます。

Powerlineはお天気とか時間とかバッテリーの状態とかさまざな情報を表示するので、さまざなツールと連携して動いています。それもあって本体以外のツール導入が多く、意外と面倒なのだと思いますが、苦労する甲斐はあると思いマス。

apt-getは@MINOが使用しているdebianのパッケージコマンドなので、各位のお使いの環境のパッケージコマンドに置き換えてください。

$ pip install --user git+git://github.com/powerline/powerline
$ sudo apt-get install socat
$ sudo pip install psutil
$ sudo pip install pyuv

これらのコマンドでインスト−ルしているものは以下です。一応説明書きしていますが、@MINOの知識ではわからない領域なので間違っていたらごめんなさい。

ツール 役目
powerline powerline本体
socat ネット万能ツール。tcp/udpパケットをいろいろ弄くることができる
psutil プロセスとシステム使用率(CPU、メモリ)を実行する上での情報を取得するためのインタフェースを提供するモジュール
pyuv libuvのpython実装。非同期のファイルシステムへのアクセス等を提供するライブラリ

Powerlineではいくつかの機能を提供しているのですが、その機能を実現するために必要になるツールです。

公式ドキュメントでは以下の4つのインストールも言及されていますが、@MINOの環境では先にインストールしていたのか(記憶ない)今回のPowerline導入には必要ありませんでした。

ツール 役目
mercurial 分散バージョン管理ソフト
pygit2 GitリポジトリをPythonで操作する為のライブラリ
bzr 分散バージョン管理ソフト
i3-py i3バインド用ライブラリ

i3-pyに関してはi3(ウインドウマネージャの種類の1つ)をつかっていないなら必要ないと思います。

もしPowerline導入工程になんらかの障害がでるようでしたら上記のツールのインストールも必要かもしれません。

pipでインストールをする場合のエラー

どうもpipでのインストールエラーはハマりどころのようで多くの方がなにかしら足りないと言われてしまうようです。

python-devが無い

psutilをインストールしようとすると

fatal error: Python.h: そのようなファイルやディレクトリはありません

といったようなエラーがでてしまいインストールが失敗するかもしれません。案の定@MINOは失敗しました。

これはどうやらpythonデベロッパツールが入っていない為に起こるエラーのようです。 なのでpython-devを入れましょう。

@MINOの場合、debianに入れてある(というか最初から入っていた)pythonのバージョンが2.7だったので、python2.7-devを入れると良いようです。

場合によってはpython3を入れてる人もいるかもしれません。

入れてあるpythonのバージョンに合わせたpython-devをいれてください。

debianでpython2.7-devをインストール

$ sudo apt-get install python2.7-dev

libtool(libtoolize)やautomake(aclocal)が無い

これらはいずれも自動設定にかかわるライブラリのようです。

ちょっと知識が足らなくてあまりわかっていませんが、@MINOの環境ではpyuvをインストール時にlibtoolizeが無いと言われ、それを解決したあとにaclocalが無いと言われました。

最初のインストール時のエラー(ログ抜粋)

autogen.sh: 43: autogen.sh: libtoolize: not found

libtool(libtoolize)をインストール後のエラー(ログ抜粋)

autogen.sh: 44: autogen.sh: aclocal: not found

libtoolizeはlibtool、aclocalはautomakeをインストールすることで入るようです。以下はdebianの場合です。

$ sudo apt-get install automake
$ sudo apt-get install libtool

@MINOの環境ではこの2つを入れることでインストールが正常に終わりましたが、他にもエラーが出るかもしれません。

pipの標準出力のインストールログにもエラー内容が詳しく出ますので念入りに読むことで何が足りないのかが解ると思います。

パスを通す

やっとこさインストールがおわったらパスを通します。

powerline関係の実行ファイルは

~/.local/bin

に入っているかと思います。ここのパスを通します。

@MINOはbashなので~/.bashrc に以下を追加しました。 お使いのシェルに合わせて設定してください。

#powerline                                                                                                                                        
export PATH=~/.local/bin/:$PATH

bashでのpowerline使用

.bashrc設定

powerlineをbashで使うためには~/.bashrcpowerline-daemonを起動させるように記述しておきます。

そしてbash用のスクリプトの読み込みも記述します。

powerline-daemon -q¬                                                                                                                              
. ~/.local/lib/python2.7/site-packages/powerline/bindings/bash/powerline.sh

変更した~/.bashrcを読み込みます。

$ souce .bachrc

これでプロンプトがリッチになるかと思います。

powerline_bash

例はbashの場合ですが、 ~/.local/lib/python2.7/site-packages/powerline/bindings以下のはいくつかのシェル用のスクリプトがありますので、それぞれお使いのシェルや環境に合わせて設定してください。

tmuxでのpowerline使用

.tmux.conf設定

tmuxの設定ファイルである.tmux.confに以下を追加します。

run-shell "powerline-daemon -q"
source ".local/lib/python2.7/site-packages/powerline/bindings/tmux/powerline.conf"

これでtmuxを再起動させるとステータスラインがリッチになっていると思います。

powerline_tmux

vimでのPowerline使用

プラグインを使う

公式ドキュメントには2つ方法が説明されていますが、プラグインを使うのが圧倒的に楽です。

vimrcにて

まずはパスを設定

set rtp+=~/.local/lib/python2.7/site-packages/powerline/bindings/vim

そしてプラグイン管理ツールにてインストール

vandleの場合

Bundle 'powerline/powerline', {'rtp': 'powerline/bindings/vim/'}

NeoBundleの場合

NeoBundle 'powerline/powerline' , {'rtp': 'powerline/bindings/vim/'}

これでvimを再起動させるとプラグインをインストールするか聞かれ、入るとステータスラインが変わるはずです。

dein.vimの場合

call dein#add('powerline/powerline' , {'rtp': 'powerline/bindings/vim/'})

これでvimを再起動させるとプラグインをインストールするか聞かれ、入るとステータスラインが変わるはずです。

powerline_vim

後記

とりあえずの導入編でした。なかなか手順がいっぱいあり面倒で心が折れそうでしたが、なんだか環境がかっこ良くなってよかったです。