Last active
October 12, 2025 07:03
-
-
Save svcavallar/bc31f993aab5f9a5ac1090bd956ebcf4 to your computer and use it in GitHub Desktop.
Simple config for Starship prompt
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # https://starship.rs/ | |
| # This config file should be placed here: ~/.config/starship.toml | |
| # | |
| # Provides a nice starting point for a software engineer friendly prompt. | |
| # Get fonts from: https://www.nerdfonts.com/ | |
| # Required font: "FiraCode Nerd Font" | |
| # Add the following to .bashrc: | |
| # eval "$(starship init bash)" | |
| # | |
| # Get editor completions based on the config schema | |
| "$schema" = 'https://starship.rs/config-schema.json' | |
| # Place this line directly under the `command_timeout` entry at the top of the file | |
| palette = "catppuccin_macchiato" | |
| format = """ | |
| $username: \ | |
| $hostname\ | |
| $localip\ | |
| $shlvl\ | |
| $singularity\ | |
| $kubernetes\ | |
| $directory\ | |
| $vcsh\ | |
| $fossil_branch\ | |
| ${custom.git_server}\ | |
| $git_branch\ | |
| $git_commit\ | |
| $git_state\ | |
| $git_metrics\ | |
| $git_status\ | |
| $hg_branch\ | |
| $pijul_channel\ | |
| $docker_context\ | |
| $package\ | |
| $c\ | |
| $cmake\ | |
| $cobol\ | |
| $daml\ | |
| $dart\ | |
| $deno\ | |
| $dotnet\ | |
| $elixir\ | |
| $elm\ | |
| $erlang\ | |
| $fennel\ | |
| $golang\ | |
| $guix_shell\ | |
| $haskell\ | |
| $haxe\ | |
| $helm\ | |
| $java\ | |
| $julia\ | |
| $kotlin\ | |
| $gradle\ | |
| $lua\ | |
| $nim\ | |
| $nodejs\ | |
| $ocaml\ | |
| $opa\ | |
| $perl\ | |
| $php\ | |
| $pulumi\ | |
| $purescript\ | |
| $python\ | |
| $raku\ | |
| $rlang\ | |
| $red\ | |
| $ruby\ | |
| $rust\ | |
| $scala\ | |
| $swift\ | |
| $terraform\ | |
| $vlang\ | |
| $vagrant\ | |
| $zig\ | |
| $buf\ | |
| $nix_shell\ | |
| $conda\ | |
| $meson\ | |
| $spack\ | |
| $memory_usage\ | |
| $aws\ | |
| $gcloud\ | |
| $openstack\ | |
| $azure\ | |
| $env_var\ | |
| $crystal\ | |
| $custom\ | |
| $sudo\ | |
| $cmd_duration\ | |
| $line_break\ | |
| $jobs\ | |
| $battery\ | |
| $time\ | |
| $status\ | |
| $os\ | |
| $container\ | |
| $shell\ | |
| $character""" | |
| ################################################################################ | |
| ## Custom Commands | |
| ################################################################################ | |
| [custom.git_server] | |
| #disabled = true | |
| description = "Display symbol for remote Git server" | |
| command = """ | |
| GIT_REMOTE=$(command git ls-remote --get-url 2> /dev/null) | |
| if [[ "$GIT_REMOTE" =~ "github" ]]; then | |
| GIT_REMOTE_SYMBOL=" " | |
| elif [[ "$GIT_REMOTE" =~ "gitlab" ]]; then | |
| GIT_REMOTE_SYMBOL=" " | |
| elif [[ "$GIT_REMOTE" =~ "bitbucket" ]]; then | |
| GIT_REMOTE_SYMBOL=" " | |
| elif [[ "$GIT_REMOTE" =~ "git" ]]; then | |
| GIT_REMOTE_SYMBOL="" | |
| else | |
| GIT_REMOTE_SYMBOL=" " | |
| fi | |
| echo "$GIT_REMOTE_SYMBOL " | |
| """ | |
| when = 'git rev-parse --is-inside-work-tree 2> /dev/null' | |
| style = "white" | |
| format = '[$output]($style) ' | |
| [custom.git_scope] | |
| disabled = true | |
| command = ''' | |
| printf "%s (%s)" \ | |
| "$(if [ -n "$GIT_AUTHOR_EMAIL" ]; then echo "$GIT_AUTHOR_EMAIL"; else git config user.email; fi)" \ | |
| "$(if [ -n "$GIT_AUTHOR_NAME" ]; then echo "$GIT_AUTHOR_NAME"; else git config user.name; fi)" | |
| ''' | |
| description = 'The currently configured Git user.{email,name}' | |
| format = '$output ' | |
| style = 'blue bold' | |
| when = 'git rev-parse --is-inside-work-tree' | |
| [custom.git_last_commit] | |
| disabled = true | |
| description = "Display last commit hash and message" | |
| command = "git show -s --format='%h \"%s\"'" | |
| when = 'git rev-parse --is-inside-work-tree 2> /dev/null' | |
| style = "bright-yellow bold" | |
| format = "[$output]($style) " | |
| [custom.ssh_no_keys] | |
| disabled = true | |
| description = "SSH missing keys" | |
| when = "ssh-add -l | grep -q 'no identities'" | |
| command = "echo 🚫" | |
| format = '\[$symbol[$output]($style)\]' | |
| shell = ["bash", "--noprofile", "--norc"] | |
| symbol = "🔑" | |
| style = "bold fg:red" | |
| [custom.ssh_keys] | |
| disabled = true | |
| description = "SSH key count" | |
| when = "ssh-add -l | grep -v -q 'no identities'" | |
| command = "ssh-add -l | grep -v 'no identities' | wc -l" | |
| format = '\[$symbol[$output]($style)\]' | |
| shell = ["bash", "--noprofile", "--norc"] | |
| symbol = "🔑" | |
| style = "bold fg:green" | |
| ################################################################################ | |
| ## Shell | |
| ################################################################################ | |
| [battery] | |
| full_symbol = "🔋" | |
| charging_symbol = "🔌" | |
| discharging_symbol = "⚡" | |
| [[battery.display]] | |
| threshold = 30 | |
| style = "bold red" | |
| [cmd_duration] | |
| min_time = 10_000 # Show command duration over 10,000 milliseconds (=10 sec) | |
| format = '\[[⏱ $duration]($style)\]' | |
| style = 'yellow' | |
| [memory_usage] | |
| format = '\[$symbol[${ram}( | ${swap})]($style)\]' | |
| threshold = 70 | |
| style = "bold dimmed white" | |
| disabled = false | |
| [time] | |
| time_format = "%T" | |
| format = "🕙 $time($style) " | |
| style = "bright-white" | |
| disabled = true | |
| [username] | |
| format = '\[[$user]($style)\]' | |
| style_user = "bold dimmed blue" | |
| show_always = true | |
| disabled = false | |
| [hostname] | |
| ssh_only = false | |
| format = "<[$hostname]($style)>" | |
| trim_at = "-" | |
| style = "bold dimmed white" | |
| disabled = true | |
| [directory] | |
| truncation_length = 0 | |
| format = "[$path]($style)[$lock_symbol]($lock_style) " | |
| truncate_to_repo = false | |
| use_logical_path = false | |
| [directory.substitutions] | |
| "Documents" = " " | |
| "Downloads" = " " | |
| "Music" = " " | |
| "Pictures" = " " | |
| "Sync" = " " | |
| "Videos" = " " | |
| "~" = "/home/your_name" | |
| ################################################################################ | |
| ## GIT | |
| ################################################################################ | |
| [git_branch] | |
| format = '\[[$symbol$branch]($style)\]' | |
| symbol = ' ' | |
| style = "bold green" | |
| [git_state] | |
| format = '\[[\($state( $progress_current of $progress_total)\)]($style)\]' | |
| [git_status] | |
| conflicted = "⚔️ " | |
| ahead = "💨 ${count} " | |
| behind = "🐢 ${count} " | |
| diverged = "🔱 💨${ahead_count} 🐢${behind_count} " | |
| untracked = "🛤️ ${count} " | |
| stashed = "📦 " | |
| modified = "📝 ${count} " | |
| staged = "🗃️ ${count} " | |
| renamed = "📛 ${count} " | |
| deleted = "🗑️ ${count} " | |
| style = "bright-white" | |
| format = '\[ $all_status$ahead_behind\]' | |
| [git_commit] | |
| commit_hash_length = 8 | |
| style = "bold white" | |
| tag_symbol = '🔖 ' | |
| disabled = false | |
| ################################################################################ | |
| ## Languages & Tools | |
| ################################################################################ | |
| [aws] | |
| format = '\[[$symbol($profile)(\($region\))(\[$duration\])]($style)\]' | |
| symbol = ' ' | |
| style = "yellow" | |
| [bun] | |
| format = '\[[$symbol($version)]($style)\]' | |
| [c] | |
| format = '\[[$symbol($version(-$name))]($style)\]' | |
| [cmake] | |
| format = '\[[$symbol($version)]($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)\]' | |
| [fennel] | |
| format = '\[[$symbol($version)]($style)\]' | |
| [fossil_branch] | |
| format = '\[[$symbol$branch]($style)\]' | |
| [gcloud] | |
| format = '\[[$symbol$account(@$domain)(\($region\))]($style)\]' | |
| [golang] | |
| format = '\[[$symbol($version)]($style)\]' | |
| [gradle] | |
| format = '\[[$symbol($version)]($style)\]' | |
| [guix_shell] | |
| format = '\[[$symbol]($style)\]' | |
| [haskell] | |
| format = '\[[$symbol($version)]($style)\]' | |
| [haxe] | |
| 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)\]' | |
| [meson] | |
| format = '\[[$symbol$project]($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)\]' | |
| [opa] | |
| format = '\[[$symbol($version)]($style)\]' | |
| [openstack] | |
| format = '\[[$symbol$cloud(\($project\))]($style)\]' | |
| [os] | |
| format = '\[[$symbol]($style)\]' | |
| [package] | |
| format = '\[[$symbol$version]($style)\]' | |
| [perl] | |
| format = '\[[$symbol($version)]($style)\]' | |
| [php] | |
| format = '\[[$symbol($version)]($style)\]' | |
| [pijul_channel] | |
| format = '\[[$symbol$channel]($style)\]' | |
| [pulumi] | |
| format = '\[[$symbol$stack]($style)\]' | |
| [purescript] | |
| format = '\[[$symbol($version)]($style)\]' | |
| [python] | |
| format = '\[[${symbol}${pyenv_prefix}(${version})(\($virtualenv\))]($style)\]' | |
| style = "bold green" | |
| [raku] | |
| format = '\[[$symbol($version-$vm_version)]($style)\]' | |
| [red] | |
| format = '\[[$symbol($version)]($style)\]' | |
| [ruby] | |
| format = '\[[$symbol($version)]($style)\]' | |
| [rust] | |
| format = '\[[$symbol($version)]($style)\]' | |
| style = "bold green" | |
| [scala] | |
| format = '\[[$symbol($version)]($style)\]' | |
| [spack] | |
| format = '\[[$symbol$environment]($style)\]' | |
| [sudo] | |
| format = '\[[as $symbol]\]' | |
| [swift] | |
| format = '\[[$symbol($version)]($style)\]' | |
| [terraform] | |
| format = '\[[$symbol$workspace]($style)\]' | |
| [vagrant] | |
| format = '\[[$symbol($version)]($style)\]' | |
| [vlang] | |
| format = '\[[$symbol($version)]($style)\]' | |
| [zig] | |
| format = '\[[$symbol($version)]($style)\]' | |
| # Then, this `palettes` entry can go at the bottom of the TOML file | |
| # You may add additional palettes as desired. | |
| [palettes.catppuccin_macchiato] | |
| rosewater = "#f4dbd6" | |
| flamingo = "#f0c6c6" | |
| pink = "#f5bde6" | |
| mauve = "#c6a0f6" | |
| red = "#ed8796" | |
| maroon = "#ee99a0" | |
| peach = "#f5a97f" | |
| yellow = "#eed49f" | |
| green = "#a6da95" | |
| teal = "#8bd5ca" | |
| sky = "#91d7e3" | |
| sapphire = "#7dc4e4" | |
| blue = "#8aadf4" | |
| lavender = "#b7bdf8" | |
| text = "#cad3f5" | |
| subtext1 = "#b8c0e0" | |
| subtext0 = "#a5adcb" | |
| overlay2 = "#939ab7" | |
| overlay1 = "#8087a2" | |
| overlay0 = "#6e738d" | |
| surface2 = "#5b6078" | |
| surface1 = "#494d64" | |
| surface0 = "#363a4f" | |
| base = "#24273a" | |
| mantle = "#1e2030" | |
| crust = "#181926" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment