🕵

UbuntuのPowerlineをカスタマイズする

2022/04/15に公開

仕事でUbuntuを使うようになり、そうなるとターミナルは常に使うようになります。

今まではUbuntuは学生時代の授業や趣味で使う程度でしたが、仕事となると毎日使うわけなので使いやすいようにターミナルをカスタマイズしたくなります。

前職ではMacにOh my zshを導入して見やすくなるようにカスタマイズしていましたが、UbuntuだとZshに切り替えていろんなソフトの挙動が変わってしまうような気がしました。

というわけで今回はUbuntuのbashでPowerlineを使えるようにしてみました。

インストール

Powerlineの導入はとても簡単で以下のコマンドを実行してPowerlineとそのフォントをインストールします。

sudo apt-get install powerline powerline-fonts

Powerlineを適用するには~/.bashrcを開き、以下の記述を追加します。

# Powerline configuration
if [ -f /usr/share/powerline/bindings/bash/powerline.sh ]; then
  powerline-daemon -q
  POWERLINE_BASH_CONTINUATION=1
  POWERLINE_BASH_SELECT=1
  source /usr/share/powerline/bindings/bash/powerline.sh
fi

source ~/.bashrcを実行するとデフォルトのPowerlineが適用されます。

Gitのレポジトリ上ではこんな感じでブランチ名と記号が表示されます。

カスタマイズしてみる

Powerlineを適用したのはいいですが、自分の好みにいまいち合わないのでいくつか設定をいじってカスタマイズしていきます。

設定ファイルをコピーする

デフォルトの状態だとPowerlineの設定ファイルはシステムのディレクトリに設置されています。

なるべく直にいじらないほうがいいので、以下のコマンドで ~/.configディレクトリに移動します。

mkdir -p ~/.config/powerline
cp -R /usr/share/powerline/config_files/* \
      ~/.config/powerline/

これでPowerlineの設定ファイルが ~/.config/powerline に移動したことでsudo権限がなくても編集できるようになりました。

というわけでここからいよいよPowerlineの設定をいじりましょう。

プロンプトの配置を変える

プロンプト(ユーザー名やパスが表示される部分)を好みの配置に変更してみます。

プロンプトの配置の設定は ~/.config/powerline/themes/shell/default_leftonly.jsonを編集します。

leftの配列の順番で左から表示されるので、絶対表示したくないものは消せばいいですし、あとは順番を変更したいのであれば位置を変更すればOKです。

以下のJsonはパスの直後にレポジトリのステータスを表示させてホストネームを削除するようにした例です。("function": "powerline.segments.common.net.hostname"を削除して、"function": "powerline.segments.common.vcs.branch"の位置を変えた例です)

{
	"segments": {
		"left": [
			{
				"function": "powerline.segments.common.env.user",
				"priority": 30
			},
			{
				"function": "powerline.segments.common.env.virtualenv",
				"priority": 50
			},
			{
				"function": "powerline.segments.shell.cwd",
				"priority": 10
			},
			{
				"function": "powerline.segments.common.vcs.branch",
				"priority": 40
			},
			{
				"function": "powerline.segments.shell.jobnum",
				"priority": 20
			},
			{
				"function": "powerline.segments.shell.last_pipe_status",
				"priority": 10
			}
		]
	}
}

この設定を反映するには、powerline-daemon --replaceを実行します。

すると、以下のようにプロンプトの配置が変更されました。

配色を変える

今度は配色を変えてみます。

パスはこのままでもいいですが、ユーザー名とブランチの背景色を好みの色に変更します。

プロンプトの配色は~/.config/powerline/colorschemes/default.jsonで設定しています。

groups.user.bgはユーザー名の背景色でgroups.branch.bgはブランチの背景色です。

{
  "name": "Default",
  "groups": {
    ...
    "user": { "fg": "white", "bg": "darkblue", "attrs": ["bold"] },
    "branch": { "fg": "gray9", "bg": "gray2", "attrs": [] },
  ...

設定可能な色の設定は~/.config/powerline/colors.jsonを参照しています。

colors内の各要素に色名をキーにカラーコードが値として設定されています。

このカラーコードは こちらで紹介されている8ビットカラーに対応しています。

color.jsonにはない色を使いたいときには自分で好きな色名を設定すればOKです。今回は追加で以下のように色を追加しました(blueはデフォルトで設定されてなくて意外でした)

{
  "colors": {
    ...
    "blue": 18,
    "mintgreen": 30
  }
}

上記で設定した色を ~/.config/powerline/colorschemes/default.json に設定します。先程の設定を以下のように変更しました。

{
  "name": "Default",
  "groups": {
    ...
    "user": { "fg": "white", "bg": "blue", "attrs": ["bold"] },
    "branch": { "fg": "gray9", "bg": "mintgreen", "attrs": [] },
  ...

powerline-daemon --replaceを実行して、プロンプトの配色が変更されました。

まとめ

というわけで今回はUbuntuでなるべく簡単にPowerlineをカスタマイズしてみました。

powerline-shellを使った方法は割とよくありますが、powerline-shellを使わなくても設定ファイルのjsonを書き換えるだけでもPowerlineのカスタマイズができます。

今回は自分がやったカスタマイズを紹介しただけでしたが、他の設定ファイルも変更できるのでいろいろ変えて自分だけのターミナルに仕上げてみましょう!

Discussion