tmuxとtmux-powerlineの設定でかっこよくする

Linux

とりあえず、こちらをご覧ください。一番下の行に注目!

tmux-powerline
解像度は2560×1440の全画面で表示

これは、tmuxtmux-powerlineを使って実現しています。

以下に、導入方法を書きます。

0. (強く推奨)powerline用のフォントをインストール

まず、大なり、小なりのフォントを使うための設定をします。これをインストールした方が、すごい見栄えがかっこよくなります!

パッチを当てたフォントをインストールして、ターミナルなどでそのフォントを使って表示するようにします。
この記事で使われているスクリーンショットのフォントは、AdobeのSource code proにパッチを当てたフォントを使っています。

その他のフォントはこちら。
https://gist.github.com/qrush/1595572

自分でパッチを当てる場合はこちら。
https://github.com/fncll/vimstuff/tree/master/powerline-fonts

1.tmuxのインストール

パッケージ又はソースコードからインストールします。

brew install tmux

2. tmux-powerlineのインストール

tmux-powerlineをダウンロード

cd
git clone git://github.com/erikw/tmux-powerline.git

~/.tmux.conf に以下を追加

set-option -g status on
set-option -g status-interval 2
set-option -g status-utf8 on
set-option -g status-justify "left"
set-option -g status-left-length 60
set-option -g status-right-length 90
set-option -g status-left "#(~/tmux-powerline/powerline.sh left)"
set-option -g status-right "#(~/tmux-powerline/powerline.sh right)"

※サンプルには set-option -g status-justify "center" とありますが、leftの方が綺麗です

この状態でtmuxを起動すれば、それっぽい表示になると思います。

tmux
clean

3. tmux-powerlineの設定

tmux-powerlineの設定は多種多様なので、費用対効果が高い設定を紹介します。
(詳細は、README(英語)にとても良くまとまっています。)

3.1 色を統一する

デフォルトだとtmuxの背景とpowerlineの背景が合っていないので、色を変更します。
~/.tmux.confへ、背景色をグレーにするために、以下の設定を追加します。
また、左右の表示が途中で切れないように表示文字数をデフォルトより多めに設定します。

set -g status-bg colour235
set-option -g status-left-length 100
set-option -g status-right-length 120

3.2 ウィンドウリストを左寄せにする。

set-window-option -g window-status-current-format "#[fg=colour235, bg=colour27]⮀#[fg=colour255, bg=colour27] #I ⮁ #W #[fg=colour27, bg=colour235]⮀"

3.3 現在のブランチ名を表示する

以下のコードを、.bashrcまたは.zshrcなどのシェルの設定ファイルの後ろの方へ追加します。

PS1="$PS1"'$([ -n "$TMUX" ] && tmux setenv TMUXPWD_$(tmux display -p "#D" | tr -d %) "$PWD")'

再読み込みします。

source ~/.zshrc

あとは、レポジトリのディレクトリへ移動すれば、情報が表示されるはずです。

4. tmux-powerlineの応用設定

4.1 オリジナル設定の準備

自分用の設定を記述するためのファイルを準備します。
まずは、tmux-powerlineの表示項目を設定するためのファイルであるtmux-powerline/mytheme.shを作成します。

cd tmux-powerline/
cp themes/default.sh themes/mytheme.sh

次に、環境変数やユーザ設定を記述するための~/.tmux-powerlinercを作成します。

cd tmux-powerline/
./generate_rc.sh
mv ~/.tmux-powerlinerc.default ~/.tmux-powerlinerc

4.2 天気を表示する

~/.tmux-powerlinerc を開き、TMUX_POWERLINE_SEG_WEATHER_LOCATIONに表示したい場所のコードを入れます。
東京なら、以下のコードになります。

export TMUX_POWERLINE_SEG_WEATHER_LOCATION="26237038"

場所のコードは、yahoo.comの天気ページにて、URLの一番右にある数字を利用します。
http://weather.yahoo.com/japan/tokyo-prefecture/tokyo-26237038/

4.3 ネットワーク情報を表示する

tmux-powerline/segments/ifstat_sys.shを開き、モニタリングしたいネットワークのインターフェイス名に変更します。
デフォルトではwlan0となっています。インターフェイス名は、ifconfigコマンドなどで確認出来ます。

iface="eth"

bcコマンドが必要になるため、bcコマンドが無い場合はインストールする必要があります。

sudo aptitude install bc -y

そして、tmux-powerline/themes/mytheme.shを開き、以下の行のコメントアウトを外します。

"ifstat_sys 30 255" 

4.4 色の変更

GNU screenでは色の変更がすごい大変でしたが、tmuxではとても簡単です。

まず、オリジナルの設定を用いるために、 ~/.tmux-powerlinerc のTMUX_POWERLINE_THEMEをmythemeに設定します。

export TMUX_POWERLINE_THEME="mytheme"

以下のコマンドを実行するとカラーコードが表示されます。

~/tmux-powerline/color_palette.sh

ブランチの記号のコントラストが変なので、tmux-powerline/themes/mytheme.shを開き、88から253へ変更します。
第1引数が背景で、第2引数が文字色です。

                "vcs_branch 29 253" \

また、~/tmux-powerline/segments/vcs_branch.shを開き、こちらにも設定があるので5を253に変更します。

git_colour="253"

4.5 地震情報を表示する

.tmux-powerlinercを開き、地震情報のコメントアウトを外します。デフォルトでは日本中の地震情報から拾ってきます。

                "earthquake 3 0" \
Screenshot_2013_02_16_11_22

4.6 その他

gmailの未読数や、macの場合はitunesの再生中の曲などを取得できます。

5 まとめ

5.1 やったこと

tmux-powerlineを使ってかっこよくて使い勝手の良いシェルを作りました。

setting_done
良い点
  • tmux-powerlineを使えば、シェルスクリプトさえ用意すれば自分の欲しい情報が簡単に表示できる。(アイディアとしては、株価や、為替表示とか、1時間前の売り上げ情報とか)
  • tmuxのパフォーマンスは良い。
  • 11MBのテキストをcatした時間をベンチマーク
  • GNU screen: 50s
  • byobu: 25s
  • tmux: 15s
  • 無し: 3s
悪い点
  • シェルスクリプトが頻繁に動いているので、計算リソースを多少食う
  • tmux-powerlineプログラム自体と設定が明確に分かれていない。

5.2 補足資料

4まで行った設定ファイルの結果
https://gist.github.com/matsubo/4746629

tmuxの基本操作はこちら
「screen(だけ)の時代は終わり。tmuxでリモートコンソールを便利に使うTips」
http://blog.asial.co.jp/881

一番最初にあるスクリーンショットに掲載してある設定を行ってある私の設定ファイル達
https://github.com/matsubo/matsu-shell-setting

このエントリーをはてなブックマークに追加

Comments

タイトルとURLをコピーしました