Starship je cross-shell prompt
napsaný v Rustu co vám obohatí váš shell. Jak to může vypadat se dozvíte hned na úvodní stránce projektu.
The minimal, blazing-fast, and infinitely customizable prompt for any shell!
Starship je multiplatformní a multi-shellový, ale tady se budeme zabývat instalací pro cmd
na windows
.
Samotnou instalaci můžete provést několika způsoby. Prvním způsobem je stažení klasického msi
čka z githubu starshipu a normálně ho nainstalovat. Nebo můžete být víc cool
a použít Winget. Winget je pokus Microsoftu o "balíčkovací systém" přes příkazovou řádku. Někdo by si mohl říct že to bude jako Debianí apt
nebo Fedorácký yum
. Ne. Jediné co to udělá, je to, že stáhne msi
soubor a spustí ho. 🙂
winget install --id Starship.Starship
Po úspěšné instalaci je nutné stáhnout Clink. Jelikož cmd
je trochu prehistorie, potřebuje obohatit ještě o trošku více. Clink přinese do cmd
opravdové doplňování a historii.
Clink combines the native Windows shell cmd.exe with the powerful command line editing features of the GNU Readline library, which provides rich completion, history, and line-editing capabilities. Readline is best known for its use in the Unix shell Bash, the standard shell for Mac OS X and many Linux distributions.
Ze stránek projektu stáhněte a nainstalujte poslední verzi Clinku.
Jak tohle budete mít, tak je potřeba vytvořit soubor starship.lua
, který umístíte do %LocalAppData%\clink\
. Obsahem souboru bude následující:
load(io.popen('starship init cmd'):read("*a"))()
Teď když spustíte čerstvé cmd
, tak uvidíte následující.
Nebo něco takového. (v prvním případě je to přes Microsoft Terminál, v druhém případě je to čisté cmd
)
Tak to už vám běží Starship. 🙂 Ale furt to nevypadá tak pěkně jako na stránkách Starshipu.
V první řadě je potřeba doinstalovat font a to Nerd Font.
Tady to bude trochu divočejší. Potřebujeme vybrat font, který bude umět zobrazení různých symbolů jako vidíme na obrázku výše.
Pokud používám Windows Terminal aplikaci, nainstaloval jsem a mám nastavený font Caskaydia Cove Nerd Font. Respektive CaskaydiaCove Nerd Font Mono
.
Blbé je, že klasické cmd
ho neumí použít. Pro tento případ jsem použil font 3270 Nerd Font a v cmd
ho nastavil. (ttf
soubory)
Potvrďte, změní se font konzole. Zároveň se už korektně zobrazí základní preset Starshipu a uvidíte zelenou tučnou špidlatou závorku evokující šipku doprava. 🙂
Tohle ale ještě furt není to co chceme. Teď ještě potřebujeme nějaký pěkný preset. Můžeme použít Bracketed Segments.
Instalaci provedeme přes cmd
.
starship preset bracketed-segments > %userprofile%/.config/starship.toml
Spusťte nové cmd
a když půjdete někam, kde může něco zajímavého říct, tak to zobrazí v nainstalovaném presetu. V mém případě jsem spustil cmd
v Java Scriptovém projejktu.
Pro klasické cmd
:
Pro cmd
přes Windows Terminal
:
Příkazová řádka mě informuje, že se nacházím ve větvi master
a verze nodejs
je 16. Co vám bude kontextově napovídáno je nakonfigurováno ve starship.toml
, který jsme vytvářeli výše.
[aws]
format = '\[[$symbol($profile)(\($region\))(\[$duration\])]($style)\]'
[bun]
format = '\[[$symbol($version)]($style)\]'
[c]
format = '\[[$symbol($version(-$name))]($style)\]'
[cmake]
format = '\[[$symbol($version)]($style)\]'
[cmd_duration]
format = '\[[⏱ $duration]($style)\]'
[cobol]
format = '\[[$symbol($version)]($style)\]'
[conda]
format = '\[[$symbol$environment]($style)\]'
[crystal]
format = '\[[$symbol($version)]($style)\]'
[daml]
format = '\[[$symbol($version)]($style)\]'
[dart]
format = '\[[$symbol($version)]($style)\]'
[deno]
format = '\[[$symbol($version)]($style)\]'
[docker_context]
format = '\[[$symbol$context]($style)\]'
[dotnet]
format = '\[[$symbol($version)(? $tfm)]($style)\]'
[elixir]
format = '\[[$symbol($version \(OTP $otp_version\))]($style)\]'
[elm]
format = '\[[$symbol($version)]($style)\]'
[erlang]
format = '\[[$symbol($version)]($style)\]'
[gcloud]
format = '\[[$symbol$account(@$domain)(\($region\))]($style)\]'
[git_branch]
format = '\[[$symbol$branch]($style)\]'
[git_status]
format = '([\[$all_status$ahead_behind\]]($style))'
[golang]
format = '\[[$symbol($version)]($style)\]'
[haskell]
format = '\[[$symbol($version)]($style)\]'
[helm]
format = '\[[$symbol($version)]($style)\]'
[hg_branch]
format = '\[[$symbol$branch]($style)\]'
[java]
format = '\[[$symbol($version)]($style)\]'
[julia]
format = '\[[$symbol($version)]($style)\]'
[kotlin]
format = '\[[$symbol($version)]($style)\]'
[kubernetes]
format = '\[[$symbol$context( \($namespace\))]($style)\]'
[lua]
format = '\[[$symbol($version)]($style)\]'
[memory_usage]
format = '\[$symbol[$ram( | $swap)]($style)\]'
[nim]
format = '\[[$symbol($version)]($style)\]'
[nix_shell]
format = '\[[$symbol$state( \($name\))]($style)\]'
[nodejs]
format = '\[[$symbol($version)]($style)\]'
[ocaml]
format = '\[[$symbol($version)(\($switch_indicator$switch_name\))]($style)\]'
[openstack]
format = '\[[$symbol$cloud(\($project\))]($style)\]'
[package]
format = '\[[$symbol$version]($style)\]'
[pulumi]
format = '\[[$symbol$stack]($style)\]'
[purescript]
format = '\[[$symbol($version)]($style)\]'
[python]
format = '\[[${symbol}${pyenv_prefix}(${version})(\($virtualenv\))]($style)\]'
[raku]
format = '\[[$symbol($version-$vm_version)]($style)\]'
[red]
format = '\[[$symbol($version)]($style)\]'
[ruby]
format = '\[[$symbol($version)]($style)\]'
[rust]
format = '\[[$symbol($version)]($style)\]'
[scala]
format = '\[[$symbol($version)]($style)\]'
[spack]
format = '\[[$symbol$environment]($style)\]'
[sudo]
format = '\[[as $symbol]\]'
[swift]
format = '\[[$symbol($version)]($style)\]'
[terraform]
format = '\[[$symbol$workspace]($style)\]'
[time]
format = '\[[$time]($style)\]'
[username]
format = '\[[$user]($style)\]'
[vagrant]
format = '\[[$symbol($version)]($style)\]'
[vlang]
format = '\[[$symbol($version)]($style)\]'
[zig]
format = '\[[$symbol($version)]($style)\]'
Tak a teď vám funguje Starship na Windows. 🙂
Pokud používáte PowerShell nemusíte instalovat Clink. Fonty pořešíte úplně stejně. V PowerShellu si vypíšete, kde se má nacházet konfigurační soubor.
echo $PROFILE
Dostanete něco ve smyslu ...\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
. Pokud soubor neexistuje, tak ho vytvořte a do něj přidejte a uložte:
Invoke-Expression (&starship init powershell)
Spusťte nový PowerShell. Možná na vás vyskočí chyba running scripts is disabled on this system
. To bude asi nějaká bezpečnost nebo co. 🙂 Abychom se toho zbavili, musíme pustit PowerShell jako správce a spustit následující příkaz:
Set-ExecutionPolicy Unrestricted
Jak moc je to "velká bezpečnost díra" si musí každý zhodnotit sám.
Restartujeme PowerShell. Pokud už máme nastavené odpovídající písmo a jsme například v nodejs
projektu, uvidíme opět kontextové informace.