Dotfiles/starship.toml

327 lines
11 KiB
TOML

# 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 = " "