Skip to content

Commit

Permalink
docs: break installation instructions to collapsable sections (starsh…
Browse files Browse the repository at this point in the history
…ip#3448)

As the number of supported systems and shells has grown, we've had to hand-pick what installation methods would be the "blessed" ones to show on our README. This change changes that to include all installation methods, but hides them each into OS and shell-specific collapsed sections, as is done by the excellent ajeetdsouza/zoxide.
  • Loading branch information
matchai authored Jan 18, 2022
1 parent 412ceda commit 0da1787
Showing 1 changed file with 191 additions and 93 deletions.
284 changes: 191 additions & 93 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -169,148 +169,228 @@

- A [Nerd Font](https://www.nerdfonts.com/) installed and enabled in your terminal (for example, try the [Fira Code Nerd Font](https://www.nerdfonts.com/font-downloads)).

### Getting Started
### Step 1. Install Starship

**Note**: due to the proliferation of different platforms, only a subset of supported platforms are
shown below. Can't see yours? Have a look at the [extra platform instructions](https://starship.rs/installing/).
Select your operating system from the list below to view installation instructions:

1. Install the **starship** binary:
<details>
<summary>Android</summary>

#### Install Latest Version
Install Starship using any of the following package managers:

##### From prebuilt binary, with Shell:
| Repository | Instructions |
| ---------- | ---------------------- |
| [Termux] | `pkg install starship` |

```sh
sh -c "$(curl -fsSL https://starship.rs/install.sh)"
```
</details>

To update the Starship itself, rerun the above script. It will replace the current version without touching Starship's configuration.
<details>
<summary>BSD</summary>

**Note** - The defaults of the install script can be overridden see the built-in help.
Install Starship using any of the following package managers:

```sh
sh -c "$(curl -fsSL https://starship.rs/install.sh)" -- --help
```
| Distribution | Repository | Instructions |
| ------------ | --------------- | --------------------------------- |
| **_Any_** | **[crates.io]** | `cargo install starship --locked` |
| FreeBSD | [FreshPorts] | `pkg install starship` |
| NetBSD | [pkgsrc] | `pkgin install starship` |

#### Install via Package Manager
</details>

##### With [Homebrew](https://brew.sh/):
<details>
<summary>Linux</summary>

```sh
brew install starship
```
Install the latest version for your system:

##### With [Scoop](https://scoop.sh):
```sh
sh -c "$(curl -fsSL https://starship.rs/install.sh)"
```

```powershell
scoop install starship
```
Alternatively, install Starship using any of the following package managers:

2. Add the init script to your shell's config file:
| Distribution | Repository | Instructions |
| ------------------ | ----------------------- | ------------------------------------------------------------- |
| **_Any_** | **[crates.io]** | `cargo install starship --locked` |
| _Any_ | [conda-forge] | `conda install -c conda-forge starship` |
| _Any_ | [Linuxbrew] | `brew install starship` |
| Alpine Linux 3.13+ | [Alpine Linux Packages] | `apk add starship` |
| Arch Linux | [Arch Linux Community] | `pacman -S starship` |
| CentOS 7+ | [Copr] | `dnf copr enable atim/starship` <br /> `dnf install starship` |
| Fedora 31+ | [Fedora Packages] | `dnf install starship` |
| NixOS | [nixpkgs] | `nix-env -iA nixos.starship` |
| Gentoo | [Gentoo Packages] | `emerge app-shells/starship` |
| Manjaro | | `pacman -S starship` |
| NixOS | [nixpkgs] | `nix-env -iA nixpkgs.starship` |
| Void Linux | [Void Linux Packages] | `xbps-install -S starship` |

#### Bash
</details>

Add the following to the end of `~/.bashrc`:
<details>
<summary>macOS</summary>

```sh
# ~/.bashrc
Install the latest version for your system:

eval "$(starship init bash)"
```
```sh
sh -c "$(curl -fsSL https://starship.rs/install.sh)"
```

#### Fish
Alternatively, install Starship using any of the following package managers:

Add the following to the end of `~/.config/fish/config.fish`:
| Repository | Instructions |
| --------------- | --------------------------------------- |
| **[crates.io]** | `cargo install starship --locked` |
| [conda-forge] | `conda install -c conda-forge starship` |
| [Homebrew] | `brew install starship` |
| [MacPorts] | `port install starship` |

```sh
# ~/.config/fish/config.fish
</details>

starship init fish | source
```
<details>
<summary>Windows</summary>

#### Zsh
Install Starship using any of the following package managers:

Add the following to the end of `~/.zshrc`:
| Repository | Instructions |
| --------------- | --------------------------------------- |
| **[crates.io]** | `cargo install starship --locked` |
| [Chocolatey] | `choco install starship` |
| [conda-forge] | `conda install -c conda-forge starship` |
| [Scoop] | `scoop install starship` |

```sh
# ~/.zshrc
</details>

eval "$(starship init zsh)"
```
### Step 2. Setup your shell to use Starship

#### PowerShell
Configure your shell to initialize starship. Select yours from the list below:

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.
<details>
<summary>Bash</summary>

```powershell
Invoke-Expression (&starship init powershell)
```
Add the following to the end of `~/.bashrc`:

#### Ion
```sh
eval "$(starship init bash)"
```

Add the following to the end of `~/.config/ion/initrc`:
</details>

```sh
# ~/.config/ion/initrc
<details>
<summary>Cmd</summary>

eval $(starship init ion)
```
You need to use [Clink](https://chrisant996.github.io/clink/clink.html) (v1.2.30+) with Cmd.
Create a file at this path `%LocalAppData%\clink\starship.lua` with the following contents:

#### Elvish
```lua
load(io.popen('starship init cmd'):read("*a"))()
```

**Warning** Only elvish v0.17 or higher is supported.
Add the following to the end of `~/.elvish/rc.elv`:
</details>

```sh
# ~/.elvish/rc.elv
<details>
<summary>Elvish</summary>

eval (starship init elvish)
```
Add the following to the end of `~/.elvish/rc.elv`:

#### Tcsh
```sh
eval (starship init elvish)
```

Add the following to the end of `~/.tcshrc`:
Note: Only Elvish v0.17+ is supported

```sh
# ~/.tcshrc
</details>

eval `starship init tcsh`
```
<details>
<summary>Fish</summary>

#### Xonsh
Add the following to the end of `~/.config/fish/config.fish`:

Add the following to the end of `~/.xonshrc`:
```fish
starship init fish | source
```

```sh
# ~/.xonshrc
</details>

execx($(starship init xonsh))
```
<details>
<summary>Ion</summary>

#### Cmd
Add the following to the end of `~/.config/ion/initrc`:

You need to use [Clink](https://chrisant996.github.io/clink/clink.html) (v1.2.30+) with Cmd. Add the following to a file `starship.lua` and place this file in Clink scripts directory:
```sh
eval $(starship init ion)
```

```lua
-- starship.lua
</details>

load(io.popen('starship init cmd'):read("*a"))()
```
<details>
<summary>Nushell</summary>

#### Nushell
Add the following to the end of your Nushell configuration (find it by running `config path`):

**Warning** This will change in the future. Only nu version v0.33 or higher is supported.
Add the following to your nu config file. You can check the location of this
file by running `config path` in nu.
```toml
startup = [
"mkdir ~/.cache/starship",
"starship init nu | save ~/.cache/starship/init.nu",
"source ~/.cache/starship/init.nu"
]
prompt = "starship_prompt"
```

```toml
startup = [
"mkdir ~/.cache/starship",
"starship init nu | save ~/.cache/starship/init.nu",
"source ~/.cache/starship/init.nu"
]
prompt = "starship_prompt"
```
</details>

<details>
<summary>PowerShell</summary>

Add the following to the end of your PowerShell configuration (find it by running `$PROFILE`):

```powershell
Invoke-Expression (&starship init powershell)
```

</details>

<details>
<summary>Tcsh</summary>

Add the following to the end of `~/.tcshrc`:

```sh
eval `starship init tcsh`
```

</details>

<details>
<summary>Xonsh</summary>

Add the following to the end of `~/.xonshrc`:

```python
execx($(starship init xonsh))
```

</details>

<details>
<summary>Zsh</summary>

Add the following to the end of `~/.zshrc`:

```sh
eval "$(starship init zsh)"
```

</details>

### Step 3. Configure Starship

Start a new shell instance, and you should see your beautiful new shell prompt.
If you're happy with the defaults, enjoy!

If you're looking to further customize Starship:

- **[Configuration](https://starship.rs/config/)** – learn how to configure Starship to tweak your prompt to your liking

- **[Presets](https://starship.rs/presets/)** – get inspired by the pre-built configuration of others

## 🤝 Contributing

Expand All @@ -324,11 +404,11 @@ If you are interested in helping contribute to starship, please take a look at o

Please check out these previous works that helped inspire the creation of starship. 🙏

- **[denysdovhan/spaceship-prompt](https://github.com/denysdovhan/spaceship-prompt)** - A ZSH prompt for astronauts.
- **[denysdovhan/spaceship-prompt](https://github.com/denysdovhan/spaceship-prompt)** A ZSH prompt for astronauts.

- **[denysdovhan/robbyrussell-node](https://github.com/denysdovhan/robbyrussell-node)** - Cross-shell robbyrussell theme written in JavaScript.
- **[denysdovhan/robbyrussell-node](https://github.com/denysdovhan/robbyrussell-node)** Cross-shell robbyrussell theme written in JavaScript.

- **[reujab/silver](https://github.com/reujab/silver)** - A cross-shell customizable powerline-like prompt with icons.
- **[reujab/silver](https://github.com/reujab/silver)** A cross-shell customizable powerline-like prompt with icons.

<p align="center">
<br>
Expand All @@ -339,3 +419,21 @@ Please check out these previous works that helped inspire the creation of starsh

Copyright © 2019-present, [Starship Contributors](https://github.com/starship/starship/graphs/contributors).<br>
This project is [ISC](https://github.com/starship/starship/blob/master/LICENSE) licensed.

[alpine linux packages]: https://pkgs.alpinelinux.org/packages?name=starship
[arch linux community]: https://archlinux.org/packages/community/x86_64/starship
[chocolatey]: https://community.chocolatey.org/packages/starship
[conda-forge]: https://anaconda.org/conda-forge/starship
[copr]: https://copr.fedorainfracloud.org/coprs/atim/starship
[crates.io]: https://crates.io/crates/starship
[fedora packages]: https://src.fedoraproject.org/rpms/rust-starship
[freshports]: https://www.freshports.org/shells/starship
[gentoo packages]: https://packages.gentoo.org/packages/app-shells/starship
[linuxbrew]: https://formulae.brew.sh/formula/starship
[homebrew]: https://formulae.brew.sh/formula/starship
[macports]: https://ports.macports.org/port/starship
[nixpkgs]: https://github.com/NixOS/nixpkgs/blob/master/pkgs/tools/misc/starship/default.nix
[pkgsrc]: https://pkgsrc.se/shells/starship
[scoop]: https://github.com/ScoopInstaller/Main/blob/master/bucket/starship.json
[termux]: https://github.com/termux/termux-packages/tree/master/packages/starship
[void linux packages]: https://github.com/void-linux/void-packages/tree/master/srcpkgs/starship

0 comments on commit 0da1787

Please sign in to comment.