Add $bun to the format string and [bun] section in catppuccin-powerline,
gruvbox-rainbow, jetpack, no-nerd-font, pastel-powerline, and tokyo-night
presets, following each preset's existing nodejs style conventions.
* build(deps): update actions/github-script action to v9
* build(deps): update actions/github-script to use ES module syntax
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: David Knaack <davidkna@users.noreply.github.com>
Without the "std" feature enabled, whoami falls back to the stub
implementation and Starship shows anonymous@localhost regardless of the
actual user or hostname.
* fix(format): allow empty textgroups to set prev_fg/prev_bg
Previously, empty format strings like `[](bg:#color)` did not produce
any segments, making it impossible to set `prev_fg` or `prev_bg` for
subsequent segments without printing visible characters.
This change makes `parse_format` generate a zero-width styled segment
when the format is empty, allowing powerline-style prompts to set
colors via empty textgroups.
Signed-off-by: cappyzawa <cappyzawa@gmail.com>
* refactor: move empty textgroup handling to parse_textgroup
Move the empty format check from parse_format to parse_textgroup
as suggested in code review. This keeps the logic scoped to
textgroup-specific behavior.
Signed-off-by: cappyzawa <cappyzawa@gmail.com>
---------
Signed-off-by: cappyzawa <cappyzawa@gmail.com>
The --client flag was removed from Helm in a recent version (see
helm/helm#31301), causing the helm module to fail silently when
detecting the version.
Helm 2 was EOL in November 2020 and without the --client flag,
`helm version --short` attempts to connect to Tiller. If that
connection fails, the command returns a non-zero exit code and
exec_cmd returns None, so the Helm 2 parsing code is never reached.
The tests `credentials_file_is_ignored_when_is_directory` and
`config_file_path_is_ignored_when_is_directory` were failing on
machines with `~/.aws/config` or `~/.aws/credentials` present.
Each test now sets both `AWS_CONFIG_FILE` and
`AWS_SHARED_CREDENTIALS_FILE` environment variables to ensure
complete isolation from the host environment.
Signed-off-by: cappyzawa <cappyzawa@gmail.com>
* build(deps): update rust crate whoami to v2
* chore: move to base import (`fallible` has become default)
* chore: add back wasi support
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: David Knaack <davidkna@users.noreply.github.com>
* ci: add install script workflow
Add GitHub Actions workflow to test install.sh script.
This prevents regressions like the one reported in issue #7133 where
changes to the install script broke the recommended installation method.
The workflow includes:
- shellcheck for script linting (temporarily excludes SC3045)
- Integration test using curl piped to sh as documented on starship.rs
Signed-off-by: cappyzawa <cappyzawa@gmail.com>
* fixup! ci: add install script workflow
Signed-off-by: cappyzawa <cappyzawa@gmail.com>
* fixup! ci: add install script workflow
Signed-off-by: cappyzawa <cappyzawa@gmail.com>
* ci: add shfmt check and format install scripts
Add shfmt job to install-script workflow for consistent shell script
formatting. Apply shfmt to all scripts under install/ directory.
Signed-off-by: cappyzawa <cappyzawa@gmail.com>
---------
Signed-off-by: cappyzawa <cappyzawa@gmail.com>
* docs(shlvl): fix repeat example
`$shlvl` needs to be removed from `format` to have a prompt like `❯❯❯`
* docs(shlvl): remove redundant `threshold = 0` in repeat example
This module is now outputting the warning message 'Invalid utc_time_offset
configuration provided! Falling back to "local".' when
`utc_time_offset` is actually set to "local" (which is the default
value). Looks like this check for "local" was lost during a refactor.
problem: `Context::detect_env_vars` is insufficient for the logic used
by the username module, as it cannot differentiate between 'a negated
variable was found' and 'no non-negated variables were found'
solution: Add a `detect_env_vars2` method which returns an enum
`Detected` which can represents the 4 interesting cases:
- `detect_env_vars` is empty
- A negated variable was found
- A non-negated variable was found
- No non-negated variables were found
Fixes#6870
Guard against `STARSHIP_DURATION=0`
If an arithmetic expression evaluates to `0`, its exit status is `1`:
> The return status is 0 if the arithmetic value of the expression is non-zero, 1 if it is zero, and 2 if an error occurred.
In rare cases, the subtraction for `STARSHIP_DURATION` can result in an `int(0)` result (yes, really - happens e.g. during `vhs` sessions), which would then kill the shell if `set -e` is in effect.
We therefore have to assign the result outside the expression (using `STARSHIP_DURATION=$((...))`), because unlike regular `(())` arithmetic expressions, a `$(())` arithmetic substitution gets a return status of `0` even if the expression evalues to `int(0)`.
The alternative would be to keep the expression, and ensure it always succeeds, by doing `(( STARSHIP_DURATION = ... )) || true`.
However, the `$(()` approach has the benefit of still bubbling up an error from the arithmetic expression (normally return status `2` as in the documentation quote above; return status `1` in a substitution), which is useful e.g. in the event of undefined variables.
Filter out non-printing ANSI escape codes
The string `\x1b[35;49mkai` is, on the screen, only 3 characters long,
however the `width_graphemes()` function would say that it is 10
characters long. This is only really an issue for `explain`, as it makes
the width of the left column incorrect for the padding. Instead of the
following:
```console
$ starship explain
"/" (<1ms) - <description>
"kai" (<1ms) - <description>
```
it would print out like this for any parts that don't use ansi escapes
internally:
```console
"/" (<1ms) - <description>
"kai" (<1ms) - <description>
```
This should cause no problems with any of the unstyled lengths that
are generated normally, but any pre-styled strings in `custom` calls
will cause this issue.
A few modules are missing from the no-runtime-versions preset.
This also ensures the file is alphabetically ordered.
mojo and buf use "with" rather than "via", the preset now uses "with"
for these.
Signed-off-by: Christophe Fergeau <christophe@fergeau.eu>
* add Fedora installation instructions using COPR
Adds a Fedora 38+ entry to the install table using the existing atim/starship COPR repo.
Though the CentOS instructions work on Fedora, this improves clarity and discoverability for Fedora users.
Tested and confirmed working on Fedora 42.
* Order distros alphabetically
* Update min Fedora version to match the active release
HG topic file, like the branch file, can end with a newline. Strip it
out the same way to avoid dumping extra newlines into the prompt.
Co-authored-by: Ben Li <bli@riorey.com>
* feat(aws): support duration for aws sso
* don't bail if ~/.aws/credentials doesn't exist
* take clippy suggestion, fmt
* ModuleRenderer::new_with_home
* add test for sso duration
* add comments to get_credentials_duration
* New translations readme.md (Russian)
* New translations readme.md (Russian)
* New translations readme.md (Russian)
* New translations readme.md (Russian)
* Support bun text-format lockfile
Bun version 1.1.39 introduced a new plaintext lockfile. Currently it is opt-in only, but it will become the default in bun version 1.2.
* update docs
* update config schema
* update tests
Previously the selection code simply filtered for the first style found
within the config with a threshold larger than the current battery
percentage. If the config defined multiple display thresholds that were
above the battery percentage it would only select the first one that was
encountered rather than the one that was closest to the current battery
percentage.
This commit also adds a test to ensure this property is held true. The
test accomplishes this by comparing the parsing of a config with two
`battery.display` entries, one with a threshold at 100% & the other at
60%, with a mock battery set at 50% charge. This config is parsed with
the 100% threshold defined above the 60% threshold, and then again with
the 60% threshold defined above the 100% threshold. To ensure the
entries are parsed parsed correctly each entry is given a different
style, so the expected value that is compared against has the same style
as the 60% threshold entry for both test cases.
* Update src/modules/battery.rs
Use more concise chain of functions from Iterator
Co-authored-by: David Knaack <davidkna@users.noreply.github.com>
---------
Co-authored-by: David Knaack <davidkna@users.noreply.github.com>
* Combine ViModeChangeHandler
If a user has defined a ViModeChangeHandler setting this would respect that as well as redraw the prompt (to allow rendering things like the character change).
* Add newline
* Use call operator to limit new closure scope
* Pass any args to original handler
Default to false for tests regardless of the OS
Checking for username along with cfg!(test) seems redundant, especially because of one edge case - root user can be renamed
* feat(deno): add `deno.lock` file to default `detect_files` list
* feat(deno): add `deno.lock` to default detect files in schema
* test: add test for `deno.lock` file presense
* docs: add `deno.lock` to list of default files
* chore: formatting
* Revert "docs: add `deno.lock` to list of default files"
This reverts commit 6d0dc577d5.
* docs: add `deno.lock` to default detect files in primary readme
* chore: revert formatting from latest version of dprint
* docs: add `deno.lock` to default detect files list and format
* Docker Desktop uses "desktop-linux" instead of "default" as the default context since version 3.5.
This filters "desktop-linux" in the same way as "default".
https://github.com/starship/starship/issues/6170
* update docs/config/README.md
feat(python): Configure different detect env vars
Allow the env vars that trigger the python module to be configured, if
an empty list is passed then the module will fall back to just
triggering based on the configured files, folders and extensions.
* fix(bash): quote array expansions to work around custom IFS
* fix(bash): locally set standard IFS for $(jobs -p)
* fix(bash): localize the leaked variable "job"
* chore: use current way to get max value of an integer type
The std::usize::MAX way has been obsolete for quite some time now.
Found by clippy (clippy::legacy_numeric_constants).
Signed-off-by: Lars Wirzenius <liw@liw.fi>
* chore: use helper variable for a more idiomatic pattern matching
A nested expression can be harder to understand than two simpler
expressions. (Found by clippy lint clippy::blocks_in_conditions.)
Signed-off-by: Lars Wirzenius <liw@liw.fi>
---------
Signed-off-by: Lars Wirzenius <liw@liw.fi>
Co-authored-by: Lars Wirzenius <liw@liw.fi>
* Fix config schema
* Improve performance of kubeconfig module
This module currently takes about 200 ms when using our ~10MiB
kubeconfig. This change improves its performance by:
* Only parsing the file once
* (Naively) checking if the content is yaml or json and potentially
parse as the latter, as that seems to be much faster
* Remove duplicate `v` in dotnet version
Every language version provider returns the version without a leading 'v', and the shared code then prepends the 'v'. Take a look at Python for example.
The Dotnet provider prepends a 'v' however, causing the version to be printed like 'vv8.0.203'.
* Update src/modules/dotnet.rs
* tests(dotnet): add test for obtaining version from cli
---------
Co-authored-by: Bernd Verst <github@bernd.dev>
feat(color): add prevfg,prevbg as color specifiers based on the previous foreground/background colors respectively
Co-authored-by: Vladimir Lushnikov <vladimir@solidninja.is>
* update: add purescript spago-next configuration files
in upcoming spago projects, the configuration file is changing from
spago.dhall -> spago.yaml and spago.lock. This will detect both styles
for the time being
* fix typo
did not update test. spago.yaml -> spago.lock in the spago lock file
test case
* Support for Endeavour OS
Title.
Since there's apparently no icon for this one in nerd fonts, I used the Arch logo since it's Arch-based.
* Changed icon to shuttle_space
Indeed it fits pretty much Endeavour's space theme. Nice suggestion!
docs: Fix copy-paste typos in config docs
The symbol config line for Gleam was copied from Go, for Haxe was
copied from Helm, and for Typst was copied from Daml.
* refactor(bash): use `STARSHIP_*` for the internal variable names
The current codebase uses `dbg_trap` to save the original DEBUG trap
in bash <= 4.3. However, the variable name possibly conflicts a user
variable since it is not prefixed by `_starship` or `starship_` or
`STARSHIP_`. In this patch, we rename `dbg_trap` to
`STARSHIP_DEBUG_TRAP` following other variables of
`STARSHIP_EXIT_STATUS` and `STARSHIP_PIPE_STATUS`. We also rename the
variable `_PRESERVED_PROMPT_COMMAND` to `STARSHIP_PROMPT_COMMAND`.
* fix(bash): correctly extract DEBUG trap with spaces
* fix(bash): evaluate DEBUG trap by eval
The current code executes the saved DEBUG trap just by
$_starship_dbg_trap. This causes various problems. The content of
the variable `_starship_dbg_trap` is unexpectedly subject to the word
splitting with the pathname expansions. Also, the needed shell
expansions and quote removal are not performed. With a custom IFS,
the content of the variable will be split in an unexpected way. The
saved DEBUG trap needs to be executed by eval "$_starship_dbg_trap".
* feat(k8s): Add detect env vars option
Have added the option to trigger the k8s module based on what env vars
are set, this has been done in a backwards compatible way so if nothing
is changed from the defaults the module will still behave the same way
as before. This is similar to what I did in #4486 for the python module
and if goes well I'd like to rollout to other modules.
* Update src/modules/kubernetes.rs
Co-authored-by: David Knaack <davidkna@users.noreply.github.com>
* Update src/modules/kubernetes.rs
---------
Co-authored-by: David Knaack <davidkna@users.noreply.github.com>
* combine ANSI color codes before wrapping them
The existing code wraps each individual module's output for
`context.shell`, concatenates all that output together and passes it to
`AnsiStrings` to merge ANSI color codes. However, the wrapping obscures
ANSI color codes, meaning that no merging is possible.
This commit changes the shell-specific wrapping to happen right before
output, once all modules' output has been concatenated together. This
results in ANSI color codes being correctly merged, as well as reducing
the number of calls to `wrap_colorseq_for_shell` to one.
With a minimal `starship.toml`:
```
format = """$directory"""
[directory]
format = '[a]($style)[b]($style)'
```
The current code produces[0]:
```
\n%{\x1b[31m%}a%{\x1b[0m%}%{\x1b[31m%}b%{\x1b[0m%
```
And this commit's code:
```
\n%{\x1b[31m%}ab%{\x1b[0m%}
```
You can see that the current code emits an additional reset and repeated
color code between "a" and "b" compared to the new code.
[0] Produced in a Python shell with:
```
subprocess.check_output(
"./target/debug/starship prompt", shell=True,
env={"STARSHIP_CONFIG": "./starship.toml", "STARSHIP_SHELL": "zsh"}
)
```
* utils: return early from wrap_seq_for_shell unless wrapping required
* refactor(utils): simplify wrap_seq_for_shell
This commit modifies wrap_seq_for_shell to (a) return early for shells
with no wrapping required, and (b) determine the wrapping characters
once at the start of the function (rather than inline in the map
function for every character).
* Create place to put it in the config
* Initial functional version
* Fix grammar
* Add option documentation to README
* Add test for two aliases and emoji translation
* Remove println
* Rewrite match as iflet
* Improve converting the reference
* Format file
* Try to restore autoformat of markdown
* Replace toml:Map with concrete IndexMap
* Update schema
* Add option that got lost
* Add Odin lang module
* add utils string and remove commit number from output
* switch to new symbol because ZWJ support is rare
* add config docs
* add option to show the commit number
* fix lack of trimming
* fix formatting to comply with checks
* Add trailing newline to comply with cargo fmt
* Add new Odin test and add newline in cmd output
Resolve#5847 by initializing `$env.STARSHIP_SHELL` before calling `starship`
Most minimal change possible. Other simplification are possible but not know to be
backwards compatible. Also considered `with-env` or `STARSHIP_SHELL=nu starship` but
they'd be worse. Happy to reformat indentation if desired.
* Added the option "detect_env_vars" to the `username` module
with the same functionality as in the `hostname` module.
* Fixed logic error and added test to catch it
* build(deps): update dependency vitepress to ^1.0.0-rc.45
* build(deps): update rust crate shadow-rs to 0.27.1
* Added the option "detect_env_vars" to the `username` module
with the same functionality as in the `hostname` module.
* Fixed logic error and added test to catch it
* Removed unused gix import
* Removed unused gix import, again
* Removed unused gix import. Next try
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
docs(python): Remove a bad config example in the python
Running a unknown binary in a subfolder (called `.venv/bin/python`) has at least two drawbacks with some security implication:
- In case of a unknown directory, simply cd'ing into a subdirectory could lead to starship executing a unknown binary (usually the binary MUST be in path so it's a decision taken by the user, e.g. by activating the venv)
- starship would show the result of the venv python even if the venv is not active but calling `python3` on the cli would NOT run that `python3` in the venv but a different one (most likely the system python3).
* feat(docs): move to vitepress
* change up hero styles to match existing site
* A bit more style tweaking
* Replace stylus with plain CSS
* improve unicode-range value for nerdfont
---------
Co-authored-by: Matan Kushner <hello@matchai.dev>
* Support right prompt in bash
* Docs for transience in bash
* Apply suggestions from review
* Simplify conditional
* Use ble.sh hooks, if available
* Properly quote args
* Use BLE_PIPESTATUS
* Update starship.bash
* Update src/init/starship.bash
Co-authored-by: Koichi Murase <myoga.murase@gmail.com>
---------
Co-authored-by: Koichi Murase <myoga.murase@gmail.com>
* update AllowStatus to work with direnv 2.33
direnv now returns int enum instead of boolean, https://github.com/direnv/direnv/pull/1158
* update schema
* maybe fixed the schema now
* Whoops, I inverted the flags somehow
* have coffee, fix mistaken understanding
* undo changes to tranlations
* Update docs/config/README.md
* Update src/modules/direnv.rs
Co-authored-by: David Knaack <davidkna@users.noreply.github.com>
* update test output
---------
Co-authored-by: David Knaack <davidkna@users.noreply.github.com>
run:cargo run --locked --features config-schema -- config-schema > .github/config-schema.json
- name:Check | Detect Changes
uses:reviewdog/action-suggester@v1.9.0
with:
tool_name:starship config-schema
filter_mode:nofilter
fail_on_error:'true'
run:|
if ! git diff --exit-code .github/config-schema.json; then
echo "::error file=.github/config-schema.json::config-schema.json is out of date. Run 'cargo run --features config-schema -- config-schema > .github/config-schema.json' and commit the result."
This policy supplements our [Contributing Guide](CONTRIBUTING.md) and [Code of Conduct](CODE_OF_CONDUCT.md).
This project is maintained by volunteers.
This policy exists to keep review burden reasonable.
The policy is inspired by the [Ghostty](https://github.com/ghostty-org/ghostty/blob/main/AI_POLICY.md) and [LLVM](https://llvm.org/docs/AIToolPolicy.html) AI policies.
Contributions that violate this policy may be closed without further notice.
## Mandatory Disclosure
Every Pull Request that utilizes AI-assisted tooling (including but not limited to Claude Code, Cursor, GitHub Copilot, ChatGPT, or local LLMs) must disclose its usage.
### PR Description
You must complete the **AI-Assistance** section in our Pull Request Template.
## Human-in-the-Loop
Contributors must fully understand all submitted contributions.
### Contributions
- You must be able to explain what your changes do and defend your implementation choices.
- You are expected to have read and understood every line of code you submit.
- If your response to a maintainer's question is an unedited copy-paste from an LLM, or if you cannot explain the mechanics of your PR, the PR will be closed.
### Issue Triage and Discussions
You are not allowed to reply to user issues or discussions with unverified or raw AI-generated information.
## "Good First Issue" Protections
You may not submit contributions to close a `🌱 good first issue` if they were authored with substantial AI assistance.
These issues are intentionally triaged as learning opportunities for new developers navigating the codebase for the first time.
## Low-Effort Contributions & Prohibition of Autonomous Agents
- Contributions that are overly verbose, contain unsupported or hallucinated claims, or otherwise show the hallmarks of low-effort LLM usage may be closed without further notice.
- Contributions via OpenClaw, or any other unsupervised autonomous agent operating in an automated loop, are strictly prohibited.
* **git:** improve bare repository detection ([#7421](https://github.com/starship/starship/issues/7421)) ([27079d7](https://github.com/starship/starship/commit/27079d7669b3072a944d3610f5dd5fec65321841))
* **presets:** Update no-nerd-font to be up-to-date ([#7440](https://github.com/starship/starship/issues/7440)) ([65fb647](https://github.com/starship/starship/commit/65fb647bc38da09fe5d140f055c9f67d740bfa67))
* **python:** align `python_binary` schema with argument support ([#7415](https://github.com/starship/starship/issues/7415)) ([3ec9b5c](https://github.com/starship/starship/commit/3ec9b5c54caa828164c710500a25ccd43ef26a64))
* add statusline subcommand for Claude Code integration ([#7234](https://github.com/starship/starship/issues/7234)) ([b8ee821](https://github.com/starship/starship/commit/b8ee82167c5b49c7e9fd70e5542fad0e56810b39))
* **directory:** add support for regexes in substitutions ([#7145](https://github.com/starship/starship/issues/7145)) ([2e8f26e](https://github.com/starship/starship/commit/2e8f26e44846cd52d06563aef98e22b89965dd25))
* **env_var:** include $symbol in default format ([#7262](https://github.com/starship/starship/issues/7262)) ([3885e81](https://github.com/starship/starship/commit/3885e81357b04c244c19c0c8b05ccbbd4f797d62))
* **git_status:** add variables to track worktree and index changes ([#5655](https://github.com/starship/starship/issues/5655)) ([0110bf5](https://github.com/starship/starship/commit/0110bf59c86f6f0f33f95dc614c231acc19547b8))
* **python:** add option to replace generic venv-names with parent dir ([#7112](https://github.com/starship/starship/issues/7112)) ([083ab00](https://github.com/starship/starship/commit/083ab008fc77b982a223af8f4f18020c7a64fec6))
* **vcs:** Introduce the VCS module ([#6388](https://github.com/starship/starship/issues/6388)) ([0dd5a4f](https://github.com/starship/starship/commit/0dd5a4f402c8d94524aaaa5632b2d0cba7fe1630))
* **aws:** support `$duration` for `sso_session` ([#7100](https://github.com/starship/starship/issues/7100)) ([8108cc9](https://github.com/starship/starship/commit/8108cc95cf1b1182f239a3a4cc399d3fcd912187))
* **direnv:** accept null loadedRC state ([#7317](https://github.com/starship/starship/issues/7317)) ([56b8901](https://github.com/starship/starship/commit/56b8901f6feaa841de1f38054db7b3ae495a457b))
* **docs:** Re-add `style` option to `env_var` module ([#7298](https://github.com/starship/starship/issues/7298)) ([e2277e5](https://github.com/starship/starship/commit/e2277e5958c62a5bb1cc1f4ad76ccd051e22d1c5))
* enable std feature for whoami crate ([#7211](https://github.com/starship/starship/issues/7211)) ([9931ab2](https://github.com/starship/starship/commit/9931ab25b28b91b502dae93fc3826fd9a18a01b0))
* **format:** allow empty textgroups to set prev_fg/prev_bg ([#7201](https://github.com/starship/starship/issues/7201)) ([9186188](https://github.com/starship/starship/commit/91861886a779805cd8265a85c629e579d513aa75))
* **helm:** remove deprecated --client flag from helm version command ([#7193](https://github.com/starship/starship/issues/7193)) ([8a69666](https://github.com/starship/starship/commit/8a69666084d248b8fd76b6c54f38aea12abce6e3))
* **hg_state:** avoid false-positive MERGING state ([#7329](https://github.com/starship/starship/issues/7329)) ([7a27475](https://github.com/starship/starship/commit/7a274752d0803960ae25259c8641f6e676f9c7b2))
* **install:** improve UX for version option ([#7197](https://github.com/starship/starship/issues/7197)) ([c576625](https://github.com/starship/starship/commit/c576625343a8353ed2e99157d86065c2e713048e))
* **fish:** use native transient prompt if available ([#7015](https://github.com/starship/starship/issues/7015)) ([cc65e0c](https://github.com/starship/starship/commit/cc65e0c7429068f1123fe5d9844ebebdfa1b9547))
* **git:** Basic Reftable compatibility and future-proofing ([#7154](https://github.com/starship/starship/issues/7154)) ([6d9c8ea](https://github.com/starship/starship/commit/6d9c8ea8a9736d2e12bda46c9cdb1f8fc1de630c))
* **mise:** align documentation and implementation ([#7131](https://github.com/starship/starship/issues/7131)) ([08824d7](https://github.com/starship/starship/commit/08824d7c6e1f69150cc1c28f3ff46bbb5447a7d0))
* add mercurial state ([#6745](https://github.com/starship/starship/issues/6745)) ([5f0b31b](https://github.com/starship/starship/commit/5f0b31b4c8da64a3dbe27f5966dfbc4ab2b9f7bf))
* **aws:** support duration for aws sso ([#6614](https://github.com/starship/starship/issues/6614)) ([44e9e56](https://github.com/starship/starship/commit/44e9e56480a748ccda1a64a9f623dc2b19ecfe98))
* **cli:** accept 'powershell' for completions subcommand ([#7028](https://github.com/starship/starship/issues/7028)) ([4caee4a](https://github.com/starship/starship/commit/4caee4a7ca5dbb78c346a84cc39ca3a90a9238a5))
* **container:** Add detection of Incus containers ([#6917](https://github.com/starship/starship/issues/6917)) ([6886ad0](https://github.com/starship/starship/commit/6886ad082cd55a5a07160cc847c9c38915dca848))
* **fish:** support input-mode detection for helix-keybinds ([#6841](https://github.com/starship/starship/issues/6841)) ([26a6237](https://github.com/starship/starship/commit/26a62372d11a42f7fec0b65c388e585a79d05b04))
* new module `xmake` ([#6811](https://github.com/starship/starship/issues/6811)) ([ff0acb1](https://github.com/starship/starship/commit/ff0acb193eaa04ab63a8e56e1bd18019444b886f))
* **nu:** Add job support for nushell ([#6684](https://github.com/starship/starship/issues/6684)) ([ac2359c](https://github.com/starship/starship/commit/ac2359ca8a020825b5c68b5e3b8da35d4917f46e))
* **package:** Add support for Ansible Galaxy ([#6905](https://github.com/starship/starship/issues/6905)) ([07778a8](https://github.com/starship/starship/commit/07778a8452bb565db55e32c32d7c8434a7bda9dd))
* **package:** pyproject hatchling dynamic version ([#6656](https://github.com/starship/starship/issues/6656)) ([ef5227e](https://github.com/starship/starship/commit/ef5227eeafa4dd5c99aff1fdab07574bc423d648))
* **terraform:** support opentofu for terraform version detection ([#6910](https://github.com/starship/starship/issues/6910)) ([ef7d8bd](https://github.com/starship/starship/commit/ef7d8bd442f659b64cc23fd4b096e696531289ba))
### Bug Fixes
* consider text-only meta variables in conditionals set if non-empty ([#6338](https://github.com/starship/starship/issues/6338)) ([286b0f2](https://github.com/starship/starship/commit/286b0f2be30db81bc948579c137f0cc646fcde65))
* **docker_context:** add `compose.yml` and `compose.yaml` to files ([#6625](https://github.com/starship/starship/issues/6625)) ([a98a05f](https://github.com/starship/starship/commit/a98a05f1ac4dfc215337a266c784cd62256f0c33))
* **explain:** Filter out non-printing ANSI escape codes ([#6861](https://github.com/starship/starship/issues/6861)) ([2c11c08](https://github.com/starship/starship/commit/2c11c086b8da5ea43ae795fa0e71a621e983ebcc))
* **fossil_metrics:** match single-file ([#6785](https://github.com/starship/starship/issues/6785)) ([5dd40ea](https://github.com/starship/starship/commit/5dd40ea62fb697239c2a84072414bd30059067d9))
* **git_metrics:** adhere to `git_status``use_git_executable` option ([#6927](https://github.com/starship/starship/issues/6927)) ([05daa3e](https://github.com/starship/starship/commit/05daa3e27832dde93f784c2659b31f94bb827f80))
* **git_status:** Do not show up-to-date when untracked ([#6755](https://github.com/starship/starship/issues/6755)) ([f42b53e](https://github.com/starship/starship/commit/f42b53edd8bc26ec95dd027d9cf776ec70597cc3))
* **hg_branch:** Strip extraneous newlines from hg topic. ([#6766](https://github.com/starship/starship/issues/6766)) ([ccc32e7](https://github.com/starship/starship/commit/ccc32e73fc0a0f99d90cff3a0efb73efecce1d84))
* improve adhere to directory scanning timeout ([#6694](https://github.com/starship/starship/issues/6694)) ([109a681](https://github.com/starship/starship/commit/109a6811cee1faae677a24a7d92fa8ed39397485))
* **jobs:** Count job groups instead of processes for fish ([#6899](https://github.com/starship/starship/issues/6899)) ([95bf53f](https://github.com/starship/starship/commit/95bf53f6b9f7dbc50708e0f459b6dc7a7b7ebd20))
* **nushell:** Startup `cmd_duration` should be 0ms not 823ms ([#6854](https://github.com/starship/starship/issues/6854)) ([0ad1cf8](https://github.com/starship/starship/commit/0ad1cf831a9e7938ed5e3d3262d3647e828ee4de))
* **preset/nerd-font:** remove double spaces in `gcloud` default value and use Google Cloud-specific icon ([#6822](https://github.com/starship/starship/issues/6822)) ([3b5bbe3](https://github.com/starship/starship/commit/3b5bbe3566583f4549234f89874a3662d67c5012))
* **preset/pure:** only enable python module if venv is active ([#6689](https://github.com/starship/starship/issues/6689)) ([5e8851a](https://github.com/starship/starship/commit/5e8851a95364e9713d1c5ddc409248f0705a9410))
* remove double spaces in default values ([#6649](https://github.com/starship/starship/issues/6649)) ([e406f55](https://github.com/starship/starship/commit/e406f552f84b37631152f34617712085d65c5e7b))
* rust-ini 0.21.2 has been yanked from crates.io. ([#6916](https://github.com/starship/starship/issues/6916)) ([b698fb0](https://github.com/starship/starship/commit/b698fb05593c81c1e2f35af0f1e61c00dd85c6ce))
* **terraform:** amend module to `exec_cmds_return_first`-changes ([#6956](https://github.com/starship/starship/issues/6956)) ([0f5d8d4](https://github.com/starship/starship/commit/0f5d8d4a4a932b5ed99aece6a6484887d7f4e06a))
* **test/git_commit:** avoid spawning an editor lead to timeout if tag signing is enabled ([#6887](https://github.com/starship/starship/issues/6887)) ([32c29cf](https://github.com/starship/starship/commit/32c29cfda784bdcc6a97c0e637f99100af1a0c2d))
* **zsh:** check if vars are set before reading them ([#6742](https://github.com/starship/starship/issues/6742)) ([608ae37](https://github.com/starship/starship/commit/608ae37bcfd498b72020689b19debb79d236c411))
* **zsh:** do not fail under ERR_EXIT conditions if `STARSHIP_DURATION` computes to 0 ([#6922](https://github.com/starship/starship/issues/6922)) ([38db5f0](https://github.com/starship/starship/commit/38db5f0094d1109b8e7b4332b6c20c2a8b125cf1))
### Performance Improvements
* **git_status:** avoid gix index load when `core.fsmonitor` is used ([#6817](https://github.com/starship/starship/issues/6817)) ([1c2f4d4](https://github.com/starship/starship/commit/1c2f4d46594d38abd423752efa3b21903e5a1e3b))
* Parallelize child modules for env_var|custom ([#6748](https://github.com/starship/starship/issues/6748)) ([7f4eb6f](https://github.com/starship/starship/commit/7f4eb6fdae5218413963f07f86df4e2b340bd05e))
* Add support for pixi ([#6335](https://github.com/starship/starship/issues/6335)) ([7e88ba9](https://github.com/starship/starship/commit/7e88ba9561bead33cefaba1003637e0213199a15))
* added mise module ([#5747](https://github.com/starship/starship/issues/5747)) ([d24e787](https://github.com/starship/starship/commit/d24e78754a0ce1d5ea77eae0a7d3b19aaa7bcfc8))
* **c++:** adding c++ module ([#6570](https://github.com/starship/starship/issues/6570)) ([ed07646](https://github.com/starship/starship/commit/ed076460995cb5175e47442dc11b46ff0f039b4a))
* **nodejs:** disable if bun project files detected ([#6346](https://github.com/starship/starship/issues/6346)) ([00ce705](https://github.com/starship/starship/commit/00ce7057efb7c431e7f9b526ca3ee941573e9f40))
* **package:** support JSR package version ([#6502](https://github.com/starship/starship/issues/6502)) ([bd2321a](https://github.com/starship/starship/commit/bd2321a12fc47135f316e90f22ccab6a61b50730))
* **preset:** Add gcloud symbol to nerd-fonts preset to match aws ([#6693](https://github.com/starship/starship/issues/6693)) ([348c23f](https://github.com/starship/starship/commit/348c23fd58d90352cb128d32c495c1107a98d930))
* **python:** add support for `python_binary` arguments in config ([#6523](https://github.com/starship/starship/issues/6523)) ([7667555](https://github.com/starship/starship/commit/76675559c041fa2ae6a85cb946218e5e1f04bf75))
### Bug Fixes
* **battery:** prefer charge ratio over current capacity ([#6603](https://github.com/starship/starship/issues/6603)) ([d245939](https://github.com/starship/starship/commit/d2459391194cf5a142d98b1297fe5f630c3415f5))
* Change to a non-yanked version of the log crate ([#6495](https://github.com/starship/starship/issues/6495)) ([ed20b1d](https://github.com/starship/starship/commit/ed20b1d23b1b7ed914fca30fb6788f3d609f4a52))
* **fossil_metrics:** Add -i flag to the fossil_metrics module's command ([#6544](https://github.com/starship/starship/issues/6544)) ([eb7d80b](https://github.com/starship/starship/commit/eb7d80bafac8f6ae719ee357aeff129065ddd7e6))
* **package:** fix cargo workspace version ([#6626](https://github.com/starship/starship/issues/6626)) ([834bbf5](https://github.com/starship/starship/commit/834bbf53e53fc7f46f168e6d13677b737af73dbf))
* **preset:** add missing rlang to plain-text-symbols preset ([ddafaa6](https://github.com/starship/starship/commit/ddafaa62fc85fddff2bc2cc3a1daaf919f8b8f0d))
* **preset:** add missing rlang to plain-text-symbols preset ([#6458](https://github.com/starship/starship/issues/6458)) ([ddafaa6](https://github.com/starship/starship/commit/ddafaa62fc85fddff2bc2cc3a1daaf919f8b8f0d))
### Performance Improvements
* **ancestor-scan:** preallocate and reuse a single `PathBuf` ([#6387](https://github.com/starship/starship/issues/6387)) ([b3cb92e](https://github.com/starship/starship/commit/b3cb92e6483a6cc054c6f7db14951c99bd7c9e9b))
* use `gitoxide` for `git_status` and `git_metrics` modules ([#6476](https://github.com/starship/starship/issues/6476)) ([daf8d93](https://github.com/starship/starship/commit/daf8d93d27fdc70b110a4a56799d7dc3a10c3810))
### Reverts
* Remove specialized whoami hostname function choice for windows ([#6651](https://github.com/starship/starship/issues/6651)) ([8eefdb2](https://github.com/starship/starship/commit/8eefdb21a6099d86b831ff1d42ae7f2a1678185a))
* **battery:** Use best match instead of first match for `battery.display` threshold ([#6442](https://github.com/starship/starship/issues/6442)) ([2690a32](https://github.com/starship/starship/commit/2690a329cf9a6b4a160d024674193007fb292e1a))
* **bun:** Detect bun using new text-format lockfile ([#6441](https://github.com/starship/starship/issues/6441)) ([2df521c](https://github.com/starship/starship/commit/2df521c69b0b1400edee7b7b332b5e2a900c7775))
* **direnv:** allow direnv to detect environment variables ([#6196](https://github.com/starship/starship/issues/6196)) ([4593716](https://github.com/starship/starship/commit/45937166c8b3cb53f09b29c65d0f547aa7f2f022))
* **fish:** restore support for fish <v3.4.0 ([#6337](https://github.com/starship/starship/issues/6337)) ([85d3fb2](https://github.com/starship/starship/commit/85d3fb2e2ab96e639fe6b67ba1afbb94b6c5b83e))
* **hostname:** use DNS instead of NetBIOS name on Windows ([#6343](https://github.com/starship/starship/issues/6343)) ([43f097e](https://github.com/starship/starship/commit/43f097eae838c1fba52659113826669802081918))
* **init:** do not use cygpath for elvish ([#6376](https://github.com/starship/starship/issues/6376)) ([576aa14](https://github.com/starship/starship/commit/576aa14d15f57abf7d1c28e3486f2682e45c2f62))
* **status:** add trailing space to `pipestatus_format` ([#6404](https://github.com/starship/starship/issues/6404)) ([8a38b8f](https://github.com/starship/starship/commit/8a38b8f6f19fa6f17098e32f22183beac0498764))
* **username:** avoid using `whoami` on android ([#6342](https://github.com/starship/starship/issues/6342)) ([af5d139](https://github.com/starship/starship/commit/af5d139060bbb60690196dc53e05424ac3c0fb5d)), closes [#6340](https://github.com/starship/starship/issues/6340)
* **deno:** add `deno.lock` file to default `detect_files` list ([#6310](https://github.com/starship/starship/issues/6310)) ([22c6c52](https://github.com/starship/starship/commit/22c6c5201d8fa682ad43501cf46427263a530c71))
* **hostname:** add option to replace hostnames with aliases ([#6097](https://github.com/starship/starship/issues/6097)) ([68a8fc9](https://github.com/starship/starship/commit/68a8fc9563a52c4119241375d181ff68bb3d3da3))
* **mojo:** add module for Mojo language ([#6108](https://github.com/starship/starship/issues/6108)) ([171746a](https://github.com/starship/starship/commit/171746a58408cbc0d48dedc52e21327bd35fccd4))
* **package:** support alternative gradle module version syntax ([#6079](https://github.com/starship/starship/issues/6079)) ([a62012e](https://github.com/starship/starship/commit/a62012e3280238b4c794bbe484b296af3b8fb53a))
* **python:** Add detect env vars option ([#4486](https://github.com/starship/starship/issues/4486)) ([8a2d944](https://github.com/starship/starship/commit/8a2d944bc80a0a8358c30e639e8af51c1d45d973))
* **python:** detect pixi and ipynb files ([#6228](https://github.com/starship/starship/issues/6228)) ([36134d8](https://github.com/starship/starship/commit/36134d896bda3c739ffd6555be62499716b0a9b0))
* **release:** codesign windows release binaries ([#6273](https://github.com/starship/starship/issues/6273)) ([fcc697b](https://github.com/starship/starship/commit/fcc697b9b31aef44aefaf9a6660d51d44f707149))
### Bug Fixes
* **bash:** fix variable leak in Bash integration ([#6143](https://github.com/starship/starship/issues/6143)) ([e1189ed](https://github.com/starship/starship/commit/e1189ed7567de580d8f51c8baf870056a6060789))
* **cmd_duration:** Make render_time format more consistent ([#5825](https://github.com/starship/starship/issues/5825)) ([4abea6b](https://github.com/starship/starship/commit/4abea6b601c53adfa5719a7aac11069dc054cdf8))
* **fish:** add missing arguments for fish transient prompt functions ([#6181](https://github.com/starship/starship/issues/6181)) ([d6814be](https://github.com/starship/starship/commit/d6814be0ba35dd52f6f0d0e1a3f14d5f106efd63)), closes [#6180](https://github.com/starship/starship/issues/6180)
* **fish:** improve fish transient prompt ([#6107](https://github.com/starship/starship/issues/6107)) ([274dff3](https://github.com/starship/starship/commit/274dff37dbb375821a90d6976a11cf57d9386e4f))
* **fish:** use correct input function in transient execute ([#6265](https://github.com/starship/starship/issues/6265)) ([244c2c6](https://github.com/starship/starship/commit/244c2c629e1f358bf849923531d5cf0d69c2db2d))
* Fixed "Click to download TOML" links ([#6234](https://github.com/starship/starship/issues/6234)) ([0200d75](https://github.com/starship/starship/commit/0200d75b3781977d5335e637858f4e0996ee0384))
* **git_status:** read proper name for core.fsmonitor flag ([#6173](https://github.com/starship/starship/issues/6173)) ([33b3b8e](https://github.com/starship/starship/commit/33b3b8e3986f6180a8f7b461a5a07fea702ec628))
* **package:** support alternative gradle module version syntax ([#6080](https://github.com/starship/starship/issues/6080)) ([a62012e](https://github.com/starship/starship/commit/a62012e3280238b4c794bbe484b296af3b8fb53a))
* **python:** improve parsing of `pyvenv.cfg` files ([#6145](https://github.com/starship/starship/issues/6145)) ([7b65ad5](https://github.com/starship/starship/commit/7b65ad51635463003941ec0ecea1d4d315b2df53))
* use `whoami` for user/hostname queries again ([#6311](https://github.com/starship/starship/issues/6311)) ([77f0883](https://github.com/starship/starship/commit/77f08832d5228dff6c0e01ba4d4ad206c9d2362f))
### Performance Improvements
* **fish:** Skip unnecessary indirection in starship init fish ([#6253](https://github.com/starship/starship/issues/6253)) ([798f640](https://github.com/starship/starship/commit/798f64033f5348793003ddd74fa0ce1c744c300b))
* Skip unnecessary indirection in starship init fish ([798f640](https://github.com/starship/starship/commit/798f64033f5348793003ddd74fa0ce1c744c300b))
* **color:** add prev_fg and prev_bg as color specifiers based on the previous foreground/background colors respectively ([#6017](https://github.com/starship/starship/issues/6017)) ([9a3e87f](https://github.com/starship/starship/commit/9a3e87f2cbaa8ca4b8dea41f4f56ff297e94bb1a))
* **color:** add prevfg,prevbg as color specifiers based on the previous foreground/background colors respectively ([9a3e87f](https://github.com/starship/starship/commit/9a3e87f2cbaa8ca4b8dea41f4f56ff297e94bb1a))
* **gcloud:** Disabled gcloud module when active config hasn't been set ([#6039](https://github.com/starship/starship/issues/6039)) ([4d36d46](https://github.com/starship/starship/commit/4d36d463b91a245a62c357de308cad3cdec48edf))
* **purescript:** add support for spago-next configuration files ([#6036](https://github.com/starship/starship/issues/6036)) ([e028186](https://github.com/starship/starship/commit/e0281868c9d7801fc25f64f86ab8312d2a5a1794))
### Bug Fixes
* **direnv:** replace nonexistent "orange" color with "bright-yellow" ([#5969](https://github.com/starship/starship/issues/5969)) ([478d5cc](https://github.com/starship/starship/commit/478d5cccb6f7f4622dd681756cf004ba92c98607))
* **dotnet:** Remove duplicate v in dotnet version ([#6060](https://github.com/starship/starship/issues/6060)) ([52a89a5](https://github.com/starship/starship/commit/52a89a515ed44d861ea556a0bb70d6901660a9b5))
* improve non-msvc windows support by bumping stable dependencies ([#5989](https://github.com/starship/starship/issues/5989)) ([50a6b84](https://github.com/starship/starship/commit/50a6b846045899c88d95b063a6b939a6dcb72a5c))
* **k8s:** don't trigger if scan config is set but env vars are not ([#5979](https://github.com/starship/starship/issues/5979)) ([8c75822](https://github.com/starship/starship/commit/8c75822d4380e020ebd289a4ef06cd4d31ee5196))
* **preset:** fix typo in Open Policy Agent module format string ([#6118](https://github.com/starship/starship/issues/6118)) ([eba9748](https://github.com/starship/starship/commit/eba9748eb1bd9e1802d2a770eb0907cdb73292d6))
### Performance Improvements
* **k8s:** Improve performance of kubeconfig module ([#6032](https://github.com/starship/starship/issues/6032)) ([fae92b2](https://github.com/starship/starship/commit/fae92b29646f73bf1eb843fde80885c58480e85b))
* **container:** show name if available ([#5195](https://github.com/starship/starship/issues/5195)) ([3e3f18e](https://github.com/starship/starship/commit/3e3f18ef277c9bb3db9f60c964f280c7d981102c))
* **bash:** fix handling of the preserved DEBUG trap (used in Bash <= 4.3) ([#5908](https://github.com/starship/starship/issues/5908)) ([fe1a8df](https://github.com/starship/starship/commit/fe1a8df6fa5121cc83b288cf054a8ed16631d335))
* **bash:** use `eval` instead of a procsub for the POSIX mode ([#5020](https://github.com/starship/starship/issues/5020)) ([0f859e8](https://github.com/starship/starship/commit/0f859e8b61c8ada354f4ea4147fb8752dca02c51))
* **bash:** use eval instead of a procsub for the POSIX mode ([0f859e8](https://github.com/starship/starship/commit/0f859e8b61c8ada354f4ea4147fb8752dca02c51))
* **scala:** use scala-cli first to avoid timeout ([#5952](https://github.com/starship/starship/issues/5952)) ([2221a88](https://github.com/starship/starship/commit/2221a88f5ada124c657a265b878e37be47998766))
* **deps:** update rust crate os_info to 3.8.2 ([#5870](https://github.com/starship/starship/issues/5870)) ([d421f63](https://github.com/starship/starship/commit/d421f63785f901caf222941cbfae7cb8c0feec74))
* replace all remaining paths referring to vuepress ([#5859](https://github.com/starship/starship/issues/5859)) ([d5861f9](https://github.com/starship/starship/commit/d5861f9f974147d307c319865890cbb3e50dbe5a))
* $gemset variable for Ruby module ([#5429](https://github.com/starship/starship/issues/5429)) ([938ea3c](https://github.com/starship/starship/commit/938ea3c40145af68d8e28b2ef0275531f1123202))
* **bash:** Support right prompt and transience ([#4902](https://github.com/starship/starship/issues/4902)) ([5ead13d](https://github.com/starship/starship/commit/5ead13d6aa6303c85c562f1b940048cc539667cd))
* **bash:** use PS0 for preexec hook ([#5735](https://github.com/starship/starship/issues/5735)) ([ae711c0](https://github.com/starship/starship/commit/ae711c0f332f4f24c843e59d6d5783e398e21b38))
* **direnv:** use JSON status with direnv >= 2.33.0 ([#5692](https://github.com/starship/starship/issues/5692)) ([482c7b7](https://github.com/starship/starship/commit/482c7b719fc304fcad5f3572c4551f8ff4179522))
* **docs:** move to vitepress ([#5785](https://github.com/starship/starship/issues/5785)) ([7485c90](https://github.com/starship/starship/commit/7485c90c9f7259c026a84dd0335f56860005315d))
* **install:** Add version option to install script ([f66bfd9](https://github.com/starship/starship/commit/f66bfd9435f215867681a699428bd882d8c63ce7))
* **install:** Add version option to install script ([#5728](https://github.com/starship/starship/issues/5728)) ([f66bfd9](https://github.com/starship/starship/commit/f66bfd9435f215867681a699428bd882d8c63ce7))
* **os:** add new os symbols ([#5849](https://github.com/starship/starship/issues/5849)) ([df65b21](https://github.com/starship/starship/commit/df65b2155f92c03d07cabbcee6c92104a878c963))
* **quarto:** Add Quarto module ([#5820](https://github.com/starship/starship/issues/5820)) ([0e49f04](https://github.com/starship/starship/commit/0e49f04a6b249090cf3703c5dac041a51e6bf530))
* **username:** add detect_env_vars as option ([#5833](https://github.com/starship/starship/issues/5833)) ([b8a812b](https://github.com/starship/starship/commit/b8a812b93207da992ff8ae9f8b955bfa1252072b))
### Bug Fixes
* **bash:** Handle Unbound Variables Errors in Bash ([#4972](https://github.com/starship/starship/issues/4972)) ([7093d5c](https://github.com/starship/starship/commit/7093d5cd84967edba93c9ed412b07519664f6356))
* **bash:** improve integration with bash-preexec ([#5734](https://github.com/starship/starship/issues/5734)) ([2aa711c](https://github.com/starship/starship/commit/2aa711ccc7096437e21149b18d1384534bfbcc57))
* **character:** also handle vi edit mode in pwsh ([#5775](https://github.com/starship/starship/issues/5775)) ([0891ec2](https://github.com/starship/starship/commit/0891ec27a40421cd742a853885731aed63f412aa))
* **direnv:** update to work with direnv v2.33 ([#5657](https://github.com/starship/starship/issues/5657)) ([cec111a](https://github.com/starship/starship/commit/cec111affdaf0a52f72c398f8307cf7e19c7dd8d))
* **git_branch:** fall back to "HEAD" when there is no current branch ([#5768](https://github.com/starship/starship/issues/5768)) ([6a96e84](https://github.com/starship/starship/commit/6a96e84a15e3ea598356e4fcad23ac4b2690dd1e))
* **nu:** continuation prompt not being displayed correctly ([#5851](https://github.com/starship/starship/issues/5851)) ([d308e91](https://github.com/starship/starship/commit/d308e918ee014f4ca9976683e79e819afd8160f7))
starship init nu | save -f ($nu.data-dir | path join "vendor/autoload/starship.nu")
```
And add the following to the end of your Nushell configuration (find it by running `$nu.config-path`):
```sh
use ~/.cache/starship/init.nu
```
Note: Only Nushell v0.78+ is supported
Note: Only Nushell v0.96+ is supported
</details>
@@ -413,11 +421,11 @@ If you're looking to further customize Starship:
## 🤝 Contributing
We are always looking for contributors of **all skill levels**! If you're looking to ease your way into the project, try out a [good first issue](https://github.com/starship/starship/labels/🌱%20good%20first%20issue).
We are always looking for contributors of **all skill levels**! If you're looking to ease your way into the project, try out a [good first issue](https://github.com/starship/starship/issues?q=state%3Aopen%20label%3A%22%F0%9F%8C%B1%20good%20first%20issue%22).
If you are fluent in a non-English language, we greatly appreciate any help keeping our docs translated and up-to-date in other languages. If you would like to help, translations can be contributed on the [Starship Crowdin](https://translate.starship.rs/).
If you are interested in helping contribute to starship, please take a look at our [Contributing Guide](https://github.com/starship/starship/blob/master/CONTRIBUTING.md). Also, feel free to drop into our [Discord server](https://discord.gg/8Jzqu3T) and say hi. 👋
If you are interested in helping contribute to starship, please take a look at our [Contributing Guide](https://github.com/starship/starship/blob/main/CONTRIBUTING.md). Also, feel free to drop into our [Discord server](https://discord.gg/8Jzqu3T) and say hi. 👋
## 💭 Inspired By
@@ -433,19 +441,26 @@ Please check out these previous works that helped inspire the creation of starsh
Support this project by [becoming a sponsor](https://github.com/sponsors/starship). Your name or logo will show up here with a link to your website.
**Supporter Tier**
## 🔒 Code Signing Policy
- [Appwrite](https://appwrite.io/)
Free code signing provided by [SignPath.io], certificate by [SignPath Foundation].
- Approvers and Authors: [Mission Control](https://github.com/orgs/starship/teams/mission-control)
This program will not transfer any information to other networked systems unless specifically requested by the user or the person installing or operating it.
description: Starship is the minimal, blazing fast, and extremely customizable prompt for any shell! Shows the information you need, while staying sleek and minimal. Quick installation available for Bash, Fish, ZSH, Ion, Tcsh, Elvish, Nu, Xonsh, Cmd, and PowerShell.
@@ -51,6 +66,7 @@ description: Starship is the minimal, blazing fast, and extremely customizable p
```sh
brew install starship
```
With [Winget](https://github.com/microsoft/winget-cli):
```powershell
@@ -89,7 +105,7 @@ description: Starship is the minimal, blazing fast, and extremely customizable p
eval "$(starship init zsh)"
```
#### Powershell
#### PowerShell
Add the following to the end of `Microsoft.PowerShell_profile.ps1`. You can check the location of this file by querying the `$PROFILE` variable in PowerShell. Typically the path is `~\Documents\PowerShell\Microsoft.PowerShell_profile.ps1` or `~/.config/powershell/Microsoft.PowerShell_profile.ps1` on -Nix.
@@ -108,20 +124,17 @@ description: Starship is the minimal, blazing fast, and extremely customizable p
```
#### Elvish
> [!WARNING]
> Only elvish v0.18 or higher is supported.
::: warning
Only elvish v0.18 or higher is supported.
:::
Add the following to the end of `~/.elvish/rc.elv`:
Add the following to the end of `~/.config/elvish/rc.elv` (`%AppData%\elvish\rc.elv` on Windows):
```sh
# ~/.elvish/rc.elv
eval (starship init elvish)
```
For elvish versions prior to v0.21.0 the config file might instead be `~/.elvish/rc.elv`
#### Tcsh
@@ -134,24 +147,15 @@ description: Starship is the minimal, blazing fast, and extremely customizable p
```
#### Nushell
> [!WARNING]
> This will change in the future.
> Only Nushell v0.96+ is supported.
::: warning
This will change in the future.
Only Nushell v0.78+ is supported.
:::
Add the following to the end of your Nushell env file (find it by running `$nu.env-path` in Nushell):
```sh
mkdir ~/.cache/starship
starship init nu | save -f ~/.cache/starship/init.nu
```
And add the following to the end of your Nushell configuration (find it by running `$nu.config-path`):
Add the following to the end of your Nushell configuration (find it by running `$nu.config-path` in Nushell):
## Custom pre-prompt and pre-execution Commands in Cmd
Clink provides extremely flexible APIs to run pre-prompt and pre-exec commands
@@ -259,9 +291,11 @@ in `format` is also supported in `right_format`. The `$all` variable will only c
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
the input line in a multi-line prompt, see the [`fill` module](/config/#fill).
the input line in a multi-line prompt, see the [`fill` module](../config/#fill).
`right_format` is currently supported for the following shells: elvish, fish, zsh, xonsh, cmd, nushell.
`right_format` is currently supported for the following shells: elvish, fish, zsh, xonsh, cmd, nushell, bash.
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.
### Example
@@ -281,6 +315,12 @@ Produces a prompt like the following:
▶ starship on rprompt [!] is 📦 v0.57.0 via 🦀 v1.54.0 took 17s
```
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
```
## 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).
@@ -300,10 +340,320 @@ Note: Continuation prompts are only available in the following shells:
```toml
# ~/.config/starship.toml
# A continuation prompt that displays two filledin arrows
# A continuation prompt that displays two filled-in arrows
continuation_prompt='▶▶ '
```
## 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
You can customize the Claude Code statusline by modifying the `claude-code` profile and individual module configurations in your `~/.config/starship.toml`:
The `claude_context` module displays context window usage as a percentage and visual gauge. The style automatically changes based on configurable thresholds.
| `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`.
| 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.
| `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`.
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:
@@ -321,7 +671,9 @@ Style strings are a list of words, separated by whitespace. The words are not ca
-`<color>`
-`none`
where `<color>` is a color specifier (discussed below). `fg:<color>` and `<color>` currently do the same thing, though this may change in the future.`inverted` swaps the background and foreground colors. The order of words in the string does not matter.
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.
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.
@@ -338,6 +690,6 @@ If multiple colors are specified for foreground/background, the last one in the
Not every style string will be displayed correctly by every terminal. In particular, the following known quirks exist:
- Many terminals disable support for `blink` by default
- Many terminals disable support for `blink` by default.
-`hidden` is [not supported on iTerm](https://gitlab.com/gnachman/iterm2/-/issues/4564).
-`strikethrough` is not supported by the default macOS Terminal.app
-`strikethrough` is not supported by the default macOS Terminal.app.
description: Starship is the minimal, blazing fast, and extremely customizable prompt for any shell! Shows the information you need, while staying sleek and minimal. Quick installation available for Bash, Fish, ZSH, Ion, Tcsh, Elvish, Nu, Xonsh, Cmd, and PowerShell.
@@ -55,6 +71,7 @@ description: Starship is the minimal, blazing fast, and extremely customizable p
```sh
brew install starship
```
With [Winget](https://github.com/microsoft/winget-cli):
```powershell
@@ -97,7 +114,7 @@ description: Starship is the minimal, blazing fast, and extremely customizable p
```
#### Powershell
#### PowerShell
Add the following to the end of `Microsoft.PowerShell_profile.ps1`. You can check the location of this file by querying the `$PROFILE` variable in PowerShell. Typically the path is `~\Documents\PowerShell\Microsoft.PowerShell_profile.ps1` or `~/.config/powershell/Microsoft.PowerShell_profile.ps1` on -Nix.
@@ -119,19 +136,16 @@ description: Starship is the minimal, blazing fast, and extremely customizable p
#### Elvish
::: warning
> [!WARNING] Only elvish v0.18 or higher is supported.
Only elvish v0.18 or higher is supported.
:::
أضف ما يلي إلى نهاية الملف `~/.elvish/rc.elv`:
Add the following to the end of `~/.config/elvish/rc.elv` (`%AppData%\elvish\rc.elv` on Windows):
```sh
# ~/.elvish/rc.elv
eval (starship init elvish)
```
For elvish versions prior to v0.21.0 the config file might instead be `~/.elvish/rc.elv`
#### Tcsh
@@ -147,22 +161,13 @@ description: Starship is the minimal, blazing fast, and extremely customizable p
#### Nushell
::: warning
> [!WARNING] This will change in the future. Only Nushell v0.96+ is supported.
This will change in the future. Only Nushell v0.78+ is supported.
:::
Add the following to the end of your Nushell env file (find it by running `$nu.env-path` in Nushell):
```sh
mkdir ~/.cache/starship
starship init nu | save -f ~/.cache/starship/init.nu
```
And add the following to the end of your Nushell configuration (find it by running `$nu.config-path`):
Add the following to the end of your Nushell configuration (find it by running `$nu.config-path` in Nushell):
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.
::: تحذير
The configurations in this section are subject to change in future releases of Starship.
:::
> [!WARNING] The configurations in this section are subject to change in future releases of Starship.
## TransientPrompt in PowerShell
@@ -80,6 +76,26 @@ starship init fish | source
enable_transience
```
## TransientPrompt and TransientRightPrompt in Bash
The [Ble.sh](https://github.com/akinomyoga/ble.sh) framework at v0.4 or higher 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, put this in `~/.bashrc``bleopt prompt_ps1_transient=<value>`:
The \<value\> here is a colon-separated list of `always`, `same-dir` and `trim`. When `prompt_ps1_final` is empty and the option `prompt_ps1_transient` has a non-empty \<value\>, the prompt specified by `PS1` is erased on leaving the current command line. If \<value\> contains a field `trim`, only the last line of multiline `PS1` is preserved and the other lines are erased. Otherwise, the command line will be 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 the previous command line, this option `prompt_ps1_transient` is ignored.
Make the following changes to your `~/.blerc` (or in `~/.config/blesh/init.sh`) to customize what gets displayed on 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
- 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
## 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:
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 the input line in a multi-line prompt, see the [`fill` module](/config/#fill).
Note: The right prompt is a single line following the input location. To right align modules above the input line in a multi-line prompt, see the [`fill` module](../config/#fill).
`right_format` is currently supported for the following shells: elvish, fish, zsh, xonsh, cmd, nushell.
`right_format` is currently supported for the following shells: elvish, fish, zsh, xonsh, cmd, nushell, bash.
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.
### مثال
@@ -244,10 +262,320 @@ Note: Continuation prompts are only available in the following shells:
```toml
# ~/.config/starship.toml
# A continuation prompt that displays two filledin arrows
# A continuation prompt that displays two filled-in arrows
continuation_prompt='▶▶ '
```
## 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
You can customize the Claude Code statusline by modifying the `claude-code` profile and individual module configurations in your `~/.config/starship.toml`:
The `claude_context` module displays context window usage as a percentage and visual gauge. The style automatically changes based on configurable thresholds.
| `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`.
| 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.
| `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`.
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:
@@ -265,7 +593,7 @@ Style strings are a list of words, separated by whitespace. The words are not ca
-`<color>`
-`none`
where `<color>` is a color specifier (discussed below). `fg:<color>` and `<color>` currently do the same thing, though this may change in the future. `inverted` swaps the background and foreground colors. The order of words in the string does not matter.
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.
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.
@@ -279,6 +607,6 @@ If multiple colors are specified for foreground/background, the last one in the
Not every style string will be displayed correctly by every terminal. In particular, the following known quirks exist:
- Many terminals disable support for `blink` by default
- Many terminals disable support for `blink` by default.
-`hidden` is [not supported on iTerm](https://gitlab.com/gnachman/iterm2/-/issues/4564).
-`strikethrough` is not supported by the default macOS Terminal.app
-`strikethrough` is not supported by the default macOS Terminal.app.
## Why do I see `Executing command "..." timed out.` warnings?
Starship executes different commands to get information to display in the prompt, for example the version of a program or the current git status. To make sure starship doesn't hang while trying to execute these commands we set a time limit, if a command takes longer than this limit starship will stop the execution of the command and output the above warning, this is expected behaviour. This time limit is configurable using the [`command_timeout`key](/config/#prompt) so if you want you can increase the time limit. You can also follow the debugging steps below to see which command is being slow and see if you can optimise it. Finally you can set the `STARSHIP_LOG` env var to `error` to hide these warnings.
Starship executes different commands to get information to display in the prompt, for example the version of a program or the current git status. To make sure starship doesn't hang while trying to execute these commands we set a time limit, if a command takes longer than this limit starship will stop the execution of the command and output the above warning, this is expected behaviour. This time limit is configurable using the [`command_timeout`key](../config/#prompt) so if you want you can increase the time limit. You can also follow the debugging steps below to see which command is being slow and see if you can optimise it. Finally you can set the `STARSHIP_LOG` env var to `error` to hide these warnings.
## I see symbols I don't understand or expect, what do they mean?
@@ -72,7 +72,7 @@ You can enable the debug logs by using the `STARSHIP_LOG` env var. These logs ca
env STARSHIP_LOG=trace starship module rust
```
If starship is being slow you can try using the `timings` command to see if there is a particular module or command that to blame.
If starship is being slow you can try using the `timings` command to see if there is a particular module or command that is to blame.
```sh
env STARSHIP_LOG=trace starship timings
@@ -120,3 +120,11 @@ If Starship was installed using the install script, the following command will d
# Locate and delete the starship binary
sh -c 'rm "$(command -v 'starship')"'
```
## How do I install Starship without `sudo`?
The shell install script (`https://starship.rs/install.sh`) only attempts to use `sudo` if the target installation directory is not writable by the current user. The default installation directory is the value of the `$BIN_DIR` environment variable or `/usr/local/bin` if `$BIN_DIR` is not set. If you instead set the installation directory to one that is writable by your user, you should be able to install starship without `sudo`. For example, `curl -sS https://starship.rs/install.sh | sh -s -- -b ~/.local/bin` uses the `-b` command line option of the install script to set the installation directory to `~/.local/bin`.
For a non-interactive installation of Starship, don't forget to add the `-y` option to skip the confirmation. Check the source of the installation script for a list of all supported installation options.
When using a package manager, see the documentation for your package manager about installing with or without `sudo`.
starship init nu | save -f ($nu.data-dir | path join "vendor/autoload/starship.nu")
```
And add the following to the end of your Nushell configuration (find it by running `$nu.config-path`):
```sh
use ~/.cache/starship/init.nu
```
Note: Only Nushell v0.78+ is supported
Note: Only Nushell v0.96+ is supported
</details>
@@ -411,7 +408,7 @@ If you're looking to further customize Starship:
## 🤝 المساهمة
نبحث دائماً عن مساهمين من **جميع المستويات**! إذا كنت تتطلع إلى تسهيل طريقك إلى المشروع، جرب [إنشاء اول مشكلة](https://github.com/starship/starship/labels/🌱%20good%20first%20issue).
نبحث دائماً عن مساهمين من **جميع المستويات**! If you're looking to ease your way into the project, try out a [good first issue](https://github.com/starship/starship/issues?q=state%3Aopen%20label%3A%22%F0%9F%8C%B1%20good%20first%20issue%22).
إذا كنت تتحدث بطلاقة بلغة غير إنجليزية، فإننا نقدر أي مساعدة للحفاظ على ترجمة المستندات وتحديثها بلغات أخرى. إذا كنت ترغب في المساعدة، يمكن المساهمة بالترجمة على [Starship Crowdin](https://translate.starship.rs/).
@@ -431,9 +428,16 @@ If you're looking to further customize Starship:
Support this project by [becoming a sponsor](https://github.com/sponsors/starship). Your name or logo will show up here with a link to your website.
**Supporter Tier**
## 🔒 Code Signing Policy
- [Appwrite](https://appwrite.io/)
Free code signing provided by [SignPath.io](https://signpath.io), certificate by [SignPath Foundation](https://signpath.org).
- Approvers and Authors: [Mission Control](https://github.com/orgs/starship/teams/mission-control)
This program will not transfer any information to other networked systems unless specifically requested by the user or the person installing or operating it.
1.Tell your shell to use the starship binary as its prompt by modifying its init scripts
1.ثبت ملفات**starship**على جهازك
1.تنبيه موجه الأوامر بإن يقوم بجعل سطر الأوامر ل starship وذلك بتعديل كود الإبتداء
For most users, the instructions on [the main page](/guide/#🚀-installation) will work great. However, for some more specialized platforms, different instructions are needed.
For most users, the instructions on [the main page](../guide/#🚀-installation) will work great. لكن، من أجل الاستخدام المتقدم، هناك حاجة لتوجيهات أخرى.
There are so many platforms out there that they didn't fit into the main README.md file, so here are some installation instructions for other platforms from the community. Is yours not here? Please do add it here if you figure it out!
هناك العديد من الحالات التي لا تلبي المعلومات في ملف README.md احتياجها ولذلك هذه بعض إرشادات التثبيت الإضافية مقدمة من مجتمع starship. إذا كانت لديك ملاحظة وقمت بحلها ولم تجد هذا الحل لها ضمن الحلول التالية، الرجاء أضفها هنا!
## [Chocolatey](https://chocolatey.org)
### المتطلبات الأساسية
Head over to the [Chocolatey installation page](https://chocolatey.org/install) and follow the instructions to install Chocolatey.
إذهب إلى [ صفحة تثبيت Chocolatey ](https://chocolatey.org/install) و اتبع الإرشادات لتثبيت البرنامج.
### التثبيت
@@ -23,41 +23,35 @@ choco install starship
## [termux](https://termux.com)
### المتطلبات الأساسية
```sh
pkg install getconf
```
### التثبيت
```sh
curl -sS https://starship.rs/install.sh | sh -s -- --bin-dir /data/data/com.termux/files/usr/bin
pkg install starship
```
## [Funtoo Linux](https://www.funtoo.org/Welcome)
### التثبيت
On Funtoo Linux, starship can be installed from [core-kit](https://github.com/funtoo/core-kit/tree/1.4-release/app-shells/starship) via Portage:
يمكن تثبيت starship في Funtoo linux باستخدام [core-kit](https://github.com/funtoo/core-kit/tree/1.4-release/app-shells/starship) via Portage:
```sh
emerge app-shells/starship
```
## [Nix](https://nixos.wiki/wiki/Nix)
## [Nix](https://wiki.nixos.org/wiki/Nix)
### Getting the Binary
### احصل على ملفات الباينري
#### Imperatively
#### بشكل مباشر
```sh
nix-env -iA nixos.starship
```
#### Declarative, single user, via [home-manager](https://github.com/nix-community/home-manager)
#### بشكل تصريحي، من أجل مستخدم واحد، عبر [home-manager](https://github.com/nix-community/home-manager)
Enable the `programs.starship`module in your `home.nix` file, and add your settings
مكن كود`programs.starship`في ملف`home.nix` و أضف إلى الإعدادات الإعدادات التالية
```nix
{
@@ -78,15 +72,15 @@ Enable the `programs.starship` module in your `home.nix` file, and add your sett
}
```
then run
ثم بعد ذلك شغل
```sh
home-manager switch
```
#### Declarative, system-wide, with NixOS
#### بشكل تصريحي، لعدة مستخدمين
Add`pkgs.starship`to`environment.systemPackages`in your`configuration.nix`, then run
أضف`pkgs.starship`إلى`environment.systemPackages`في `configuration.nix`, بعد ذلك شغل
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.
النسخة 0.45.0 سوف تستمر في تقديم تحديثات جذرية حتى الوصول للنسخة المستقرة 1.0.0. لقد قمنا بتغييرات رئيسية لكيفية إعداد سطر الأوامر، وذلك يسمح بطيف أكبر من قابلية التخصيص.
This guide is intended to walk you through the breaking changes.
هذا الدليل هو جولة خلال التغييرات الرئيسية التي قمنا بها.
## `prompt_order` has been replaced by a root-level `format`
## `prompt_order`تم استبداله بتنسيق root-level ``
Previously to v0.45.0, `prompt_order` would accept an array of module names in the order which they should be rendered by Starship.
@@ -14,11 +14,7 @@ This preset changes the symbols for each module to use Nerd Font symbols.
This preset changes the symbols for several modules so that no Nerd Font symbols are used anywhere in the prompt.
::: tip
This preset will become the default preset [in a future release of starship](https://github.com/starship/starship/pull/3544).
:::
> [!TIP] This preset will become the default preset [in a future release of starship](https://github.com/starship/starship/pull/3544).
[Click to view No Nerd Font preset](./no-nerd-font)
@@ -69,3 +65,15 @@ This preset is inspired by [tokyo-night-vscode-theme](https://github.com/enkia/t
This preset is heavily inspired by [Pastel Powerline](./pastel-powerline.md), and [Tokyo Night](./tokyo-night.md).
[](./gruvbox-rainbow)
## [Jetpack](./jetpack.md)
This is a pseudo minimalist preset inspired by the [geometry](https://github.com/geometry-zsh/geometry) and [spaceship](https://github.com/spaceship-prompt/spaceship-prompt) prompts.
[](./jetpack)
This preset is a minimally modified version of [Gruvbox Rainbow](./gruvbox-rainbow.md) using the [Catppuccin](https://github.com/catppuccin/catppuccin) theme palette.
[](./catppuccin-powerline)
This preset is a minimally modified version of [Gruvbox Rainbow](./gruvbox-rainbow.md) using the [Catppuccin](https://github.com/catppuccin/catppuccin) theme palette.

### المتطلبات الأساسية
- A [Nerd Font](https://www.nerdfonts.com/) installed and enabled in your terminal
description: Starship is the minimal, blazing fast, and extremely customizable prompt for any shell! Shows the information you need, while staying sleek and minimal. Quick installation available for Bash, Fish, ZSH, Ion, Tcsh, Elvish, Nu, Xonsh, Cmd, and PowerShell.
@@ -55,6 +71,7 @@ description: Starship is the minimal, blazing fast, and extremely customizable p
```sh
brew install starship
```
With [Winget](https://github.com/microsoft/winget-cli):
```powershell
@@ -97,7 +114,7 @@ description: Starship is the minimal, blazing fast, and extremely customizable p
```
#### Powershell
#### PowerShell
Add the following to the end of `Microsoft.PowerShell_profile.ps1`. You can check the location of this file by querying the `$PROFILE` variable in PowerShell. Typically the path is `~\Documents\PowerShell\Microsoft.PowerShell_profile.ps1` or `~/.config/powershell/Microsoft.PowerShell_profile.ps1` on -Nix.
@@ -119,19 +136,16 @@ description: Starship is the minimal, blazing fast, and extremely customizable p
#### Elvish
::: warning
> [!WARNING] Only elvish v0.18 or higher is supported.
Only elvish v0.18 or higher is supported.
:::
`~/.elvish/rc.elv` এর শেষে নিম্নলিখিত লাইন টি যোগ করুন:
Add the following to the end of `~/.config/elvish/rc.elv` (`%AppData%\elvish\rc.elv` on Windows):
```sh
# ~/.elvish/rc.elv
eval (starship init elvish)
```
For elvish versions prior to v0.21.0 the config file might instead be `~/.elvish/rc.elv`
#### Tcsh
@@ -147,22 +161,13 @@ description: Starship is the minimal, blazing fast, and extremely customizable p
#### Nushell
::: warning
> [!WARNING] This will change in the future. Only Nushell v0.96+ is supported.
This will change in the future. Only Nushell v0.78+ is supported.
:::
আপনার Nushell env ফাইলের (Nushell এ `$nu.env-path` কমান্ডটি রান করে ফাইলটি খুঁজে বের করুন) শেষে নিম্নলিখিত লাইনগুলি যোগ করুন:
```sh
mkdir ~/.cache/starship
starship init nu | save -f ~/.cache/starship/init.nu
```
এরপর আপনার Nushell কনফিগের (Nushell এ `$nu.config-path` কমান্ডটি রান করে ফাইলটি খুঁজে বের করুন) শেষে নিম্নলিখিত লাইনটি যোগ করুন:
Add the following to the end of your Nushell configuration (find it by running `$nu.config-path` in Nushell):
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.
::: warning
The configurations in this section are subject to change in future releases of Starship.
:::
> [!WARNING] The configurations in this section are subject to change in future releases of Starship.
## TransientPrompt in PowerShell
@@ -80,6 +76,26 @@ starship init fish | source
enable_transience
```
## TransientPrompt and TransientRightPrompt in Bash
The [Ble.sh](https://github.com/akinomyoga/ble.sh) framework at v0.4 or higher 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, put this in `~/.bashrc``bleopt prompt_ps1_transient=<value>`:
The \<value\> here is a colon-separated list of `always`, `same-dir` and `trim`. When `prompt_ps1_final` is empty and the option `prompt_ps1_transient` has a non-empty \<value\>, the prompt specified by `PS1` is erased on leaving the current command line. If \<value\> contains a field `trim`, only the last line of multiline `PS1` is preserved and the other lines are erased. Otherwise, the command line will be 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 the previous command line, this option `prompt_ps1_transient` is ignored.
Make the following changes to your `~/.blerc` (or in `~/.config/blesh/init.sh`) to customize what gets displayed on 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
- 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
## 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:
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 the input line in a multi-line prompt, see the [`fill` module](/config/#fill).
Note: The right prompt is a single line following the input location. To right align modules above the input line in a multi-line prompt, see the [`fill` module](../config/#fill).
`right_format` is currently supported for the following shells: elvish, fish, zsh, xonsh, cmd, nushell.
`right_format` is currently supported for the following shells: elvish, fish, zsh, xonsh, cmd, nushell, bash.
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.
### Example
@@ -244,10 +262,320 @@ Note: Continuation prompts are only available in the following shells:
```toml
# ~/.config/starship.toml
# A continuation prompt that displays two filledin arrows
# A continuation prompt that displays two filled-in arrows
continuation_prompt='▶▶ '
```
## 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
You can customize the Claude Code statusline by modifying the `claude-code` profile and individual module configurations in your `~/.config/starship.toml`:
The `claude_context` module displays context window usage as a percentage and visual gauge. The style automatically changes based on configurable thresholds.
| `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`.
| 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.
| `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`.
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:
@@ -265,7 +593,7 @@ Style strings are a list of words, separated by whitespace. The words are not ca
-`<color>`
-`none`
where `<color>` is a color specifier (discussed below). `fg:<color>` and `<color>` currently do the same thing, though this may change in the future. `inverted` swaps the background and foreground colors. The order of words in the string does not matter.
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.
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.
@@ -279,6 +607,6 @@ If multiple colors are specified for foreground/background, the last one in the
Not every style string will be displayed correctly by every terminal. In particular, the following known quirks exist:
- Many terminals disable support for `blink` by default
- Many terminals disable support for `blink` by default.
-`hidden` is [not supported on iTerm](https://gitlab.com/gnachman/iterm2/-/issues/4564).
-`strikethrough` is not supported by the default macOS Terminal.app
-`strikethrough` is not supported by the default macOS Terminal.app.
## Why do I see `Executing command "..." timed out.` warnings?
Starship executes different commands to get information to display in the prompt, for example the version of a program or the current git status. To make sure starship doesn't hang while trying to execute these commands we set a time limit, if a command takes longer than this limit starship will stop the execution of the command and output the above warning, this is expected behaviour. This time limit is configurable using the [`command_timeout`key](/config/#prompt) so if you want you can increase the time limit. You can also follow the debugging steps below to see which command is being slow and see if you can optimise it. Finally you can set the `STARSHIP_LOG` env var to `error` to hide these warnings.
Starship executes different commands to get information to display in the prompt, for example the version of a program or the current git status. To make sure starship doesn't hang while trying to execute these commands we set a time limit, if a command takes longer than this limit starship will stop the execution of the command and output the above warning, this is expected behaviour. This time limit is configurable using the [`command_timeout`key](../config/#prompt) so if you want you can increase the time limit. You can also follow the debugging steps below to see which command is being slow and see if you can optimise it. Finally you can set the `STARSHIP_LOG` env var to `error` to hide these warnings.
## I see symbols I don't understand or expect, what do they mean?
@@ -72,7 +72,7 @@ You can enable the debug logs by using the `STARSHIP_LOG` env var. These logs ca
env STARSHIP_LOG=trace starship module rust
```
If starship is being slow you can try using the `timings` command to see if there is a particular module or command that to blame.
If starship is being slow you can try using the `timings` command to see if there is a particular module or command that is to blame.
```sh
env STARSHIP_LOG=trace starship timings
@@ -120,3 +120,11 @@ If Starship was installed using the install script, the following command will d
# Locate and delete the starship binary
sh -c 'rm "$(command -v 'starship')"'
```
## How do I install Starship without `sudo`?
The shell install script (`https://starship.rs/install.sh`) only attempts to use `sudo` if the target installation directory is not writable by the current user. The default installation directory is the value of the `$BIN_DIR` environment variable or `/usr/local/bin` if `$BIN_DIR` is not set. If you instead set the installation directory to one that is writable by your user, you should be able to install starship without `sudo`. For example, `curl -sS https://starship.rs/install.sh | sh -s -- -b ~/.local/bin` uses the `-b` command line option of the install script to set the installation directory to `~/.local/bin`.
For a non-interactive installation of Starship, don't forget to add the `-y` option to skip the confirmation. Check the source of the installation script for a list of all supported installation options.
When using a package manager, see the documentation for your package manager about installing with or without `sudo`.
starship init nu | save -f ($nu.data-dir | path join "vendor/autoload/starship.nu")
```
এরপর আপনার Nushell কনফিগের (Nushell এ `$nu.config-path` কমান্ডটি রান করে ফাইলটি খুঁজে বের করুন) শেষে নিম্নলিখিত লাইনটি যোগ করুন:
```sh
use ~/.cache/starship/init.nu
```
বিঃদ্রঃ শুধুমাত্র Nushell v0.78+ কাজ করবে ।
বিঃদ্রঃ শুধুমাত্র Nushell v0.96+ কাজ করবে ।
</details>
@@ -411,7 +408,7 @@ eval "$(starship init zsh)"
## 🤝 নিজে অবদান রাখুন
আমরা সবসময় **সকল দক্ষতা স্তরের** অবদানকারীদের খুঁজছি! আপনি যদি সহজ ভাবে এই প্রোজেক্টে অবদান রাখতে চান তাইলে ["good first issue"](https://github.com/starship/starship/labels/🌱%20good%20first%20issue) গুলির সমাধান করার চেষ্টা করতে পারেন ।
আমরা সবসময় **সকল দক্ষতা স্তরের** অবদানকারীদের খুঁজছি! If you're looking to ease your way into the project, try out a [good first issue](https://github.com/starship/starship/issues?q=state%3Aopen%20label%3A%22%F0%9F%8C%B1%20good%20first%20issue%22).
আপনি যদি ইংরেজি ছাড়া অন্য কোন ভাষায় সাবলীল হন, তাহলে আপনি আমাদের ডকুমেন্টেশন অনুবাদে এবং আপ-টু-ডেট রাখতে সহায়তা করতে পারেন, আমরা খুবই কৃতজ্ঞ হব । যদি এক্ষেত্রে সাহায্য করতে চান, তাহলে [Starship Crowdin](https://translate.starship.rs/) পেইজ এ গিয়ে আপনার অনুবাদ গুলি যোগ করতে পারবেন ।
@@ -431,9 +428,16 @@ eval "$(starship init zsh)"
[একজন স্পনসর হয়ে](https://github.com/sponsors/starship) এই প্রোজেক্টটিকে আর্থিক ভাবে সহায়তা করুন । আপনার নাম অথবা লোগো নিম্নে দেখা যাবে আপনার ওয়েবসাইট এর লিঙ্ক সহ ।
**সমর্থক স্তর**
## 🔒 Code Signing Policy
- [Appwrite](https://appwrite.io/)
Free code signing provided by [SignPath.io](https://signpath.io), certificate by [SignPath Foundation](https://signpath.org).
- Approvers and Authors: [Mission Control](https://github.com/orgs/starship/teams/mission-control)
This program will not transfer any information to other networked systems unless specifically requested by the user or the person installing or operating it.
@@ -5,7 +5,7 @@ To install starship, you need to do two things:
1. Get the **starship** binary onto your computer
1. Tell your shell to use the starship binary as its prompt by modifying its init scripts
For most users, the instructions on [the main page](/guide/#🚀-installation) will work great. However, for some more specialized platforms, different instructions are needed.
For most users, the instructions on [the main page](../guide/#🚀-installation) will work great. However, for some more specialized platforms, different instructions are needed.
There are so many platforms out there that they didn't fit into the main README.md file, so here are some installation instructions for other platforms from the community. Is yours not here? Please do add it here if you figure it out!
@@ -23,16 +23,10 @@ choco install starship
## [termux](https://termux.com)
### পূর্বশর্ত
```sh
pkg install getconf
```
### ইন্সটল
```sh
curl -sS https://starship.rs/install.sh | sh -s -- --bin-dir /data/data/com.termux/files/usr/bin
pkg install starship
```
## [Funtoo Linux](https://www.funtoo.org/Welcome)
@@ -45,7 +39,7 @@ On Funtoo Linux, starship can be installed from [core-kit](https://github.com/fu
@@ -14,11 +14,7 @@ This preset changes the symbols for each module to use Nerd Font symbols.
This preset changes the symbols for several modules so that no Nerd Font symbols are used anywhere in the prompt.
::: tip
This preset will become the default preset [in a future release of starship](https://github.com/starship/starship/pull/3544).
:::
> [!TIP] This preset will become the default preset [in a future release of starship](https://github.com/starship/starship/pull/3544).
[Click to view No Nerd Font preset](./no-nerd-font)
@@ -69,3 +65,15 @@ This preset is inspired by [tokyo-night-vscode-theme](https://github.com/enkia/t
This preset is heavily inspired by [Pastel Powerline](./pastel-powerline.md), and [Tokyo Night](./tokyo-night.md).
[](./gruvbox-rainbow)
## [Jetpack](./jetpack.md)
This is a pseudo minimalist preset inspired by the [geometry](https://github.com/geometry-zsh/geometry) and [spaceship](https://github.com/spaceship-prompt/spaceship-prompt) prompts.
[](./jetpack)
This preset is a minimally modified version of [Gruvbox Rainbow](./gruvbox-rainbow.md) using the [Catppuccin](https://github.com/catppuccin/catppuccin) theme palette.
[](./catppuccin-powerline)
This preset is a minimally modified version of [Gruvbox Rainbow](./gruvbox-rainbow.md) using the [Catppuccin](https://github.com/catppuccin/catppuccin) theme palette.

### পূর্বশর্ত
- A [Nerd Font](https://www.nerdfonts.com/) installed and enabled in your terminal
> [!WARNING] The configurations in this section are subject to change in future releases of Starship.
## TransientPrompt in PowerShell
@@ -80,6 +76,26 @@ starship init fish | source
enable_transience
```
## TransientPrompt and TransientRightPrompt in Bash
The [Ble.sh](https://github.com/akinomyoga/ble.sh) framework at v0.4 or higher 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, put this in `~/.bashrc``bleopt prompt_ps1_transient=<value>`:
The \<value\> here is a colon-separated list of `always`, `same-dir` and `trim`. When `prompt_ps1_final` is empty and the option `prompt_ps1_transient` has a non-empty \<value\>, the prompt specified by `PS1` is erased on leaving the current command line. If \<value\> contains a field `trim`, only the last line of multiline `PS1` is preserved and the other lines are erased. Otherwise, the command line will be 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 the previous command line, this option `prompt_ps1_transient` is ignored.
Make the following changes to your `~/.blerc` (or in `~/.config/blesh/init.sh`) to customize what gets displayed on 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
- 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
## 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:
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 the input line in a multi-line prompt, see the [`fill` module](/config/#fill).
Note: The right prompt is a single line following the input location. To right align modules above the input line in a multi-line prompt, see the [`fill` module](../config/#fill).
`right_format` is currently supported for the following shells: elvish, fish, zsh, xonsh, cmd, nushell.
`right_format` is currently supported for the following shells: elvish, fish, zsh, xonsh, cmd, nushell, bash.
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.
### نموونە
@@ -244,10 +262,320 @@ Note: Continuation prompts are only available in the following shells:
```toml
# ~/.config/starship.toml
# A continuation prompt that displays two filledin arrows
# A continuation prompt that displays two filled-in arrows
continuation_prompt = '▶▶ '
```
## 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
You can customize the Claude Code statusline by modifying the `claude-code` profile and individual module configurations in your `~/.config/starship.toml`:
The `claude_context` module displays context window usage as a percentage and visual gauge. The style automatically changes based on configurable thresholds.
| `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`.
| 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.
| `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`.
| 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) "
```
## 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:
@@ -265,7 +593,7 @@ Style strings are a list of words, separated by whitespace. The words are not ca
کە `<color>` دیاریکەری ڕەنگێکە (لە ژێرەوە باسکراوە). `fg:<color>` و `<color>` لە ئێستادا هەمان شت ئەکەن، بەڵام ئەمە ڕەنگە لە داهاتووا بگۆڕێت. `<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` ڕەنگی پاشبنەما و پێشبنەما ئەگۆڕێتەوە. ڕیزبەندی ووشەکان لە زنجیرەکەدا گرنگ نییە.
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.
@@ -279,6 +607,6 @@ If multiple colors are specified for foreground/background, the last one in the
Not every style string will be displayed correctly by every terminal. In particular, the following known quirks exist:
- Many terminals disable support for `blink` by default
- Many terminals disable support for `blink` by default.
- `hidden` is [not supported on iTerm](https://gitlab.com/gnachman/iterm2/-/issues/4564).
- `strikethrough` is not supported by the default macOS Terminal.app
- `strikethrough` is not supported by the default macOS Terminal.app.
## Why do I see `Executing command "..." timed out.` warnings?
Starship executes different commands to get information to display in the prompt, for example the version of a program or the current git status. To make sure starship doesn't hang while trying to execute these commands we set a time limit, if a command takes longer than this limit starship will stop the execution of the command and output the above warning, this is expected behaviour. This time limit is configurable using the [`command_timeout`key](/config/#prompt) so if you want you can increase the time limit. You can also follow the debugging steps below to see which command is being slow and see if you can optimise it. Finally you can set the `STARSHIP_LOG` env var to `error` to hide these warnings.
Starship executes different commands to get information to display in the prompt, for example the version of a program or the current git status. To make sure starship doesn't hang while trying to execute these commands we set a time limit, if a command takes longer than this limit starship will stop the execution of the command and output the above warning, this is expected behaviour. This time limit is configurable using the [`command_timeout`key](../config/#prompt) so if you want you can increase the time limit. You can also follow the debugging steps below to see which command is being slow and see if you can optimise it. Finally you can set the `STARSHIP_LOG` env var to `error` to hide these warnings.
## I see symbols I don't understand or expect, what do they mean?
@@ -72,7 +72,7 @@ You can enable the debug logs by using the `STARSHIP_LOG` env var. These logs ca
env STARSHIP_LOG=trace starship module rust
```
If starship is being slow you can try using the `timings` command to see if there is a particular module or command that to blame.
If starship is being slow you can try using the `timings` command to see if there is a particular module or command that is to blame.
```sh
env STARSHIP_LOG=trace starship timings
@@ -120,3 +120,11 @@ If Starship was installed using the install script, the following command will d
# Locate and delete the starship binary
sh -c 'rm "$(command -v 'starship')"'
```
## How do I install Starship without `sudo`?
The shell install script (`https://starship.rs/install.sh`) only attempts to use `sudo` if the target installation directory is not writable by the current user. The default installation directory is the value of the `$BIN_DIR` environment variable or `/usr/local/bin` if `$BIN_DIR` is not set. If you instead set the installation directory to one that is writable by your user, you should be able to install starship without `sudo`. For example, `curl -sS https://starship.rs/install.sh | sh -s -- -b ~/.local/bin` uses the `-b` command line option of the install script to set the installation directory to `~/.local/bin`.
For a non-interactive installation of Starship, don't forget to add the `-y` option to skip the confirmation. Check the source of the installation script for a list of all supported installation options.
When using a package manager, see the documentation for your package manager about installing with or without `sudo`.
ئێمە هەموو کات ئەگەڕێین بۆ بەژداریکەرێک لە هەر **ئاست و توانایەکدا بێت**! If you're looking to ease your way into the project, try out a [good first issue](https://github.com/starship/starship/issues?q=state%3Aopen%20label%3A%22%F0%9F%8C%B1%20good%20first%20issue%22).
- Approvers and Authors: [Mission Control](https://github.com/orgs/starship/teams/mission-control)
This program will not transfer any information to other networked systems unless specifically requested by the user or the person installing or operating it.
@@ -5,7 +5,7 @@ To install starship, you need to do two things:
1. Get the **starship** binary onto your computer
1. Tell your shell to use the starship binary as its prompt by modifying its init scripts
For most users, the instructions on [the main page](/guide/#🚀-installation) will work great. However, for some more specialized platforms, different instructions are needed.
For most users, the instructions on [the main page](../guide/#🚀-installation) will work great. However, for some more specialized platforms, different instructions are needed.
There are so many platforms out there that they didn't fit into the main README.md file, so here are some installation instructions for other platforms from the community. Is yours not here? Please do add it here if you figure it out!
@@ -23,16 +23,10 @@ choco install starship
## [termux](https://termux.com)
### پێشمەرجەکان
```sh
pkg install getconf
```
### دامەزراندن
```sh
curl -sS https://starship.rs/install.sh | sh -s -- --bin-dir /data/data/com.termux/files/usr/bin
pkg install starship
```
## [Funtoo Linux](https://www.funtoo.org/Welcome)
@@ -45,7 +39,7 @@ On Funtoo Linux, starship can be installed from [core-kit](https://github.com/fu
@@ -14,11 +14,7 @@ This preset changes the symbols for each module to use Nerd Font symbols.
This preset changes the symbols for several modules so that no Nerd Font symbols are used anywhere in the prompt.
::: tip
This preset will become the default preset [in a future release of starship](https://github.com/starship/starship/pull/3544).
:::
> [!TIP] This preset will become the default preset [in a future release of starship](https://github.com/starship/starship/pull/3544).
[Click to view No Nerd Font preset](./no-nerd-font)
@@ -69,3 +65,15 @@ This preset is inspired by [tokyo-night-vscode-theme](https://github.com/enkia/t
This preset is heavily inspired by [Pastel Powerline](./pastel-powerline.md), and [Tokyo Night](./tokyo-night.md).
[](./gruvbox-rainbow)
## [Jetpack](./jetpack.md)
This is a pseudo minimalist preset inspired by the [geometry](https://github.com/geometry-zsh/geometry) and [spaceship](https://github.com/spaceship-prompt/spaceship-prompt) prompts.
[](./jetpack)
This preset is a minimally modified version of [Gruvbox Rainbow](./gruvbox-rainbow.md) using the [Catppuccin](https://github.com/catppuccin/catppuccin) theme palette.
[](./catppuccin-powerline)
This preset is a minimally modified version of [Gruvbox Rainbow](./gruvbox-rainbow.md) using the [Catppuccin](https://github.com/catppuccin/catppuccin) theme palette.

### پێشمەرجەکان
- A [Nerd Font](https://www.nerdfonts.com/) installed and enabled in your terminal
description: Starship ist eine minimale, super schnelle, und extrem anpassbare Prompt für jede Shell! Sie zeigt die Information, die man benötigt an, während sie schnell und minimal bleibt. Schnell-Installation verfügbar für Bash, Fish, ZSH, Ion, Tcsh, Elvish, Nu, Xonsh, Cmd, und PowerShell.
@@ -45,7 +61,7 @@ description: Starship ist eine minimale, super schnelle, und extrem anpassbare P
curl -sS https://starship.rs/install.sh | sh
```
Um Starship selbst zu aktualisieren, führe das Skript oben erneut aus. Die vorhandene Version wird ersetzt, ohne das deine Konfiguration von Starship verloren geht.
Führe das Skript oben erneut aus, um Starship selbst zu aktualisieren. Die vorhandene Version wird ersetzt, ohne dass deine Starship-Konfiguration verloren geht.
#### Installation mithilfe eines Paket-Managers
@@ -55,6 +71,7 @@ description: Starship ist eine minimale, super schnelle, und extrem anpassbare P
```sh
brew install starship
```
Mit [Winget](https://github.com/microsoft/winget-cli):
```powershell
@@ -66,7 +83,7 @@ description: Starship ist eine minimale, super schnelle, und extrem anpassbare P
#### Bash
Trage folgendes am Ende der`~/.bashrc` ein:
Füge dies ans Ende von`~/.bashrc`:
```sh
# ~/.bashrc
@@ -97,9 +114,9 @@ description: Starship ist eine minimale, super schnelle, und extrem anpassbare P
```
#### Powershell
#### PowerShell
Trage das folgende am Ende von `Microsoft.PowerShell_profile.ps1`ein. Du kannst den Speicherort dieser Datei überprüfen, indem du die `$PROFILE` Variable in PowerShell abfragst. Der Pfat lautet normalerweise`~\Documents\PowerShell\Microsoft.PowerShell_profile.ps1`unter Windows und`~/.config/powershell/Microsoft.PowerShell_profile.ps1` auf -Nix.
Füge das Folgende ans Ende von `Microsoft.PowerShell_profile.ps1`an. Du kannst den Speicherort dieser Datei überprüfen, indem du die `$PROFILE` Variable in PowerShell abfragst. Normalerweise ist der Pfad`~\Documents\PowerShell\Microsoft.PowerShell_profile.ps1`oder`~/.config/powershell/Microsoft.PowerShell_profile.ps1` auf -Nix.
```sh
Invoke-Expression (&starship init powershell)
@@ -119,19 +136,16 @@ description: Starship ist eine minimale, super schnelle, und extrem anpassbare P
#### Elvish
::: warning
> [!WARNUNG] Nur elvish v0.18 oder höher wird unterstützt.
Es wird nur elvish v0.18 oder höher unterstützt.
:::
Trage folgendes am Ende von `~/.config/fish/rc.elv` ein:
Add the following to the end of `~/.config/elvish/rc.elv` (`%AppData%\elvish\rc.elv` on Windows):
```sh
# ~/.elvish/rc.elv
eval (starship init elvish)
```
For elvish versions prior to v0.21.0 the config file might instead be `~/.elvish/rc.elv`
#### Tcsh
@@ -147,22 +161,13 @@ description: Starship ist eine minimale, super schnelle, und extrem anpassbare P
#### Nushell
::: warning
> [!WARNUNG] Dies wird sich in Zukunft ändern. Nur Nushell v0.96+ wird unterstützt.
Das wird sich in Zukunft ändern. Nur Nushell v0.78+ wird unterstützt.
:::
Add the following to the end of your Nushell env file (find it by running `$nu.env-path` in Nushell):
```sh
mkdir ~/.cache/starship
starship init nu | save -f ~/.cache/starship/init.nu
```
Und füge folgendes am Ende deiner Nushell-Konfiguration hinzu (du findest diese, indem du folgenden Befehl in Nushell ausführst `$nu.config-path`):
Add the following to the end of your Nushell configuration (find it by running `$nu.config-path` in Nushell):
Auch wenn Starship eine vielseitige Shell ist, reichen manche Konfigurationen in der `starship.toml` nicht aus, um erweiterte Einstellungen vorzunehmen. Diese Seite beschreibt einige fortgeschrittene Konfigurationen für Starship.
Auch wenn Starship eine vielseitige Shell ist, reichen manche Konfigurationen in der `starship.toml` nicht aus, um manche Sachen zu erreichen. Diese Seite beschreibt einige fortgeschrittene Konfigurationen für Starship.
::: warning
Die hier beschriebenen Konfigurationen werden sich mit kommenden Updates von Starship verändern.
:::
> [!WARNING] Die Konfigurationen in diesem Abschnitt können in zukünftigen Releases von Starship Änderungen unterliegen.
## 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`.
Es ist möglich, die zuvor geprintete Prompt mit einem benutzerdefinierten String zu ersetzen. Das ist in Fällen nützlich, in denen nicht immer die ganze Information der Prompt gebraucht wird. Führe`Enable-TransientPrompt` in deiner Shell-Session aus, um dieses Verhalten zu aktivieren. Füge das Statement in dein`$PROFILE` ein, um diese Funktion dauerhaft zu aktivieren. 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
@@ -26,13 +22,13 @@ 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:
Clink allows you to replace the previous-printed prompt with custom strings. Das ist in Fällen nützlich, in denen nicht immer die ganze Information der Prompt gebraucht wird. 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:
Sie müssen dies nur einmal tun. 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
@@ -45,7 +41,7 @@ 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
- Standardmäßig ist die rechte Seite de Eingabe leer. 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
## 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`.
Es ist möglich, die zuvor geprintete Prompt mit einem benutzerdefinierten String zu ersetzen. Das ist in Fällen nützlich, in denen nicht immer die ganze Information der Prompt gebraucht wird. 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.
@@ -70,7 +66,7 @@ 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
- Standardmäßig ist die rechte Seite de Eingabe leer. 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
@@ -80,6 +76,26 @@ starship init fish | source
enable_transience
```
## „TransientPrompt“ und „TransientRightPrompt“ in Bash
The [Ble.sh](https://github.com/akinomyoga/ble.sh) framework at v0.4 or higher 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, put this in `~/.bashrc``bleopt prompt_ps1_transient=<value>`:
The \<value\> here is a colon-separated list of `always`, `same-dir` and `trim`. When `prompt_ps1_final` is empty and the option `prompt_ps1_transient` has a non-empty \<value\>, the prompt specified by `PS1` is erased on leaving the current command line. If \<value\> contains a field `trim`, only the last line of multiline `PS1` is preserved and the other lines are erased. Otherwise, the command line will be 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 the previous command line, this option `prompt_ps1_transient` is ignored.
Make the following changes to your `~/.blerc` (or in `~/.config/blesh/init.sh`) to customize what gets displayed on 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
- 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
## 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:
Die Bash Shell hat, im Gegensatz zu vielen anderen Shells, kein konventionelles preexec/precmd Framework. Daher gestaltet es sich schwierig, vollständig anpassbare Hooks für `bash` anzubieten. Starship bietet daher die begrenzte Möglichkeit, eigene Funktionen in das prompt rendering Verfahren einzufügen:
- Um eine benutzerdefinierte Funktion kurz vor Anzeige der Eingabeaufforderung auszuführen, definiere eine neue Funktion und weise den Namen `starship_precmd_user_func` zu. Um beispielsweise eine Rakete anzuzeigen, bevor die Eingabeaufforderung erscheint, würde man folgendes tun
- Um eine benutzerdefinierte Funktion kurz vor Anzeige der Eingabeaufforderung auszuführen, definiere eine neue Funktion und weise den Namen `starship_precmd_user_func` zu. Zum Beispiel, um vor der Eingabeaufforderung eine Rakete zu zeichnen, würden Sie Folgendes tun
```bash
function blastoff(){
@@ -129,7 +145,7 @@ eval $(starship init bash)
set +o functrace
```
## Custom pre-prompt and pre-execution Commands in PowerShell
## Benutzerdefinierte Pre-Prompt- und Pre-Execution-Befehle 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`. Starship bietet daher die begrenzte Möglichkeit, eigene Funktionen in das prompt rendering Verfahren einzufügen:
If you like the result, add these lines to your shell configuration file (`~/.bashrc` or `~/.zshrc`) to make it permanent.
Zum Beispiel, wenn sie ihr aktuelles Verzeichnis als Terminal Title anzeigen wollen, fügen Sie folgenden Code-Schnipsel zu ihrer `~/.bashrc` oder `~/.zshrc` hinzu:
Zum Beispiel, wenn Sie ihr aktuelles Verzeichnis im Titel Ihrer Terminal-Registerkarte anzeigen möchten, fügen Sie folgenden Code-Schnipsel zu Ihrer `~/.bashrc` oder `~/.zshrc` hinzu:
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 the input line in a multi-line prompt, see the [`fill` module](/config/#fill).
Note: The right prompt is a single line following the input location. To right align modules above the input line in a multi-line prompt, see the [`fill` module](../config/#fill).
`right_format` is currently supported for the following shells: elvish, fish, zsh, xonsh, cmd, nushell.
`right_format` is currently supported for the following shells: elvish, fish, zsh, xonsh, cmd, nushell, bash.
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.
### Beispiel
@@ -244,10 +262,320 @@ Hinweis: Fortsetzungs-Prompts sind nur für folgende Shells verfügbar:
```toml
# ~/.config/starship.toml
# Ein Fortsetzungs-Prompt der 2 ausgefüllte Pfeile darstellt
# A continuation prompt that displays two filled-in arrows
continuation_prompt = '▶▶ '
```
## 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
You can customize the Claude Code statusline by modifying the `claude-code` profile and individual module configurations in your `~/.config/starship.toml`:
The `claude_context` module displays context window usage as a percentage and visual gauge. The style automatically changes based on configurable thresholds.
| `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`.
| 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 | | Spiegelt den Wert der Option `symbol` |
| style\* | | Mirrors the style from the matching display threshold |
\*: This variable can only be used as a part of a style string
#### Beispiele
**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.
| `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`.
| 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 | | Spiegelt den Wert der Option `symbol` |
| style\* | | Mirrors the style from the matching display threshold |
\*: This variable can only be used as a part of a style string
#### Beispiele
```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) "
```
## Style-Strings
Stil-Zeichenketten sind eine Liste von Wörtern, getrennt durch Leerzeichen. Die Wörter haben keine Groß- und Kleinschreibung (z.B. `bold` und `BoLd` werden als dieselbe Zeichenkette betrachtet). Jedes Wort kann eines der folgenden sein:
@@ -265,7 +593,7 @@ Stil-Zeichenketten sind eine Liste von Wörtern, getrennt durch Leerzeichen. Die
- `<color>`
- `keins`
wobei `<color>` eine Farbspezifikation ist (siehe unten). `fg:<color>` und `<color>` tun derzeit dasselbe, das kann sich in Zukunft aber ändern. `inverted` tauscht Hinter- und Vordergrundfarben. Die Reihenfolge der Wörter in der Liste spielt keine Rolle.
wobei `<color>` eine Farbspezifikation ist (siehe unten). `fg:<color>` und `<color>` tun derzeit dasselbe, das kann sich in Zukunft aber ändern. `<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` tauscht Hinter- und Vordergrundfarben. Die Reihenfolge der Wörter in der Liste spielt keine Rolle.
`none` überschreibt alle anderen Tokens in einem String wenn es nicht ein Teil einer `bg:` Zeichenkette ist, so dass z.B. über die Zeichenkette `fg:red none fg:blue` kein Styling mehr anzeigt wird. `bg:none` setzt den Hintergrund auf die Standardfarbe, so `fg:red bg:none` entspricht `rot` oder `fg:red` und `bg:green fg:red bg:none` entspricht auch `fg:red` oder `rot`. In der Zukunft könnte die Unterstützung von `none` in Verbindung mit anderen Tokens fallen gelassen werden.
@@ -279,6 +607,6 @@ Wenn mehrere Farben für Vordergrund oder Hintergrund angegeben werden, hat die
Not every style string will be displayed correctly by every terminal. In particular, the following known quirks exist:
- Many terminals disable support for `blink` by default
- Many terminals disable support for `blink` by default.
- `hidden` is [not supported on iTerm](https://gitlab.com/gnachman/iterm2/-/issues/4564).
- `strikethrough` is not supported by the default macOS Terminal.app
- `strikethrough` is not supported by the default macOS Terminal.app.
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.