# ========================= # Colors # ========================= RED="#f1184c" BLUE="#3A86FF" GREEN="#33DD2D" YELLOW="#FFBB00" BG_DARK="#242424" BG_OS="#282c34" DOTNET="#0184bc" EXEC="#8800dd" autoload -Uz add-zsh-hook autoload -Uz vcs_info # ========================= # Git # ========================= zstyle ':vcs_info:git:*' formats '%b' zstyle ':vcs_info:git:*' actionformats '%b|%a' # ========================= # Execution time # ========================= typeset -g CMD_START_TIME CMD_EXEC_TIME preexec() { CMD_START_TIME=$EPOCHREALTIME } precmd() { if [[ -n "$CMD_START_TIME" ]]; then CMD_EXEC_TIME=$(( (${EPOCHREALTIME%.*} - ${CMD_START_TIME%.*}) * 1000 )) else CMD_EXEC_TIME=0 fi vcs_info } # ========================= # Prompt # ========================= setopt PROMPT_SUBST PROMPT='' # OS segment PROMPT+='%K{$BG_OS}%F{$BLUE} %(!.#.%m) %k%f' # Time PROMPT+='%K{$BG_DARK}%F{$YELLOW} %* %k%f' # Path PROMPT+='%K{$BG_DARK}%F{$GREEN}  %~ %k%f' # Git PROMPT+='${vcs_info_msg_0_:+%K{$BG_DARK}%F{$BLUE}  ${vcs_info_msg_0_} %k%f}' # Dotnet (static, shows only if dotnet exists) PROMPT+='$(command -v dotnet >/dev/null 2>&1 && echo "%K{$DOTNET}%F{white}  $(dotnet --version 2>/dev/null) %k%f")' # Execution time (>1ms) PROMPT+='$( [[ $CMD_EXEC_TIME -gt 1 ]] && echo "%K{$EXEC}%F{white}  ${CMD_EXEC_TIME}ms %k%f" )' # Status PROMPT+='%(?.%K{$GREEN}%F{$BG_DARK}  %k%f.%K{$RED}%F{$BG_DARK}  %k%f)' # New line PROMPT+=$'\n' PROMPT+='%F{$RED}➜ %f'