✨
Starship(on nushell)のcustom commandをon/off
Nu ShellでのStarship設定ファイルアクセス
Starshipの設定はTOMLファイル形式に記載しています。nu shellで開くと、TOML形式ファイルを認識して次のようにレコード形式で表示されます。
❯ open ~/.config/starship.toml
╭────────────────┬────────────────────────────────────────────────────────────────────────╮
│ c │ {record 3 fields} │
│ custom │ {record 3 fields} │
│ deno │ {record 2 fields} │
│ directory │ {record 5 fields} │
│ docker_context │ {record 3 fields} │
│ format │ $directory[](fg:#DA627D │
│ │ bg:#FCA17D)$git_branch$git_status[](fg:#FCA17D │
│ │ bg:#86BBD8)$c$nodejs$rust$deno[](fg:#86BBD8 │
│ │ bg:#06969A)$docker_context[](fg:#06969A │
│ │ bg:#33658A)$status[](fg:#33658A bg:#191970)$custom[](fg:#191970)❯ │
│ │ │
│ git_branch │ {record 3 fields} │
│ git_status │ {record 2 fields} │
│ nodejs │ {record 4 fields} │
│ rust │ {record 3 fields} │
│ status │ {record 5 fields} │
╰────────────────┴────────────────────────────────────────────────────────────────────────╯
ここで、nu shellに読み込んだ設定項目のDeno
のformat
をアクセスしてみます。
open ~/.config/starship.toml | $in.deno.format
[🦕 $version]($style)
次にこの項目内容を変更してみます。変更するにはnu shellビルトインコマンドのupdate
を使います。
❯ open ~/.config/starship.toml | update deno.format "[Deno]($style)" | $in.deno
╭────────┬───────────────────────╮
│ format │ [Deno]($style) │
│ style │ bg:#86BBD8 fg:#000000 │
╰────────┴───────────────────────╯
変更できたことが確認できました。最後に変更内容をファイルに書き戻します。
❯ open ~/.config/starship.toml | update deno.format "[Deno]($style)" | save ~/.config/starship.toml
カスタマイズコマンドのOn/Off制御
Starshipカスタムコマンドの主要オプションは下記のとおりです。
Option | Default | Description |
---|---|---|
command | "" | 出力を表示するコマンド。コマンドは stdin でシェルに渡されます。 |
when | false | モジュール表示条件(true/false or コマンド終了ステータス) |
detect_files | [] | 作業ディレクトリでマッチするファイル名あるか確認するファイルリスト |
detect_extensions | [] | 作業ディレクトリでマッチする拡張子のファイルがあるか確認する拡張子リスト |
detect_folders | [] | 作業ディレクトリでマッチするフォルダか確認するフォルダ名リスト |
disabled | false | trueなら、このカスタム モジュールを無効 |
下記の動作確認用のカスタムコマンドを設定ファイルに追記します。On/Off制御にはdisabled
,when
オプションの設定値を変更すればできそうですが、今回はwhen
オプションで確認します。
[custom.trial]
description = "trial"
command = "echo trial"
when = false
これまでのTOML内容の更新方法で、when
オプションを変更して、On/Offを制御します。
# 有効化
❯ open ~/.config/starship.toml | update custom.trial.when true | save ~/.config/starship.toml
# 無効化
❯ open ~/.config/starship.toml | update custom.trial.when false | save ~/.config/starship.toml
この内容をAliasやコマンド定義しておくと使いやすくなると思います。
これで動的にカスタムコマンドのOn/Offができるようになるほか、一時的に設定内容を変更することがnu shellで簡単にできるようになりました。設定ファイルはバックアップしておいてから試した方がいいでしょう。
Tips
なおStarshipではstarship explain
でモジュールの動作状況および実行時間が表示されるので、実際に変更内容が反映できているかなどを確認できます。
今回の場合のカスタムコマンドcustom.trial
でwhen
がtrue
の場合は以下のとおりになります。description
を設定していれば下記のtrial
というように表示されます。
❯ starship explain
Here's a breakdown of your prompt:
"trial " (7ms) - trial
" ~ " (<1ms) - The current working directory
Discussion