dotfiles/zsh/custom/themes/bira-nerd-2.zsh-theme
Mats Ricardo Nomedal a11473e308 initial dotfiles
2026-04-23 23:48:01 +02:00

87 lines
2.6 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# =======================================================
# bira-nerd.zsh-theme — custom prompt for JetBrainsMono Nerd Font
# =======================================================
# --- Git / VCS styling ---
ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[yellow]%} %{$reset_color%}"
ZSH_THEME_GIT_PROMPT_SUFFIX=""
ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[red]%} %{$reset_color%}"
ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[green]%} %{$reset_color%}"
ZSH_THEME_HG_PROMPT_PREFIX="$ZSH_THEME_GIT_PROMPT_PREFIX"
ZSH_THEME_HG_PROMPT_SUFFIX="$ZSH_THEME_GIT_PROMPT_SUFFIX"
ZSH_THEME_HG_PROMPT_DIRTY="$ZSH_THEME_GIT_PROMPT_DIRTY"
ZSH_THEME_HG_PROMPT_CLEAN="$ZSH_THEME_GIT_PROMPT_CLEAN"
# --- Timer hooks ---
preexec() {
CMD_START=$EPOCHREALTIME
}
precmd() {
# ---------------- LEFT SIDE ----------------
local user_host="%B%(!.%{$fg[red]%}.%{$fg[green]%}) %n@%m%{$reset_color%} "
local current_dir="%B%{$fg[blue]%} %~%{$reset_color%}"
local vcs_branch='$(git_prompt_info)$(hg_prompt_info)'
local left="╭─${user_host}${current_dir}${vcs_branch}"
# ---------------- RIGHT SIDE ----------------
# Python venv name
local venv_right=""
if [[ -n "$VIRTUAL_ENV" ]]; then
venv_right="%F{magenta}(${VIRTUAL_ENV:t})%f "
fi
# Time
local time_str="%F{242}%D{%H:%M:%S}%f"
# Duration (time taken for last command)
local dur_str=""
if [[ -n "$CMD_START" ]]; then
local diff=$(( EPOCHREALTIME - CMD_START ))
local secs=${diff%.*}
local ms=${diff#*.}
if (( secs > 0 )); then
dur_str="%F{33}${secs}s%f"
else
dur_str="%F{33}${ms:0:2}ms%f"
fi
else
dur_str="%F{33}0ms%f"
fi
# Exit code (only visible if non-zero)
local rc_str="%(?..%F{red}%?↵%f)"
local right="${venv_right}${time_str} ${dur_str} ${rc_str}"
# --- Manual right alignment on FIRST line ---
local plain_left=${left//\%\{*%\}/}
local plain_right=${right//\%\{*%\}/}
local pad=$(( COLUMNS - ${#plain_left} - ${#plain_right} ))
(( pad < 1 )) && pad=1
local spaces="${(l:${pad}:: :)}"
# Two-line layout:
# Line 1 = left + right
# Line 2 = command symbol
PROMPT="${left}${spaces}${right}\n
╰─>%B%(!.#.$)%b "
RPROMPT="FITTE"
CMD_START=""
}
__RPROMPT='$(vi_mode_prompt_info)%{$(echotc UP 1)%}$(_git_time_since_commit) $(git_prompt_status) ${_return_status}%{$(echotc DO 1)%}'
if [[ -z $RPROMPT ]]; then
RPROMPT=$__RPROMPT
else
RPROMPT="${RPROMPT} ${__RPROMPT}"
fi
# --- Optional stylistic bits ---
ZSH_THEME_RUBY_PROMPT_PREFIX="%{$fg[red]%}"
ZSH_THEME_RUBY_PROMPT_SUFFIX=" %{$reset_color%}"
ZSH_THEME_VIRTUAL_ENV_PROMPT_PREFIX="%{$fg[green]%}"
ZSH_THEME_VIRTUAL_ENV_PROMPT_SUFFIX=" %{$reset_color%}"