Help us understand the problem. What is going on with this article?

Powerline-shellでターミナルを改造しよう

はじめに

もともとはgitのカレントブランチを常に表示したいという願望からいろいろ調べてたらPowerlineにたどり着きました。

Version
macOS Mojave 10.14.6
python 2.7.15

Powerlineとは?

いい感じにターミナルの表示をかっこよくしてくれるツール、らしい。

ゴールイメージ

スクリーンショット 2019-12-06 2.01.08.png

  • 端末名、ユーザーが不要なので表示しない
  • gitのカレントブランチを表示する
  • コマンド行で改行する

Powerline-shellの設定

インストール

公式リポジトリに沿ってインストールしていきます。
pipからインストールする方法もありますが、今回はgithubからcloneしてくる方法で進めます。

# 任意のディレクトリで実行
git clone https://github.com/b-ryan/powerline-shell
cd powerline-shell
python setup.py install

powerline-shellとコマンドを打ってわけの分からない文字列が出力されればOK。

$ powerline-shell
\[\e[38;5;250m\]\[\e[48;5;240m\] \u \[\e[48;5;238m\]\...

ターミナルへの反映

自分はbashを使っているので、readmeを参考にbash用の設定をします。
以下を.bashrcに追加or新規作成します。

~/.bashrc
function _update_ps1() {
  PS1=$(powerline-shell $?)
}

if [[ $TERM != linux && ! $PROMPT_COMMAND =~ _update_ps1 ]]; then
  PROMPT_COMMAND="_update_ps1; $PROMPT_COMMAND"
fi

また、.bash_profileに.bashrcを読み込む設定を書き加えます。

~/.bash_profile
if [ -f ~/.bashrc ] ; then
  . ~/.bashrc
fi

ここまで設定したら、source ~/.bash_profileを実行して設定を反映させるとプロンプトの表示が変わるはず。

スクリーンショット 2019-12-04 2.22.36.png

(すごい文字化け...)

フォントの設定

インストール

文字化けを解消するためpowerline用のフォントをインストールします。
今回はSourceCodeProを使います。

公式リポジトリ

コマンドでインストールする方法がよく分からなかったのでFinder上からインストールします。

リポジトリからzipファイルをダウンロードして解凍、対象のフォントを選択してFontBookで開くとフォントをインストールできます。

スクリーンショット 2019-12-04 2.33.22.png

設定

ターミナルの設定で利用フォントをSourceCodeProを指定します。
画像はiTerm2の場合です。

スクリーンショット 2019-12-04 2.40.17.png

これで文字化けせずに表示されるようになりました。

表示項目の設定

表示項目をカスタマイズしていきます。

  • ユーザー名、端末名は表示しない
  • コマンド行で改行する

configファイルの生成

設定を変更するためのconfigファイルを作成します。

mkdir -p ~/.config/powerline-shell && \
powerline-shell --generate-config > ~/.config/powerline-shell/config.json

configファイルの編集

ユーザー名と端末名を示す項目を削除します。

~/.config/powerline-shell/config.json
{
  "segments": [
    "virtual_env",
-   "username",
-   "hostname",
    "ssh",
    "cwd",
    "git",
    "hg",
    "jobs",
    "root"
  ]
}

即設定が反映されて、ユーザー名と端末名が消えました。

スクリーンショット 2019-12-04 2.46.31.png

.bashrcの編集

コマンド行で改行するために.bashrcに手を加えます。

~/.bashrc
function _update_ps1() {
- PS1=$(powerline-shell $?)
+ PS1="$(powerline-shell $?)\n$ "
}

source ~/.bashrcで設定を反映させると、コマンド行で改行するようになりました。
1行目の$マークを消せればいいんですけど消し方が分からず。。

スクリーンショット 2019-12-04 2.48.34.png

色の設定

色設定にも手を加えてみます。

テーマファイルの作成

色を変更するためのテーマファイルを作成します。
テーマファイル群はpowerline-shellを解凍したディレクトリから./powerline_shell/themesにあります。
今回はデフォルトの色設定を少し調整したいので、ファイルをコピーします。

cp default.py mytheme.py

テーマファイルの指定

コピーしたテーマを利用するように指定します。
ディレクトリは解凍先により変わります。

~/.config/powerline-shell/config.json
{
  "segments": [
    "virtual_env",
    "ssh",
    "cwd",
    "git",
    "hg",
    "jobs",
    "root"
  ],
+ "theme": "~/tools/powerline-shell/powerline_shell/themes/mytheme.py"
}

テーマファイルの編集

先ほど作成したmytheme.pyを編集します。
デフォルトだとgitブランチに変更点がある場合にブランチの背景がピンクになるんですが、
常にグリーンで表示したいので変更します。
BGが背景色でFGが文字色です。

mytheme.py
    REPO_CLEAN_BG = 148  # a light green color
    REPO_CLEAN_FG = 0  # black
-   REPO_DIRTY_BG = 161  # pink/red
-   REPO_DIRTY_FG = 15  # white
+   REPO_DIRTY_BG = 148
+   REPO_DIRTY_FG = 0

ブランチ部分の表示色が変わりました。

スクリーンショット 2019-12-05 0.17.34.png

カラーのテスト

色と数値がどう結びついてるのかよく分からないんですけど、色の確認ができる仕組みが用意されてます。
解凍したpowerline-shellフォルダにあるcolortest.pyを使います。

引数を元に背景と文字の色を確認できます。

スクリーンショット 2019-12-05 0.21.04.png

補足 やっぱりRicty使いたい!

自分はフォントはRictyDiminishedが好きなので使いたいなと思っていたところ、Rictyでもpowerline用のフォントがありました!

これを使えばpowerline上でも文字化けすることなくRictyを使えます。

GitHubリポジトリ

まとめ

ターミナルがかっこよくなるとテンション上がる!
みなさんも自分だけのオリジナルのターミナルを作ってみてください!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした