PowerLineを導入しただけのプロンプトはダサい

Linux

強いタイトルです。一回こういうのやってみたかった。

こんにちは、山田ハヤオです。以前からずっとPowerLine-Goを用いていい感じのターミナルを構築していました。

powerline-goを使ったプロンプト

しかしPowerLine-Goでは細かいカスタマイズが行えません。

そこでStarShipという別のプロンプト表示ツールでPowerLineを再現します。

最終的なカスタマイズ後はこんな感じ。

PowerLine-Go以上に様々な情報を表示できます。

スポンサーリンク

Starshipとは

StarshipはRustで書かれたモダンなシェルプロンプト生成ツールです。

WindowsやLinux、macOSはもちろんBSDやAndroidもサポートされています。

Starshipをインストール

Starshipをインストールします。

Arch Linuxの人は公式リポジトリからインストール。

yay -S starship

macOSの人はHomebrewでインストール。

brew install starship

他のOSの人は公式サイトを参照してください。だいたいどんなOSでも公式リポジトリに入ってるっぽいです。

シェルに設定する

今回はZshを用います。~/.zshrcに設定を追加していきます。

Powerline-Goを導入してる人は、それに関するコード事前に削除してください。

その後、以下のコードを末尾に追記します。

eval "$(starship init zsh)"

BashやFish、PowerLineなどもサポートされているそうなので、公式サイトも見てみてください。

プロンプトがこんな感じになったら導入成功です。

PowerLine-Goと共存する

ハヤオは自前のツールを使って、複数マシンで~/.zshrcを共有しています。

Starshipがインストールされていない環境では引き続きPowerLine-Goを使いたいということで、柔軟に対応できるようにシェルスクリプトを書きます。

if [[ "${TERM}" = "linux" ]]; then
    PROMPT='%B%F{red}%(?..%? )%f%b%B%F{red}%n%f%b@%m %B%40<..<%~%<< %b%# '
elif which starship 2> /dev/null 1>&2 && [[ "${FORCE_POWERLINE_GO-""}" != true ]]; then
    eval "$(starship init zsh)"
elif which powerline-go 2> /dev/null 1>&2; then
    function powerline_precmd() {
        PS1="$(powerline-go -error $? -shell zsh )"
    }

    function install_powerline_precmd() {
        for s in "${precmd_functions[@]}"; do
            if [ "$s" = "powerline_precmd" ]; then
                return
            fi
        done
        precmd_functions+=(powerline_precmd)
    }

    install_powerline_precmd
fi

ハヤオのシェルに関する設定の全容はこちらで確認できます。

Starshipの設定を変更する

StarShipの設定はかなり柔軟です。

いちから設定ファイルを書くのは厳しいと思うので、公式のテンプレートを改造するのがいいと思います。

テンプレートを適用する

公式のテンプレート一覧があるので、まずはテンプレートを選びます。

Starship: Cross-Shell Prompt
Starship is the minimal, blazing fast, and extremely customizable prompt for any shell! Shows the information you need, while staying sleek and minimal. Quick i...

上の一覧から好きなテーマを選んでください。

私は最初は「Pastel PowerLine」を選択しました。

その後、以下のコマンドでテンプレートの正式名称を確認します。

starship preset -l 

「Pastel PowerLine」の場合、正式名称は「pastel-powerline」でした。

正式名称がわかったら、次のコマンドでテンプレートをローカルに適用します。

starship preset [正式名称] -o ~/.config/starship.toml

これでテンプレートができようされるはずです。

テンプレートが適当されるとこんな感じになります。

自分の好きなように改造する

Starshipの設定は全て~/.config/starship.tomlに保存されます。

公式サイトにかなり詳しく説明されているので、ここを参考に色々書き換えます。

Starship: Cross-Shell Prompt
Starship is the minimal, blazing fast, and extremely customizable prompt for any shell! Shows the information you need, while staying sleek and minimal. Quick i...

ハヤオの設定

最後にハヤオのカスタマイズした設定を置いておきます。

dotfiles/shell/starship.toml at master · Hayao0819/dotfiles
Contribute to Hayao0819/dotfiles development by creating an account on GitHub.

PowerLineを参考にしつつ、2行表示にしてみました。

終わり

Starship、以前から気になっていたんですが導入してみてかなり良かったです。

PowerLineを導入して満足してる人は試してみては?

コメント

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