Skip to content

Migrating to v0.45.0

Starship v0.45.0 is a release containing breaking changes, in preparation for the big v1.0.0. We have made some major changes around how configuration is done on the prompt, to allow for a greater degree of customization.

This guide is intended to walk you through the breaking changes.

prompt_order has been replaced by a root-level format

Previously to v0.45.0, prompt_order would accept an array of module names in the order which they should be rendered by Starship.

Starship v0.45.0 instead accepts a format value, allowing for customization of the prompt outside of the modules themselves.

Example pre-v0.45.0 configuration

toml
prompt_order = [
  "username",
  "hostname",
  "directory",
  "git_branch",
  "git_commit",
  "git_state",
  "git_status",
  "cmd_duration",
  "custom",
  "line_break",
  "jobs",
  "battery",
  "time",
  "character",
]

Example v0.45.0 configuration

toml
format = """\
  $username\
  $hostname\
  $directory\
  $git_branch\
  $git_commit\
  $git_state\
  $git_status\
  $cmd_duration\
  $custom\
  $line_break\
  $jobs\
  $battery\
  $time\
  $character\
  """

Module prefix and suffix have been replaced by format

Previously to v0.45.0, some modules would accept prefix and/or suffix in order to stylize the way that modules are rendered.

Starship v0.45.0 instead accepts a format value, allowing for further customization of how modules are rendered. Instead of defining a prefix and suffix for the context-based variables, the variables can now be substituted from within a format string, which represents the module's output.

Example pre-v0.45.0 configuration

toml
[cmd_duration]
prefix = "took "

Example v0.45.0 configuration

toml
[cmd_duration]
# $duration – The command duration (e.g. "15s")
# $style    – The default style of the module (e.g. "bold yellow")
format = "took [$duration]($style) "

Affected Modules

Character

Removed PropertyReplacement
symbolsuccess_symbol
use_symbol_for_statuserror_symbol
style_successsuccess_symbol
style_failureerror_symbol

Changes to the Default Configuration

diff
[character]
-- symbol = "❯"
-- error_symbol = "✖"
-- use_symbol_for_status = true
-- vicmd_symbol = "❮"
++ success_symbol = "[❯](bold green)"
++ error_symbol = "[❯](bold red)"
++ vicmd_symbol = "[❮](bold green)"

Previously, the use_symbol_for_status property was used to configure the prompt to show the error_symbol when the last command resulted in a non-zero status code.

With the release of v0.45.0, we now always use error_symbol after non-zero status codes, unifying use_symbol_for_status and error_symbol properties.

To configure the prompt to use the older use_symbol_for_status = true configuration, add the following to your config file:

toml
[character]
error_symbol = "[✖](bold red)"

Note: The character element automatically adds a space after, so unlike the other format strings, we specifically do not add one in the above examples.

Command Duration

Removed PropertyReplacement
prefixformat

Changes to the Default Configuration

diff
[cmd_duration]
-- prefix = "took "
++ format = "took [$duration]($style) "

Directory

Removed PropertyReplacement
prefixformat

Changes to the Default Configuration

diff
[directory]
-- prefix = "in "
++ format = "[$path]($style)[$read_only]($read_only_style) "

Environment Variable

Removed PropertyReplacement
prefixformat
suffixformat

Changes to the Default Configuration

diff
[env_var]
-- prefix = ""
-- suffix = ""
++ format = "with [$env_value]($style) "

Git Commit

Removed PropertyReplacement
prefixformat
suffixformat

Changes to the Default Configuration

diff
[git_commit]
-- prefix = "("
-- suffix = ")"
++ format = '[\($hash\)]($style) '

Git Status

Removed PropertyReplacement
prefixformat
suffixformat
show_sync_countformat

Changes to the Default Configuration

diff
[git_status]
-- prefix = "["
-- suffix = "]"
-- show_sync_count = false
++ format = '([\[$all_status$ahead_behind\]]($style) )'

Previously, the show_sync_count property was used to configure the prompt to show the number of commits the branch was ahead or behind the remote branch.

With the release of v0.45.0, this has been replaced with three separate properties, ahead, behind, and diverged.

To configure the prompt to use the older show_sync_count = true configuration, set the following to your config file:

toml
[git_status]
ahead = "⇡${count}"
diverged = "⇕⇡${ahead_count}⇣${behind_count}"
behind = "⇣${count}"

Hostname

Removed PropertyReplacement
prefixformat
suffixformat

Changes to the Default Configuration

diff
[hostname]
-- prefix = ""
-- suffix = ""
++ format = "[$hostname]($style) in "

Singularity

Removed PropertyReplacement
labelformat
prefixformat
suffixformat

Changes to the Default Configuration

diff
[singularity]
-- prefix = ""
-- suffix = ""
++ format = '[$symbol\[$env\]]($style) '

Time

Removed PropertyReplacement
formattime_format

Changes to the Default Configuration

diff
[time]
-- format = "🕙[ %T ]"
++ time_format = "%T"
++ format = "at 🕙[$time]($style) "

Custom Commands

Removed PropertyReplacement
prefixformat
suffixformat

Changes to the Default Configuration

diff
[custom.example]
-- prefix = ""
-- suffix = ""
++ format = "[$symbol$output]($style) "