Last active
February 6, 2021 04:45
-
-
Save rafaelmaiach/93fdf560bae0c9621d0a0e65ff6dd6c8 to your computer and use it in GitHub Desktop.
My Custom ZSH Theme
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Zeta theme for oh-my-zsh | |
# Tested on Linux, Unix and Windows under ANSI colors. | |
# Copyright: Skyler Lee, 2015 | |
# Colors: black|red|blue|green|yellow|magenta|cyan|white | |
local black=$fg[black] | |
local red=$fg[red] | |
local blue=$fg[blue] | |
local green=$fg[green] | |
local yellow=$fg[yellow] | |
local magenta=$fg[magenta] | |
local cyan=$fg[cyan] | |
local white=$fg[white] | |
local black_bold=$fg_bold[black] | |
local red_bold=$fg_bold[red] | |
local blue_bold=$fg_bold[blue] | |
local green_bold=$fg_bold[green] | |
local yellow_bold=$fg_bold[yellow] | |
local magenta_bold=$fg_bold[magenta] | |
local cyan_bold=$fg_bold[cyan] | |
local white_bold=$fg_bold[white] | |
local highlight_bg=$bg[red] | |
local zeta='>' | |
# User name. | |
function get_usr_name { | |
local name="%n" | |
if [[ "$USER" == 'root' ]]; then | |
name="%{$highlight_bg%}%{$white_bold%}$name%{$reset_color%}" | |
fi | |
echo $name | |
} | |
# Directory info. | |
function get_current_dir { | |
echo "${PWD/#$HOME/~}" | |
} | |
# Git info. | |
ZSH_THEME_GIT_PROMPT_PREFIX="%{$blue_bold%}" | |
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" | |
ZSH_THEME_GIT_PROMPT_CLEAN="%{$green_bold%} ✔ " | |
ZSH_THEME_GIT_PROMPT_DIRTY="%{$red_bold%} ✘ " | |
# Git status. | |
ZSH_THEME_GIT_PROMPT_ADDED="%{$green_bold%}+" | |
ZSH_THEME_GIT_PROMPT_DELETED="%{$red_bold%}-" | |
ZSH_THEME_GIT_PROMPT_MODIFIED="%{$magenta_bold%}*" | |
ZSH_THEME_GIT_PROMPT_RENAMED="%{$blue_bold%}>" | |
ZSH_THEME_GIT_PROMPT_UNMERGED="%{$cyan_bold%}=" | |
ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$yellow_bold%}?" | |
# Git sha. | |
ZSH_THEME_GIT_PROMPT_SHA_BEFORE="[%{$yellow%}" | |
ZSH_THEME_GIT_PROMPT_SHA_AFTER="%{$reset_color%}]" | |
function get_git_prompt { | |
if [[ -n $(git rev-parse --is-inside-work-tree 2>/dev/null) ]]; then | |
local git_status="$(git_prompt_status)" | |
if [[ -n $git_status ]]; then | |
git_status="[$git_status%{$reset_color%}]" | |
fi | |
local git_prompt=" <$(git_prompt_info)$git_status>" | |
echo $git_prompt | |
fi | |
} | |
function get_time_stamp { | |
echo "%*" | |
} | |
function get_space { | |
local str=$1$2 | |
local zero='%([BSUbfksu]|([FB]|){*})' | |
local len=${#${(S%%)str//$~zero/}} | |
local size=$(( $COLUMNS - $len - 1 )) | |
local space="" | |
while [[ $size -gt 0 ]]; do | |
space="$space " | |
let size=$size-1 | |
done | |
echo $space | |
} | |
# Prompt: # USER@MACHINE: DIRECTORY <BRANCH [STATUS]> | |
# > command | |
function print_prompt_head { | |
local left_prompt="\ | |
%{$blue%}# \ | |
%{$green_bold%}$(get_usr_name)\ | |
%{$blue%}:\ | |
%{$yellow_bold%}$(get_current_dir)%{$reset_color%}\ | |
$(get_git_prompt) " | |
print -rP "$left_prompt$(get_space $left_prompt)" | |
} | |
function get_prompt_indicator { | |
if [[ $? -eq 0 ]]; then | |
echo "%{$fg[green]%}$(virtualenv_prompt_info)%{$reset_color%}%{$magenta_bold%}$zeta %{$reset_color%}" | |
else | |
echo "%{$fg[green]%}$(virtualenv_prompt_info)%{$reset_color%}%{$red_bold%}$zeta %{$reset_color%}" | |
fi | |
} | |
autoload -U add-zsh-hook | |
add-zsh-hook precmd print_prompt_head | |
setopt prompt_subst | |
PROMPT='$(get_prompt_indicator)' | |
RPROMPT='$(git_prompt_short_sha) ' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment