diff --git a/zsh/themes/deblan/deblan.zsh-theme b/zsh/themes/deblan/deblan.zsh-theme new file mode 100644 index 0000000..c4356f5 --- /dev/null +++ b/zsh/themes/deblan/deblan.zsh-theme @@ -0,0 +1,74 @@ +PS1= +RPROMPT= +ZSH_THEME_GIT_PROMPT_PREFIX="" +ZSH_THEME_GIT_PROMPT_SUFFIX="" +ZSH_THEME_GIT_PROMPT_SEPARATOR=" " +ZSH_THEME_DEBLAN_USE_GIT=${ZSH_THEME_DEBLAN_USE_GIT:-1} + +function deblan_precmd() { + local exit_code=$? + local datetime="%T" + local current_directory="%~" + local final_char="%%" + local is_privilegied=${(%):-%(\!.1.0)} + local prompt_width= + local prompt_content= + local term_width= + local rprompt_content= + + PS1= + RPROMPT= + + prompt_content="$(deblan_last_status)" + prompt_content="$prompt_content %{$fg_bold[cyan]%}${datetime}" + + if [ $is_privilegied -eq 1 ]; then + prompt_content="$prompt_content %{$fg_bold[red]%}%n@%m" + final_char="%{$fg_bold[red]%}#" + else + prompt_content="$prompt_content %{$fg_bold[white]%}%n@%m" + fi + + prompt_content="$prompt_content %{$fg_bold[white]%}$current_directory" + prompt_width="${#${(%):-$PS1}}" + term_width=$(tput cols) + + if [[ "$prompt_width*1.3" -gt $term_width ]]; then + prompt_content="$prompt_content +" + else + prompt_content="$prompt_content " + fi + + prompt_content="$prompt_content%{$fg_bold[yellow]%}$final_char" + prompt_content="$prompt_content %{$reset_color%}" + + if [ $ZSH_THEME_DEBLAN_USE_GIT -eq 1 ]; then + if (command -v git_super_status >/dev/null); then + rprompt_content='%{$fg[$NCOLOR]%} $(git_super_status)%{$reset_color%}' + fi + fi + + PS1="$prompt_content" + RPROMPT="$rprompt_content" +} + +function deblan_last_status() { + local value= + + if [ $exit_code -eq 0 ]; then + value="%{$fg_bold[green]%}●" + elif [ $exit_code -eq 1 ]; then + value="%{$fg_bold[red]%}●" + elif [ $exit_code -eq 130 ]; then + value="%{$fg_bold[grey]%}●" + else + value="%{$fg_bold[yellow]%}● [$exit_code]" + fi + + echo -n "$value" +} + +setopt prompt_subst +autoload -U add-zsh-hook +add-zsh-hook precmd deblan_precmd \ No newline at end of file