強いタイトルです。一回こういうのやってみたかった。
こんにちは、山田ハヤオです。以前からずっと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の設定はかなり柔軟です。
いちから設定ファイルを書くのは厳しいと思うので、公式のテンプレートを改造するのがいいと思います。
テンプレートを適用する
公式のテンプレート一覧があるので、まずはテンプレートを選びます。
上の一覧から好きなテーマを選んでください。
私は最初は「Pastel PowerLine」を選択しました。
その後、以下のコマンドでテンプレートの正式名称を確認します。
starship preset -l
「Pastel PowerLine」の場合、正式名称は「pastel-powerline」でした。
正式名称がわかったら、次のコマンドでテンプレートをローカルに適用します。
starship preset [正式名称] -o ~/.config/starship.toml
これでテンプレートができようされるはずです。
テンプレートが適当されるとこんな感じになります。
自分の好きなように改造する
Starshipの設定は全て~/.config/starship.tomlに保存されます。
公式サイトにかなり詳しく説明されているので、ここを参考に色々書き換えます。
ハヤオの設定
最後にハヤオのカスタマイズした設定を置いておきます。
PowerLineを参考にしつつ、2行表示にしてみました。
終わり
Starship、以前から気になっていたんですが導入してみてかなり良かったです。
PowerLineを導入して満足してる人は試してみては?
コメント