2019-08-17 16:53:59 -07:00
# Advanced Configuration
While Starship is a versatile shell, sometimes you need to do more than edit
`starship.toml` to get it to do certain things. This page details some of the more
advanced configuration techniques used in starship.
2025-06-14 20:32:16 +02:00
> [!WARNING]
> The configurations in this section are subject to change in future releases of Starship.
2019-08-17 16:53:59 -07:00
2022-07-25 07:40:40 +05:30
## TransientPrompt in PowerShell
It is possible to replace the previous-printed prompt with a custom string. This
is useful in cases where all the prompt information is not always needed. To enable
this, run `Enable-TransientPrompt` in the shell session. To make it permanent, put
this statement in your `$PROFILE` . Transience can be disabled on-the-fly with
`Disable-TransientPrompt` .
By default, the left side of input gets replaced with `>` . To customize this,
define a new function called `Invoke-Starship-TransientFunction` . For example, to
display Starship's `character` module here, you would do
``` powershell
function Invoke-Starship-TransientFunction {
& starship module character
}
Invoke-Expression ( & starship init powershell )
Enable-TransientPrompt
```
## TransientPrompt and TransientRightPrompt in Cmd
Clink allows you to replace the previous-printed prompt with custom strings. This
is useful in cases where all the prompt information is not always needed. To enable
this, run `clink set prompt.transient <value>` where \<value\> can be one of:
- `always` : always replace the previous prompt
- `same_dir` : replace the previous prompt only if the working directory is same
- `off` : do not replace the prompt (i.e. turn off transience)
You need to do this only once. Make the following changes to your `starship.lua`
to customize what gets displayed on the left and on the right:
- By default, the left side of input gets replaced with `>` . To customize this,
define a new function called `starship_transient_prompt_func` . This function
receives the current prompt as a string that you can utilize. For example, to
display Starship's `character` module here, you would do
``` lua
function starship_transient_prompt_func ( prompt )
return io.popen ( " starship module character "
.. " --keymap= " .. rl.getvariable ( ' keymap ' )
) : read ( " *a " )
end
load ( io.popen ( ' starship init cmd ' ) : read ( " *a " ) ) ( )
```
- By default, the right side of input is empty. To customize this, define a new
function called `starship_transient_rprompt_func` . This function receives the
current prompt as a string that you can utilize. For example, to display
the time at which the last command was started here, you would do
``` lua
function starship_transient_rprompt_func ( prompt )
return io.popen ( " starship module time " ) : read ( " *a " )
end
load ( io.popen ( ' starship init cmd ' ) : read ( " *a " ) ) ( )
```
2022-09-09 18:26:33 +05:30
## TransientPrompt and TransientRightPrompt in Fish
It is possible to replace the previous-printed prompt with a custom string. This
is useful in cases where all the prompt information is not always needed. To enable
this, run `enable_transience` in the shell session. To make it permanent, put
this statement in your `~/.config/fish/config.fish` . Transience can be disabled on-the-fly with
`disable_transience` .
Note that in case of Fish, the transient prompt is only printed if the commandline is non-empty,
and syntactically correct.
- By default, the left side of input gets replaced with a bold-green `❯ ` . To customize this,
define a new function called `starship_transient_prompt_func` . For example, to
display Starship's `character` module here, you would do
``` fish
function starship_transient_prompt_func
starship module character
end
starship init fish | source
enable_transience
```
- By default, the right side of input is empty. To customize this, define a new
function called `starship_transient_rprompt_func` . For example, to display
the time at which the last command was started here, you would do
``` fish
function starship_transient_rprompt_func
starship module time
end
starship init fish | source
enable_transience
```
2024-01-21 18:25:52 +05:30
## TransientPrompt and TransientRightPrompt in Bash
2024-03-24 08:04:11 +01:00
The [Ble.sh ](https://github.com/akinomyoga/ble.sh ) framework at v0.4 or higher allows you to replace
2024-01-21 18:25:52 +05:30
the previous-printed prompt with custom strings. This is useful in cases where all
the prompt information is not always needed. To enable this, put this in `~/.bashrc`
`bleopt prompt_ps1_transient=<value>` :
The \<value\> here is a colon-separated list of `always` , `same-dir` and `trim` .
2024-04-15 00:02:54 +09:00
When `prompt_ps1_final` is empty and the option `prompt_ps1_transient` has a non-empty \<value\>,
2024-01-21 18:25:52 +05:30
the prompt specified by `PS1` is erased on leaving the current command line.
2024-04-15 00:02:54 +09:00
If \<value\> contains a field `trim` , only the last line of multiline `PS1` is
2024-01-21 18:25:52 +05:30
preserved and the other lines are erased. Otherwise, the command line will be
2024-04-15 00:02:54 +09:00
redrawn as if `PS1=` is specified. When a field `same-dir` is contained in
\<value\> and the current working directory is different from the final directory of
2024-01-21 18:25:52 +05:30
the previous command line, this option `prompt_ps1_transient` is ignored.
2024-04-15 00:02:54 +09:00
Make the following changes to your `~/.blerc` (or in `~/.config/blesh/init.sh` ) to customize what gets displayed on
2024-01-21 18:25:52 +05:30
the left and on the right:
- To customize what the left side of input gets replaced with, configure the
`prompt_ps1_final` Ble.sh option. For example, to display Starship's `character`
module here, you would do
``` bash
2024-04-15 00:02:54 +09:00
bleopt prompt_ps1_final = '$(starship module character)'
2024-01-21 18:25:52 +05:30
```
- To customize what the right side of input gets replaced with, configure the
`prompt_rps1_final` Ble.sh option. For example, to display
the time at which the last command was started here, you would do
``` bash
2024-04-15 00:02:54 +09:00
bleopt prompt_rps1_final = '$(starship module time)'
2024-01-21 18:25:52 +05:30
```
2022-01-10 11:17:53 +05:30
## Custom pre-prompt and pre-execution Commands in Cmd
Clink provides extremely flexible APIs to run pre-prompt and pre-exec commands
in Cmd shell. It is fairly simple to use with Starship. Make the following changes
to your `starship.lua` file as per your requirements:
- To run a custom function right before the prompt is drawn, define a new
function called `starship_preprompt_user_func` . This function receives
the current prompt as a string that you can utilize. For example, to
draw a rocket before the prompt, you would do
``` lua
function starship_preprompt_user_func ( prompt )
print ( " 🚀 " )
end
load ( io.popen ( ' starship init cmd ' ) : read ( " *a " ) ) ( )
```
- To run a custom function right before a command is executed, define a new
function called `starship_precmd_user_func` . This function receives
the current commandline as a string that you can utilize. For example, to
print the command that's about to be executed, you would do
``` lua
function starship_precmd_user_func ( line )
print ( " Executing: " .. line )
end
load ( io.popen ( ' starship init cmd ' ) : read ( " *a " ) ) ( )
```
2019-08-17 16:53:59 -07:00
## Custom pre-prompt and pre-execution Commands in Bash
Bash does not have a formal preexec/precmd framework like most other shells.
Because of this, it is difficult to provide fully customizable hooks in `bash` .
However, Starship does give you limited ability to insert your own functions
into the prompt-rendering procedure:
- To run a custom function right before the prompt is drawn, define a new
function and then assign its name to `starship_precmd_user_func` . For example,
to draw a rocket before the prompt, you would do
``` bash
function blastoff( ) {
echo "🚀"
}
starship_precmd_user_func = "blastoff"
```
2021-04-22 18:09:21 +02:00
- To run a custom function right before a command runs, you can use the
2019-08-17 16:53:59 -07:00
[`DEBUG` trap mechanism ](https://jichu4n.com/posts/debug-trap-and-prompt_command-in-bash/ ).
2022-01-20 02:32:09 -06:00
However, you **must ** trap the DEBUG signal _ before _ initializing Starship!
2019-08-17 16:53:59 -07:00
Starship can preserve the value of the DEBUG trap, but if the trap is overwritten
after starship starts up, some functionality will break.
``` bash
function blastoff( ) {
echo "🚀"
}
trap blastoff DEBUG # Trap DEBUG *before* running starship
2022-01-21 11:26:27 -05:00
set -o functrace
2019-08-17 16:53:59 -07:00
eval $( starship init bash)
2022-01-21 11:26:27 -05:00
set +o functrace
2019-08-17 16:53:59 -07:00
```
2021-10-07 11:08:31 -07:00
## Custom pre-prompt and pre-execution Commands in PowerShell
PowerShell does not have a formal preexec/precmd framework like most other shells.
Because of this, it is difficult to provide fully customizable hooks in `powershell` .
However, Starship does give you limited ability to insert your own functions
into the prompt-rendering procedure:
Create a function named `Invoke-Starship-PreCommand`
``` powershell
function Invoke-Starship-PreCommand {
$host . ui . Write ( " 🚀 " )
}
```
2019-08-17 16:53:59 -07:00
## Change Window Title
2021-04-22 18:09:21 +02:00
Some shell prompts will automatically change the window title for you (e.g. to
2019-08-17 16:53:59 -07:00
reflect your working directory). Fish even does it by default.
Starship does not do this, but it's fairly straightforward to add this
2022-01-10 11:17:53 +05:30
functionality to `bash` , `zsh` , `cmd` or `powershell` .
2019-08-17 16:53:59 -07:00
First, define a window title change function (identical in bash and zsh):
``` bash
function set_win_title( ) {
echo -ne "\033]0; YOUR_WINDOW_TITLE_HERE \007"
}
```
You can use variables to customize this title (`$USER` , `$HOSTNAME` , and `$PWD`
are popular choices).
In `bash` , set this function to be the precmd starship function:
``` bash
starship_precmd_user_func = "set_win_title"
```
In `zsh` , add this to the `precmd_functions` array:
``` bash
precmd_functions += ( set_win_title)
```
2021-04-22 18:09:21 +02:00
If you like the result, add these lines to your shell configuration file
2020-07-02 06:46:40 +06:00
(`~/.bashrc` or `~/.zshrc` ) to make it permanent.
For example, if you want to display your current directory in your terminal tab title,
add the following snippet to your `~/.bashrc` or `~/.zshrc` :
``` bash
function set_win_title( ) {
2021-04-01 21:17:22 -07:00
echo -ne " \033]0; $( basename " $PWD " ) \007 "
2020-07-02 06:46:40 +06:00
}
starship_precmd_user_func = "set_win_title"
```
2019-09-07 19:33:06 -05:00
2022-01-10 11:17:53 +05:30
For Cmd, you can change the window title using the `starship_preprompt_user_func` function.
``` lua
function starship_preprompt_user_func ( prompt )
console.settitle ( os.getenv ( ' USERNAME ' ) .. " @ " .. os.getenv ( ' COMPUTERNAME ' ) .. " : " .. os.getcwd ( ) )
end
load ( io.popen ( ' starship init cmd ' ) : read ( " *a " ) ) ( )
```
2021-10-07 11:08:31 -07:00
You can also set a similar output with PowerShell by creating a function named `Invoke-Starship-PreCommand` .
``` powershell
# edit $PROFILE
function Invoke-Starship-PreCommand {
2023-04-23 13:42:51 +02:00
$host . ui . RawUI . WindowTitle = " $env:USERNAME @ $env:COMPUTERNAME ` : $pwd `a "
2021-10-07 11:08:31 -07:00
}
Invoke-Expression ( & starship init powershell )
```
2021-09-08 12:45:27 -07:00
## Enable Right Prompt
Some shells support a right prompt which renders on the same line as the input. Starship can
set the content of the right prompt using the `right_format` option. Any module that can be used
in `format` is also supported in `right_format` . The `$all` variable will only contain modules
not explicitly used in either `format` or `right_format` .
Note: The right prompt is a single line following the input location. To right align modules above
2024-03-03 17:55:30 +01:00
the input line in a multi-line prompt, see the [`fill` module ](../config/#fill ).
2021-09-08 12:45:27 -07:00
2024-01-21 18:25:52 +05:30
`right_format` is currently supported for the following shells: elvish, fish, zsh, xonsh, cmd, nushell, bash.
2024-03-24 08:04:11 +01:00
Note: The [Ble.sh ](https://github.com/akinomyoga/ble.sh ) framework v0.4 or higher should be installed in order to use right prompt in bash.
2022-12-02 19:40:36 +08:00
2021-09-08 12:45:27 -07:00
### Example
``` toml
# ~/.config/starship.toml
# A minimal left prompt
format = "" "$character" ""
# move the rest of the prompt to the right
right_format = "" "$all" ""
```
Produces a prompt like the following:
```
▶ starship on rprompt [!] is 📦 v0.57.0 via 🦀 v1.54.0 took 17s
```
2026-05-22 23:21:50 +05:30
When using `zsh` (v5.0.5+), the shell adds a default trailing space to the right prompt. This can cause alignment issues specifically when using the Starship `$fill` module. To remove this gap, add the following to your `.zshrc` :
``` zsh
ZLE_RPROMPT_INDENT = 0
```
2022-01-01 08:12:11 -05:00
## Continuation Prompt
Some shells support a continuation prompt along with the normal prompt. This prompt is rendered instead of the normal prompt when the user has entered an incomplete statement (such as a single left parenthesis or quote).
2023-01-07 21:43:56 +01:00
Starship can set the continuation prompt using the `continuation_prompt` option. The default prompt is `'[∙](bright-black) '` .
2022-01-01 08:12:11 -05:00
Note: `continuation_prompt` should be set to a literal string without any variables.
Note: Continuation prompts are only available in the following shells:
2022-01-20 02:32:09 -06:00
- `bash`
- `zsh`
- `PowerShell`
2022-01-01 08:12:11 -05:00
### Example
``` toml
# ~/.config/starship.toml
2024-04-15 00:02:54 +09:00
# A continuation prompt that displays two filled-in arrows
2023-01-07 21:43:56 +01:00
continuation_prompt = '▶▶ '
2022-01-01 08:12:11 -05:00
```
2021-09-08 12:45:27 -07:00
2026-04-03 18:02:39 +02:00
## Statusline for Claude Code
Starship supports displaying a custom statusline when running inside Claude Code, Anthropic's CLI tool for interactive coding with Claude. This statusline provides real-time information about your Claude session, including the model being used, context window usage, and session costs.
For more information about the Claude Code statusline feature, see the [Claude Code statusline documentation ](https://code.claude.com/docs/en/statusline ).
### Setup
To use Starship as your Claude Code statusline:
1. Run `/statusline` in Claude Code and ask it to configure Starship, or manually add the following to your `.claude/settings.json` :
``` json
{
"statusLine" : {
"type" : "command" ,
"command" : "starship statusline claude-code"
}
}
```
2. Customize the statusline appearance in your `~/.config/starship.toml` (see [Configuration ](#configuration ) below)
### Overview
When invoked with `starship statusline claude-code` , Starship receives Claude Code session data via stdin and renders a statusline using a dedicated profile named `claude-code` .
The profile includes three specialized modules:
- `claude_model` : Displays the current Claude model being used
- `claude_context` : Shows context window usage with a visual gauge
- `claude_cost` : Displays session cost and statistics
The default profile format is:
``` toml
[ profiles ]
claude-code = "$claude_model$git_branch$claude_context$claude_cost"
```
### Configuration
You can customize the Claude Code statusline by modifying the `claude-code` profile and individual module configurations in your `~/.config/starship.toml` :
``` toml
# ~/.config/starship.toml
# Customize the claude-code profile
[ profiles ]
claude-code = "$claude_model$claude_context$claude_cost"
# Configure individual modules
[ claude_model ]
format = "[$symbol$model]($style) "
symbol = "🤖 "
style = "bold blue"
[ claude_context ]
format = "[$gauge $percentage]($style) "
gauge_width = 10
[ claude_cost ]
format = "[$symbol$cost]($style) "
symbol = "💰 "
```
### Claude Model
The `claude_model` module displays the current Claude model being used in the session.
#### Options
| Option | Default | Description |
| --------------- | ---------------------------- | ----------------------------------------------------------------------------------------- |
| `format` | `'[$symbol$model]($style) '` | The format for the module. |
| `symbol` | `'🤖 '` | The symbol shown before the model name. |
| `style` | `'bold blue'` | The style for the module. |
| `model_aliases` | `{}` | Map of model IDs or display names to shorter aliases. Checks ID first, then display name. |
| `disabled` | `false` | Disables the `claude_model` module. |
#### Variables
| Variable | Example | Description |
| -------- | ------------------- | ------------------------------------- |
| model | `Claude 3.5 Sonnet` | The display name of the current model |
| model_id | `claude-3-5-sonnet` | The model ID |
| symbol | | Mirrors the value of option `symbol` |
| style\* | | Mirrors the value of option `style` |
\*: This variable can only be used as a part of a style string
#### Examples
``` toml
# ~/.config/starship.toml
# Basic customization
[ claude_model ]
format = "on [$symbol$model]($style) "
symbol = "🧠 "
style = "bold cyan"
# Using model aliases for vendor-specific model names
# You can alias by model ID or display name
[ claude_model . model_aliases ]
# Alias by vendor model ID (e.g. AWS Bedrock)
"global.anthropic.claude-sonnet-4-5-20250929-v1:0" = "Sonnet 4.5"
# Alias by display name
"Claude Sonnet 4.5 (Vendor Proxy)" = "Sonnet"
```
### Claude Context
The `claude_context` module displays context window usage as a percentage and visual gauge. The style automatically changes based on configurable thresholds.
#### Options
| Option | Default | Description |
| ---------------------- | --------------------------------- | -------------------------------------------------- |
| `format` | `'[$gauge $percentage]($style) '` | The format for the module. |
| `symbol` | `''` | The symbol shown before the gauge. |
| `gauge_width` | `5` | The width of the gauge in characters. |
| `gauge_full_symbol` | `'█'` | The symbol used for filled segments of the gauge. |
| `gauge_partial_symbol` | `'▒'` | The symbol used for partial segments of the gauge. |
| `gauge_empty_symbol` | `'░'` | The symbol used for empty segments of the gauge. |
| `display` | [see below ](#display ) | Threshold and style configurations. |
| `disabled` | `false` | Disables the `claude_context` module. |
##### Display
The `display` option is an array of objects that define thresholds and styles for different usage levels. The module uses the style from the highest matching threshold or hides the module if `hidden` is `true` .
| Option | Default | Description |
| ----------- | ------------ | ------------------------------------------------------------------------ |
| `threshold` | `0.0` | The minimum context windows usage percentage to match this configuration |
| `style` | `bold green` | The value of `style` if this display configuration is matched |
| `hidden` | `false` | Hide this module if this the configuration is matched. |
``` toml
[ [ claude_context . display ] ]
threshold = 0
hidden = true
[ [ claude_context . display ] ]
threshold = 30
style = "bold green"
[ [ claude_context . display ] ]
threshold = 60
style = "bold yellow"
[ [ claude_context . display ] ]
threshold = 80
style = "bold red"
```
#### Variables
| Variable | Example | Description |
| -------------------------- | ------- | ----------------------------------------------------- |
| gauge | `██▒░░` | Visual representation of context usage |
| percentage | `65%` | Context usage as a percentage |
| input_tokens | `45.2k` | Total input tokens in conversation |
| output_tokens | `12.3k` | Total output tokens in conversation |
| curr_input_tokens | `5.1k` | Input tokens from most recent API call |
| curr_output_tokens | `1.2k` | Output tokens from most recent API call |
| curr_cache_creation_tokens | `1.5k` | Cache creation tokens from most recent API call |
| curr_cache_read_tokens | `23.4k` | Cache read tokens from most recent API call |
| total_tokens | `200k` | Total context window size |
| symbol | | Mirrors the value of option `symbol` |
| style\* | | Mirrors the style from the matching display threshold |
\*: This variable can only be used as a part of a style string
#### Examples
**Minimal gauge-only display **
``` toml
# ~/.config/starship.toml
[ claude_context ]
format = "[$gauge]($style) "
gauge_width = 10
```
**Detailed token information **
``` toml
# ~/.config/starship.toml
[ claude_context ]
format = "[$percentage ($input_tokens in / $output_tokens out)]($style) "
```
**Custom gauge symbols **
``` toml
# ~/.config/starship.toml
[ claude_context ]
gauge_full_symbol = "▰"
gauge_partial_symbol = ""
gauge_empty_symbol = "▱"
gauge_width = 10
format = "[$gauge]($style) "
```
**Custom thresholds **
``` toml
# ~/.config/starship.toml
[ [ claude_context . display ] ]
threshold = 0
style = "bold green"
[ [ claude_context . display ] ]
threshold = 50
style = "bold yellow"
[ [ claude_context . display ] ]
threshold = 75
style = "bold orange"
[ [ claude_context . display ] ]
threshold = 90
style = "bold red"
```
### Claude Cost
The `claude_cost` module displays the total cost of the current Claude Code session in USD. Like `claude_context` , it supports threshold-based styling.
#### Options
| Option | Default | Description |
| ---------- | -------------------------------- | ----------------------------------- |
| `format` | `'[$symbol(\\$$cost)]($style) '` | The format for the module. |
| `symbol` | `'💰 '` | The symbol shown before the cost. |
| `display` | [see below ](#display-1 ) | Threshold and style configurations. |
| `disabled` | `false` | Disables the `claude_cost` module. |
##### Display
The `display` option is an array of objects that define cost thresholds and styles. The module uses the style from the highest matching threshold or hides the module if `hidden` is `true` .
| Option | Default | Description |
| ----------- | ------------ | ------------------------------------------------------------- |
| `threshold` | `0.0` | The minimum cost in USD to match this configuration |
| `style` | `bold green` | The value of `style` if this display configuration is matched |
| `hidden` | `false` | Hide this module if this configuration is matched. |
**Default configuration: **
``` toml
[ [ claude_cost . display ] ]
threshold = 0.0
hidden = true
[ [ claude_cost . display ] ]
threshold = 1.0
style = "bold yellow"
[ [ claude_cost . display ] ]
threshold = 5.0
style = "bold red"
```
#### Variables
| Variable | Example | Description |
| ------------- | -------- | ----------------------------------------------------- |
| cost | `1.23` | Total session cost in USD (formatted to 2 decimals) |
| duration | `1m 30s` | Total session duration |
| api_duration | `45s` | Total API call duration |
| lines_added | `1.2k` | Total lines of code added |
| lines_removed | `500` | Total lines of code removed |
| symbol | | Mirrors the value of option `symbol` |
| style\* | | Mirrors the style from the matching display threshold |
\*: This variable can only be used as a part of a style string
#### Examples
``` toml
# ~/.config/starship.toml
# Cost with code change statistics
[ claude_cost ]
format = "[$symbol$cost (+$lines_added -$lines_removed)]($style) "
# Hide module until cost exceeds $0.10
[ [ claude_cost . display ] ]
threshold = 0.0
hidden = true
[ [ claude_cost . display ] ]
threshold = 0.10
style = "bold yellow"
[ [ claude_cost . display ] ]
threshold = 2.0
style = "bold red"
# Show duration information
[ claude_cost ]
format = "[$symbol$cost ($duration)]($style) "
```
2019-09-07 19:33:06 -05:00
## Style Strings
Style strings are a list of words, separated by whitespace. The words are not case sensitive (i.e. `bold` and `BoLd` are considered the same string). Each word can be one of the following:
2022-01-20 02:32:09 -06:00
- `bold`
- `italic`
- `underline`
- `dimmed`
- `inverted`
2022-07-31 10:30:34 -04:00
- `blink`
- `hidden`
- `strikethrough`
2022-01-20 02:32:09 -06:00
- `bg:<color>`
- `fg:<color>`
- `<color>`
- `none`
2019-09-07 19:33:06 -05:00
2024-06-28 23:40:35 +02:00
where `<color>` is a color specifier (discussed below). `fg:<color>` and `<color>` currently do the same thing, though this may change in the future.
`<color>` can also be set to `prev_fg` or `prev_bg` which evaluates to the previous item's foreground or background color respectively if available or `none` otherwise.
`inverted` swaps the background and foreground colors. The order of words in the string does not matter.
2019-09-07 19:33:06 -05:00
2021-04-22 18:09:21 +02:00
The `none` token overrides all other tokens in a string if it is not part of a `bg:` specifier, so that e.g. `fg:red none fg:blue` will still create a string with no styling. `bg:none` sets the background to the default color so `fg:red bg:none` is equivalent to `red` or `fg:red` and `bg:green fg:red bg:none` is also equivalent to `fg:red` or `red` . It may become an error to use `none` in conjunction with other tokens in the future.
2019-09-07 19:33:06 -05:00
A color specifier can be one of the following:
2022-01-20 02:32:09 -06:00
- One of the standard terminal colors: `black` , `red` , `green` , `blue` ,
`yellow` , `purple` , `cyan` , `white` . You can optionally prefix these
with `bright-` to get the bright version (e.g. `bright-white` ).
- A `#` followed by a six-digit hexadecimal number. This specifies an
[RGB color hex code ](https://www.w3schools.com/colors/colors_hexadecimal.asp ).
- A number between 0-255. This specifies an [8-bit ANSI Color Code ](https://i.stack.imgur.com/KTSQa.png ).
2019-09-07 19:33:06 -05:00
If multiple colors are specified for foreground/background, the last one in the string will take priority.
2022-07-31 10:30:34 -04:00
Not every style string will be displayed correctly by every terminal. In particular, the following known quirks exist:
2024-04-15 00:02:54 +09:00
- Many terminals disable support for `blink` by default.
2022-11-11 18:10:48 +11:00
- `hidden` is [not supported on iTerm ](https://gitlab.com/gnachman/iterm2/-/issues/4564 ).
2024-04-15 00:02:54 +09:00
- `strikethrough` is not supported by the default macOS Terminal.app.