71 lines
1.5 KiB
Bash
71 lines
1.5 KiB
Bash
# =========================
|
|
# 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'
|