# starship.toml — Starship cross-shell prompt configuration # # Starship reads this file (by default at ~/.config/starship.toml) and renders # the shell prompt. This config implements a powerline-style segmented prompt # using the CyberQueer color palette: # # #f50505 — Red Hi-vis (segment borders, username background) # #E40046 — Hot Pink Accent (directory segment background) # #5018dd — Electric Violet (git/language/time segment background) # # Prompt layout (left to right on one line): # [red border] [OS icon + username] [pink separator] [path] # [violet separator] [git branch + status] [language versions (if detected)] # [red separator] [docker context] [violet separator] [time] # # The format string uses Starship's powerline "arrow" glyphs () as segment # separators: each changes both the foreground and background color to create # the filled-triangle transition between segments. # # ─── Top-level format ────────────────────────────────────────────────────────── # Commented-out alternative that included a second line with '╚═' continuation. # Currently using the single-line version below for a compact prompt. #format = "[](#f50505)$os$username[](bg:#E40046 fg:#f50505)$directory[](fg:#E40046 bg:#5018dd)$git_branch$git_status[](fg:#5018dd bg:#5018dd)$c$elixir$elm$golang$gradle$haskell$java$julia$nodejs$nim$rust$scala[](fg:#5018dd bg:#f50505)$docker_context[](fg:#f50505 bg:#5018dd)$time[ ](fg:#5018dd)\n [╚═](#f50505)" # Active single-line format. # Each segment is a bracketed block with inline styling: [content](style). # The bare characters are powerline separator glyphs that create colored triangles. format = "[](#f50505)$os$username[](bg:#E40046 fg:#f50505)$directory[](fg:#E40046 bg:#5018dd)$git_branch$git_status[](fg:#5018dd bg:#5018dd)$c$elixir$elm$golang$gradle$haskell$java$julia$nodejs$nim$rust$scala[](fg:#5018dd bg:#f50505)$docker_context[](fg:#f50505 bg:#5018dd)$time[ ](fg:#5018dd)" # Another commented alternative — kept for reference when experimenting with layout. #format = "[](#f50505)$os$username[](bg:#E40046 fg:#f50505)$directory[](fg:#E40046 bg:#5018dd)$git_branch$git_status[](fg:#5018dd bg:#5018dd)$c$elixir$elm$golang$gradle$haskell$java$julia$nodejs$nim$rust$scala[](fg:#5018dd bg:#f50505)$docker_context[](fg:#f50505 bg:#5018dd)$time[ ](fg:#5018dd)" # continuation_prompt: shown on the second and subsequent lines of a multi-line command. # The glyphs create a mini powerline row indicating the shell is waiting for more input. continuation_prompt = "\n [](#E40046 )[](fg:#E40046 bg:#5018dd)[](#5018dd)" # Disable the blank line at the start of the prompt # add_newline = false # You can also replace your username with a neat symbol like or disable this # and use the os module below # ─── Username segment ────────────────────────────────────────────────────────── # Always shows the current username — useful as a reminder when switching accounts. # Sits on the red (#f50505) segment immediately after the OS icon. [username] show_always = true # Show even when not in SSH or root context style_user = "bg:#f50505" # Regular user: red background (matches the border color) style_root = "bg:#f50505" # Root: same red background (no color distinction by design) format = "[$user ]($style)" # Trailing space before the next separator glyph disabled = false # An alternative to the username module which displays a symbol that # represents the current operating system # ─── OS icon segment ─────────────────────────────────────────────────────────── # Displays a Nerd Font icon for the detected OS (e.g., for Arch Linux). # Placed before the username on the same red background segment. [os] style = "bg:#f50505" disabled = false # Disabled by default # ─── Directory segment ───────────────────────────────────────────────────────── # Shows the current path on a hot-pink (#E40046) background. [directory] style = "bg:#E40046" format = "[ $path ]($style)" truncation_length = 3 # Show at most 3 path components before truncating truncation_symbol = "…/" # Prefix shown when the path is truncated # Here is how you can shorten some long paths by text replacement # similar to mapped_locations in Oh My Posh: # ─── Directory substitutions ─────────────────────────────────────────────────── # Replaces long directory names with compact Nerd Font icons for common folders. # This keeps the prompt short without losing context. [directory.substitutions] "Documents" = "󰈙 " # Document/paper icon "Downloads" = " " # Download/arrow icon "Music" = " " # Music note icon (English) "music" = " " # lowercase variant "Musik" = " " # German 'Musik' "musik" = " " # German lowercase "Pictures" = " " # Image/photo icon # Keep in mind that the order matters. For example: # "Important Documents" = " 󰈙 " # will not be replaced, because "Documents" was already substituted before. # So either put "Important Documents" before "Documents" or use the substituted version: # "Important 󰈙 " = " 󰈙 " # ─── Language / tool version segments ───────────────────────────────────────── # Each of these segments auto-detects project files and shows the active # language/runtime version. All share the violet (#5018dd) background to form # a unified "toolchain" segment block. They only appear when relevant files # are detected in the current or parent directories (e.g., *.c for C, go.mod for Go). [c] symbol = " " # C language Nerd Font icon style = "bg:#5018dd" format = '[ $symbol ($version) ]($style)' [docker_context] symbol = " " # Docker whale icon style = "bg:#f50505 fg:#5018dd" # Stands out: red background, violet text — highlights active Docker context format = '[ $symbol $context ]($style)' [elixir] symbol = " " # Elixir drop icon style = "bg:#5018dd" format = '[ $symbol ($version) ]($style)' [elm] symbol = " " # Elm triangle icon style = "bg:#5018dd" format = '[ $symbol ($version) ]($style)' # ─── Git segments ────────────────────────────────────────────────────────────── [git_branch] symbol = "" # Git branch icon (nerd font) style = "bg:#5018dd" format = '[ $symbol $branch ]($style)' # Shows current branch name [git_status] style = "bg:#5018dd" # $all_status: compact status codes (M=modified, ?=untracked, !=staged, etc.) # $ahead_behind: shows ↑N/↓N when ahead/behind the remote branch format = '[$all_status $ahead_behind]($style)' [golang] symbol = " " # Go gopher icon style = "bg:#5018dd" format = '[ $symbol ($version) ]($style)' [gradle] style = "bg:#5018dd" format = '[ $symbol ($version) ]($style)' [haskell] symbol = " " # Haskell lambda icon style = "bg:#5018dd" format = '[ $symbol ($version) ]($style)' [java] symbol = " " # Java coffee cup icon style = "bg:#5018dd" format = '[ $symbol ($version) ]($style)' [julia] symbol = " " # Julia dots icon style = "bg:#5018dd" format = '[ $symbol ($version) ]($style)' [nodejs] symbol = "" # Node.js hexagon icon style = "bg:#5018dd" format = '[ $symbol ($version) ]($style)' [nim] symbol = "󰆥 " # Nim crown icon style = "bg:#5018dd" format = '[ $symbol ($version) ]($style)' [rust] symbol = "" # Rust gear icon style = "bg:#5018dd" format = '[ $symbol ($version) ]($style)' [scala] symbol = " " # Scala 'S' icon style = "bg:#5018dd" format = '[ $symbol ($version) ]($style)' # ─── Time segment ────────────────────────────────────────────────────────────── # Always-on clock at the right end of the prompt. # Helps track how long commands take and time awareness during deep work sessions. [time] disabled = false time_format = "%R" # Hour:Minute Format (24h, e.g. "14:35") — no seconds to save space style = "bg:#5018dd" format = "[ $time ]($style)" # Clock icon + time on violet background # ─── Symbol-only overrides ───────────────────────────────────────────────────── # The following sections only override the icon symbol for modules that aren't # actively displayed in the main format string. Starship uses these symbols # in the `help` output and when the module is added to format later. [aws] symbol = " " [buf] symbol = " " [cmake] symbol = " " [conda] symbol = " " [crystal] symbol = " " [dart] symbol = " " [fennel] symbol = " " [fossil_branch] symbol = " " [git_commit] tag_symbol = ' ' # Tag icon shown next to tagged commits [guix_shell] symbol = " " [haxe] symbol = " " [hg_branch] symbol = " " # Mercurial branch icon [hostname] ssh_symbol = " " # Server/rack icon shown when connected via SSH [kotlin] symbol = " " [lua] symbol = " " [memory_usage] symbol = "󰍛 " # RAM chip icon [meson] symbol = "󰔷 " # Build system icon [nix_shell] symbol = " " # Snowflake icon for Nix environments [ocaml] symbol = " " # ─── OS icon symbol table ────────────────────────────────────────────────────── # Maps detected OS names to their Nerd Font icons. # These are displayed by the [os] module defined above. # All icons require a Nerd Font (or compatible patched font) to render correctly. [os.symbols] Alpaquita = " " Alpine = " " AlmaLinux = " " Amazon = " " Android = " " Arch = " " # Arch Linux pacman-ghost icon Artix = " " CentOS = " " Debian = " " DragonFly = " " Emscripten = " " EndeavourOS = " " Fedora = " " FreeBSD = " " Garuda = "󰛓 " Gentoo = " " HardenedBSD = "󰞌 " Illumos = "󰈸 " Kali = " " Linux = " " # Generic Linux penguin icon Mabox = " " Macos = " " # Apple icon Manjaro = " " Mariner = " " MidnightBSD = " " Mint = " " NetBSD = " " NixOS = " " OpenBSD = "󰈺 " openSUSE = " " OracleLinux = "󰌷 " Pop = " " Raspbian = " " Redhat = " " RedHatEnterprise = " " RockyLinux = " " Redox = "󰀘 " Solus = "󰠳 " SUSE = " " Ubuntu = " " Unknown = " " Void = " " Windows = "󰍲 " # Windows logo icon (for WSL sessions) [package] symbol = "󰏗 " # Package/box icon for package.json / Cargo.toml version display [perl] symbol = " " [php] symbol = " " [pijul_channel] symbol = " " [python] symbol = " " # Python snake icon [rlang] symbol = "󰟔 " [ruby] symbol = " " [swift] symbol = " " [zig] symbol = " "