Starshipでプロンプトをおしゃれにカスタマイズする

先日Rust製のプロンプトカスタマイズツールStarshipを自分のPCに導入してみました。
導入すると下記のように可愛いプロンプトにすることができます。

Starship導入後のMacターミナル

自分はMacを使っているのでこの記事ではMacにインストールする方法をご紹介します。
ちなみにStarshipはMac, Windows, Linux, Android, BSDのOSにインストールでき、ほとんどのシェルに対応しています。

インストール


# brewでインストール
brew install starship

# ~/.zshrcに下記を追加
eval "$(starship init zsh)"

# シェルの再読み込み
source ~/.zshrc

Nerd Fontをインストールし、ターミナルに適用する

このままでも使用できますが、一部のアイコンフォントが文字化けしたままなのでアイコンフォントに対応したフォントを指定する必要があります。

公式サイトではNerd Fontsをオススメしているみたいなので、FONTS DOWNLOADSから好みのフォントをダウンロードしてFont Bookでインストール。ターミナルの設定画面から先ほどインストールしたフォントを指定して完了です。

自分はどうしても今使っているフォントをそのまま使いたかったのですが、そのフォントがアイコンフォントに対応していなかったので後述する”既存フォントとアイコンフォントを合体するツール”を使用して対応しました。Nerd Fontsに気に入ったフォントがない場合は参考にしてみてください。

カスタマイズ

デフォルトのままでも使用できますが、設定ファイルを作成することによって自分好みにカスタマイズすることができます。

設定ファイルの作成


mkdir -p ~/.config && touch ~/.config/starship.toml

設定ファイルの中身

自分の設定ファイルの中身は下記の通りシンプル。


[character]
success_symbol = "[🫐 ](bold green)"
error_symbol = "[🍓 ](bold red)"
vicmd_symbol = "[🍌 ](bold green)"

[package]
style = "bold yellow"

Configuration | Starshipを見るとバッテリー残量やメモリ使用量を表示したり等、設定できる項目がめちゃくちゃ多いので興味のある方は見てみてください。

既存フォントとアイコンフォントを合体する方法(番外編)

自分はターミナルやVS CodeでLotionというプログラミング用フォントを愛用しているのですが、アイコンフォントに対応していなかったためFontForgeとNerd Fontsのfont-patcherを使用してアイコンフォントと合体した新しいフォントを作成することにしました。

FontForgeのインストール


brew install fontforge

Nerd fontsのリポジトリをクローン

任意のディレクトリでNerd fontsのリポジトリをクローンします(8GBくらいあるので結構時間かかります)


# この中にfont-patcherが入っています。
git clone https://github.com/ryanoasis/nerd-fonts.git

font-patcherで既存フォントにパッチを当てる

-cで全てのフォントを指定、-outで新しく作成したフォントのアウトプットディレクトリを指定します。
オプションについてはGitHubのFull optionsをご覧ください。


# 書き方
fontforge -script [font-patcherのパス] [フォントのパス] -c -out [アウトプットディレクトリ]

# 例
fontforge -script ~/nerd-fonts/font-patcher /Users/simmon/Downloads/Lotion-RegularWithLigatures.ttf -c -out ~/font-tmp

アウトプットディレクトリに作成された新しいフォントをターミナルで適用して完了です。