🌌️ The minimal, blazing-fast, and infinitely customizable prompt for any shell!
Go to file
2019-05-09 23:51:50 -04:00
.build Install a fixed version of rust for CI integration tests (#39) 2019-05-01 11:12:02 -04:00
.github Clean up feature request template comment 2019-04-30 14:30:40 -04:00
adapters Create and document ZSH adapter (#9) 2019-04-17 08:38:36 -07:00
benches Parallelize prompt modules (#46) 2019-05-09 23:51:50 -04:00
src Parallelize prompt modules (#46) 2019-05-09 23:51:50 -04:00
tests Refactor segments into modules (#40) 2019-05-01 16:34:24 -04:00
.dockerignore Add docker for integration tests (#37) 2019-04-28 13:34:46 -04:00
.gitignore Add segment structure and logic 2019-04-03 20:14:26 -04:00
azure-pipelines.yml Install a fixed version of rust for CI integration tests (#39) 2019-05-01 11:12:02 -04:00
Cargo.lock Parallelize prompt modules (#46) 2019-05-09 23:51:50 -04:00
Cargo.toml Parallelize prompt modules (#46) 2019-05-09 23:51:50 -04:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md (#42) 2019-04-30 23:30:42 -04:00
integration_test Add docker for integration tests (#37) 2019-04-28 13:34:46 -04:00
LICENSE Add LICENSE 2019-04-13 00:47:49 -04:00
README.md Add Python version segment (#23) 2019-04-25 11:06:18 -04:00

Starship 🚀

The cross-shell prompt for astronauts.

Azure Pipelines Build Status Chat on Discord


⚠️ This is very much work in progress, so please don't try to use it just yet!

Starship is a Rust port of the minimalistic, powerful, and extremely customizable prompt Spaceship ZSH.

Development plans

The project is beginning as a port of Spaceship ZSH, but will be improved in areas where Spaceship ZSH was previously limited:

  • Speed
  • Concurrency of segment logic execution
    • Memoization of expensive operations
  • Safety and error handling
  • Testability of code
  • Configuration
    • Cross-shell support with JSON or TOML config files

We will not be aiming to achieve full parity with Spaceship ZSH as a result, so I am very open to discussing and reevaluating new solutions and ideas for the prompt.

I'm very new to Rust, so any help is appreciated when it comes to improving development patterns, writing idiomatic Rust, performance, safety, etc. 😄

Prompt segments

  • Prompt character turns red if the last command exits with non-zero code.
  • Current Node.js version().
  • Current Rust version (🦀).
  • Current Python version (🐍).
  • Package version of package in current directory (📦).
  • Current battery level and status
  • Current Git branch and rich repo status.
  • Indicator for jobs in the background ().
  • Execution time of the last command if it exceeds the set threshold.

Other features

  • .starshiprc configuration (JSON or TOML)
  • Custom sections given commands or binaries
  • Self-updating

Shell support

  • Fish shell
  • Z Shell
  • Bash

Test strategy

  • Per-segment benchmarking
  • Per-segment unit + integration tests
  • Shell + OS matrix acceptance tests

Setup

Prerequisites

  • Rust v1.33 or higher

Getting Started

  1. cd to the root of the starship repo

  2. Install the starship binary:

    cargo install --path .
    
  3. Navigate to the adapters directory

    cd adapters
    

Fish

  1. Install the fish shell prompt with fisher:

    fisher $PWD
    

oh-my-zsh

  1. Install the zsh theme:

    cp starship.zsh-theme ~/.oh-my-zsh/themes
    
  2. In ~/.zshrc, find the line with ZSH_THEME= and set it to

    ZSH_THEME="starship"
    

Contributing

To test locally run the below command:

cargo run -- $status