こんにちは。ナミレリです。この記事では2025年に新調した私のStarshipの設定を紹介します。
以前にStarship自体について詳しく紹介した記事もありますので、Starshipをより詳しく知りたい方はご覧ください。
Starshipについて詳しく紹介した記事
この記事はこんな人にオススメ
- プロンプトの見た目にこだわるユーザー
- カスタマイズ性を重視するユーザー
- クロスプラットフォームの一貫性を求めるユーザー
- 高パフォーマンスを求めるユーザー
- M3 MacBook Air 15インチ、M2 MacBook Air 13インチ
- macOS Sequoia 15.2
- zsh 5.9 (arm64-apple-darwin24.0)
- starship 1.21.1
- WezTerm 20240203-110809-5046fc22
- Parallels Desktop 20 for Mac バージョン 20.1.2 (55742)
WezTermについてこちらの記事で詳しく紹介しています。
目次
はじめに(完成形の紹介)
今回の完成形のプロンプトが下の画像です。
下のプロンプトは、現在のディレクトリとgitの各種情報を表示し、右側にpythonのバージョンと現在時刻を表示しています。
基本的なプロンプト
下のプロンプトでは、私はATOKを使っていますが、ATOKの日本語入力がONの状態でプロンプトにATOKと表示させています。
ATOKがONの状態
下のプロンプトは、pythonのvenv環境と、direnvの状態を表示しています。
venv + direnvの状態
書き込み権限のないディレクトリでは、鍵のマークを表示しています。
Read Onlyのディレクトリ
下のプロンプトは、sudo状態の時の表示です。
sudoの状態
カレントディレクトリに.py、.lua、.rsがあると右プロンプトにpython、lua、rustのバージョンを表示します。
pythonなどのバージョンを表示
下のプロンプトは、右プロンプトにコマンドの実行時間を表示。
コマンドの実行時間を表示
私の使っているカラーテーマについてまとめます。基本的にはcatppuccinで統一しています。
テーマ | |
---|---|
bat | Catppuccin-mocha |
wezterm | Catppuccin Mocha |
neovim | catppuccin-mocha |
alacritty | catppuccin-mocha |
tmux | catppuccin mocha |
では、starshipのプロンプトの設定方法を解説していきます。
準備
Nerd Fontフォントはbrewでインストールがおすすめです。
今回はjetbrains-mono-nerd-fontとcicaをインストールします。
brew install font-jetbrains-mono-nerd-font
brew install font-cica
formatとright_formatの設定
starshipのデフォルトの設定ファイルの場所は、~/.config/starship.tomlです。STARSHIP_CONFIGという環境変数を使って、設定ファイルを指定することもできます。
formatとright_formatの設定です。formatとはプロンプトのフォーマットでプロンプト全体の形式を定義します。right_formatは右プロンプトのフォーマットです。
format = """
$os\
$sudo\
$custom\
$direnv\
$directory\
$git_branch\
$git_state\
$git_status\
$git_metrics\
$fill\
$conda\
$python\
$lua\
$rust\
\n$character\
"""
right_format = """
$cmd_duration\
$time\
"""
OSモジュールの設定
[os]セクションでは、osモジュールの設定を記載します。現在使用しているosのアイコンや名前、色などをプロンプトに表示するためのモジュールです。
https://starship.rs/ja-JP/config/#os
###########################################
[os.symbols]
Macos = " "
Linux = " "
Ubuntu = " "
Debian = " "
###########################################
[os]
disabled = false
format = """
[](fg:#89b4fa)\
[$symbol]($style)\
[](fg:#89b4fa)\
"""
style = "fg:#313244 bg:#89b4fa"
catppuccinのカラーテーマを参考に色を設定しています。
sudoモジュールの設定
[sudo]セクションでは、sudoモジュールの設定を記載します。このモジュールはsudoのパスワードがキャッシュ(credential)されている場合に表示します。
https://starship.rs/ja-JP/config/#sudo
[sudo]
disabled = false
symbol = ' sudo'
format = """
[](fg:#eba0ac)\
[$symbol]($style)\
[](fg:#eba0ac)\
"""
style = "bold fg:#313244 bg:#eba0ac "
カスタムモジュール(ATOK表示)の設定
customモジュールは任意のコマンド出力を表示することができます。IMEの状態をmacismを使って取得し、表示するようにしています。
https://starship.rs/ja-JP/config/#カスタムコマンド
ATOKが有効かどうかをmacismを使って判定し、有効の場合は「ATOK」という文字列を返すスクリプトを用意します。今回は~/dotfiles/bin/ime_status.shに設置します。
#!/bin/bash
# macismの出力に基づいてIMEの状態を確認
if [ "$(macism)" == "com.justsystems.inputmethod.atok34.Japanese" ]; then
echo "ATOK"
このスクリプトを指定したカスタムモジュールを定義します。
[custom.ime_status]
command = "$HOME/dotfiles/bin/ime_status.sh"
when = "test -n \"$($HOME/dotfiles/bin/ime_status.sh)\""
format = """
[](fg:#f9e2af)\
[$output]($style)\
[](fg:#f9e2af)\
"""
style = "bold fg:#313244 bg:#f9e2af"
カスタムモジュール(venv環境表示)の設定
customモジュールは任意のコマンド出力を表示することができます。basename $VIRTUAL_ENVの結果を表示します。
https://starship.rs/ja-JP/config/#カスタムコマンド
[custom.venv]
command = "basename \"$VIRTUAL_ENV\""
when = "test -n \"$VIRTUAL_ENV\""
format = """
[](fg:#cba6f7)\
[$output]($style)\
[](fg:#cba6f7)\
"""
style = "bold fg:#313244 bg:#cba6f7"
direnvモジュールの設定
[direnv]モジュールは、direnvのステータスとdirenvの設定ファイルがロードされているか、また許可されているかを表示するモジュールです。
https://starship.rs/ja-JP/config/#direnv
[direnv]
disabled = false
format = """
[](fg:#89dceb)\
[$symbol$allowed]($style)\
[](fg:#89dceb)\
"""
style = "bold fg:#313244 bg:#89dceb"
direcotoryモジュールの設定
[directory]モジュールは、現在の作業ディレクトリのパスをプロンプトに表示します。
https://starship.rs/ja-JP/config/#directory
[directory]
truncation_length = 6
truncation_symbol = ' '
truncate_to_repo = false
home_symbol = ' ~'
read_only = ' '
format = """
[](fg:#b4befe)\
[$path]($style)\
[$read_only]($read_only_style)\
[](fg:#b4befe)\
"""
style = 'bold fg:#313244 bg:#b4befe'
read_only_style = 'bold fg:#313244 bg:#b4befe'
gitモジュールの設定
[git_branch]モジュールは、現在のディレクトリにおけるgitリポジトリのアクティブなブランチ名を表示するモジュールです。
https://starship.rs/ja-JP/config/#git-branch
[git_branch]
symbol = ' '
truncation_length = 4
truncation_symbol = ''
style = 'bold fg:#89dceb bg:#45475a'
format = """
[](fg:#45475a)\
[$symbol$branch(:$remote_branch)]($style)\
"""
[git_status]モジュールは、現在のディレクトリにおけるgitリポジトリの状態に関する情報を表示するモジュールです。
https://starship.rs/ja-JP/config/#git-status
[git_status]
disabled = false
style = 'bold fg:#eba0ac bg:#45475a'
conflicted = '='
ahead = '⇡${count}'
behind = '⇣${count}'
diverged = '⇕'
up_to_date = '✓'
untracked = '?'
stashed = '$'
modified = '!${count}'
renamed = '»'
deleted = '✘'
format = """
[ ](fg:#89dceb bg:#45475a)\
[$all_status$ahead_behind]($style)\
"""
[git_metrics]モジュールは、現在のgitリポジトリ内で追加された行数と削除された行数を表示します。
https://starship.rs/ja-JP/config/#git-metrics
[git_metrics]
disabled = false
added_style = 'bold fg:#a6e3a1 bg:#45475a'
deleted_style = 'bold fg:#89b4fa bg:#45475a'
format = """
[ ](fg:#89dceb bg:#45475a)\
[+$added]($added_style)[-$deleted]($deleted_style)[](fg:#45475a)\
"""
fillモジュールの設定
[fill]モジュールは、行の余分なスペースを記号で埋めます。
https://starship.rs/ja-JP/config/#fill
[fill]
symbol = '─'
style = 'fg:#89b4fa) bg:none'
pythonモジュールの設定
[python]モジュールは、pythonのバージョンとvenv仮想環境名を表示するモジュールです。デフォルトでは次の条件のいずれかが満たされると、pythonのバージョンが表示されます。
- カレントディレクトリに
.python-version
ファイルがある場合 - カレントディレクトリに
Pipfile
ファイルがある場合 - カレントディレクトリに
__init__.py
ファイルがある場合 - カレントディレクトリに
pyproject.toml
ファイルがある場合 - カレントディレクトリに
requirements.txt
ファイルがある場合 - カレントディレクトリに
setup.py
ファイルがある場合 - カレントディレクトリに
tox.ini
ファイルがある場合 - カレントディレクトリに
.py
の拡張子ファイルがある場合 - venv仮想環境がアクティブな場合
https://starship.rs/ja-JP/config/#python
[python]
pyenv_version_name = false
symbol = '[ ](fg:#f9e2af bg:#8093fd)'
format = '[](fg:#8093fd)[ ${symbol}${pyenv_prefix}(${version})(\($virtualenv\))]($style)[](fg:#8093fd)'
style = 'bold fg:#313244 bg:#8093fd'
luaモジュールの設定
[lua]モジュールは、luaのバージョンを表示するモジュールです。デフォルトでは次の3つの条件のいずれかが満たされると、luaのバージョンが表示されます。
- カレントディレクトリに.lua-versionがある場合
- カレントディレクトリにluaディレクトリがある場合
- カレントディレクトリに.luaの拡張子のファイルがある場合
https://starship.rs/ja-JP/config/#lua
[lua]
symbol = "[ ](fg:#1e66f5 bg:#89b4fa)"
format = '[](fg:#89b4fa)[ ${symbol}(${version})]($style)[](fg:#89b4fa)'
style = 'bold fg:#313244 bg:#89b4fa'
rustモジュールの設定
[rust]モジュールは、rustのバージョンを表示するモジュールです。デフォルトでは次の2つの条件のいずれかが満たされると、rustのバージョンが表示されます。
- カレントディレクトリにCargo.tomlファイルがある場合
- カレントディレクトリに.rsの拡張子のファイルがある場合
https://starship.rs/ja-JP/config/#rust
[rust]
symbol = "[ ](fg:#e64553 bg:#eba0ac)"
format = '[](fg:#eba0ac)[ ${symbol}(${version})]($style)[](fg:#eba0ac)'
style = 'bold fg:#313244 bg:#eba0ac'
cmd_durationモジュールの設定
[cmd_duration]モジュールは、コマンドの実行時間を表示するモジュールです。
https://starship.rs/ja-JP/config/#command-duration
[cmd_duration]
show_milliseconds = true
min_time = 100
format = '[ $duration ](fg:#f9e2af)'
timeモジュールの設定
[time]モジュールは、現在時間を表示するモジュールです。
https://starship.rs/ja-JP/config/#時刻
[time]
disabled = false
format = '[ $time](bold fg:#6c7086)'
time_format = '%T'
キャラクターモジュールの設定
[character]モジュールは、プロンプトの最後に表示される文字($
や >
等)をカスタマイズするための設定を記載します。
https://starship.rs/ja-JP/config/#character
[character]
success_symbol = "[❯](bold #74c7ec)[❯](bold #b4befe)[❯](bold #89b4fa)"
error_symbol = "[❯](bold #eba0ac)[❯](bold #f38ba8)[❯](bold #f17497)"
最後に
最後まで読んでいただきありがとうございます。StarshipでMacのターミナルをかっこ良く使いやすくする(2025年版)はいかがでしたでしょうか。この記事で2025年に再設定した私のStarshipの設定方法やカスタマイズ方法を紹介しました。
自分好みのプロンプトにするとモチベが上がりますのでぜひいろいろ試してください。