A cool ZSH theme inspired by powerline and agnoster's Theme - https://gist.github.com/3712874!
-
-
Save niklas-heer/4953674 to your computer and use it in GitHub Desktop.
This file contains 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
# Modified by: Niklas Heer | |
# Name: nh's theme | |
# Date: 14.02.2013 | |
# version: 1.0.0 | |
# | |
# Original Theme by: | |
# agnoster's Theme - https://gist.github.com/3712874 | |
# A Powerline-inspired theme for ZSH | |
CURRENT_BG='NONE' | |
SEGMENT_SEPARATOR='⮀' | |
REVERSE_SEGMENT_SEPARATOR='\u25C4' | |
TIME_SEGMENT_SEPARATOR=' ' | |
# Begin a segment | |
# Takes two arguments, background and foreground. Both can be omitted, | |
# rendering default background/foreground. | |
prompt_segment() { | |
local bg fg | |
[[ -n $1 ]] && bg="%K{$1}" || bg="%k" | |
[[ -n $2 ]] && fg="%F{$2}" || fg="%f" | |
if [[ $CURRENT_BG != 'NONE' && $1 != $CURRENT_BG ]]; then | |
echo -n " %{$bg%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR%{$fg%} " | |
else | |
echo -n "%{$bg%}%{$fg%} " | |
fi | |
CURRENT_BG=$1 | |
[[ -n $3 ]] && echo -n $3 | |
} | |
# End the prompt, closing any open segments | |
prompt_end() { | |
if [[ -n $CURRENT_BG ]]; then | |
echo -n " %{%k%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR" | |
else | |
echo -n "%{%k%}" | |
fi | |
echo -n "%{%f%}" | |
CURRENT_BG='' | |
} | |
### Prompt components | |
# Each component will draw itself, and hide itself if no information needs to be shown | |
# Context: user@hostname (who am I and where am I) | |
prompt_context() { | |
local user=`whoami` | |
if [[ "$user" = "$DEFAULT_USER" || "$user" = "$SSH_CLIENT" ]]; then | |
prompt_segment green black "$user" | |
else | |
prompt_segment red white "$user" | |
fi | |
} | |
# Git: branch/detached head, dirty status | |
prompt_git() { | |
local ref dirty | |
if $(git rev-parse --is-inside-work-tree >/dev/null 2>&1); then | |
ZSH_THEME_GIT_PROMPT_DIRTY='±' | |
dirty=$(parse_git_dirty) | |
ref=$(git symbolic-ref HEAD 2> /dev/null) || ref="➦ $(git show-ref --head -s --abbrev |head -n1 2> /dev/null)" | |
if [[ -n $dirty ]]; then | |
prompt_segment red white | |
else | |
prompt_segment green black | |
fi | |
echo -n "${ref/refs\/heads\//⭠ }$dirty" | |
fi | |
} | |
# Dir: current working directory | |
prompt_dir() { | |
prompt_segment blue black '%~' | |
} | |
# Status:⚡⚡ | |
# - was there an error | |
# - am I root | |
# - are there background jobs? | |
prompt_status() { | |
local symbols | |
symbols=() | |
[[ $RETVAL -ne 0 ]] && symbols+="%{%F{red}%}✘" | |
[[ $UID -eq 0 ]] && symbols+="%{%F{yeallow}%}⚡" | |
[[ $(jobs -l | wc -l) -gt 0 ]] && symbols+="%{%F{cyan}%}⚙" | |
[[ -n "$symbols" ]] && prompt_segment black black "$symbols" | |
} | |
## Main prompt | |
build_prompt() { | |
RETVAL=$? | |
prompt_segment 21 white "%D{%H:%M:%S}" | |
prompt_status | |
prompt_context | |
prompt_dir | |
prompt_git | |
prompt_end | |
} | |
# Niklas Heer custom functions | |
function node_version() { | |
echo `node -v` | |
} | |
function java_version() { | |
echo "$(java -version 2>&1 | grep "java version" | awk '{print $3}' | tr -d \") " | |
} | |
# End the prompt, closing any open segments | |
info_end() { | |
if [[ -n $CURRENT_BG ]]; then | |
echo -n "%{%F{$CURRENT_BG}%}$REVERSE_SEGMENT_SEPARATOR" | |
else | |
echo -n "%{%k%}" | |
fi | |
echo -n "%{%f%}" | |
CURRENT_BG='' | |
} | |
info_promt() { | |
local bg fg | |
[[ -n $1 ]] && bg="%K{$1}" || bg="%k" | |
[[ -n $2 ]] && fg="%F{$2}" || fg="%f" | |
if [[ $CURRENT_BG != 'NONE' && $1 != $CURRENT_BG ]]; then | |
echo -n "%{%F{$1}%}$REVERSE_SEGMENT_SEPARATOR%{$bg%F{$CURRENT_BG}%}%{$fg%} " | |
else | |
echo -n "%{%F{$1}%}$REVERSE_SEGMENT_SEPARATOR%{$bg%}%{$fg%} " | |
fi | |
CURRENT_BG=$1 | |
[[ -n $3 ]] && echo -n $3 | |
} | |
time_promt() { | |
local bg fg | |
[[ -n $1 ]] && bg="%K{$1}" || bg="%k" | |
[[ -n $2 ]] && fg="%F{$2}" || fg="%f" | |
if [[ $CURRENT_BG != 'NONE' && $1 != $CURRENT_BG ]]; then | |
echo -n "%{%F{$1}%}$TIME_SEGMENT_SEPARATOR%{$bg%F{$CURRENT_BG}%}%{$fg%} " | |
else | |
echo -n " %{%F{$1}%}$TIME_SEGMENT_SEPARATOR%{$bg%}%{$fg%} " | |
fi | |
CURRENT_BG=$1 | |
[[ -n $3 ]] && echo -n $3 | |
} | |
info_time() { | |
#time_promt blue white "%D{%d.%m} " | |
} | |
build_info() { | |
info_time | |
echo -n "%{%K{white}%}%{%F{black}%}$SEGMENT_SEPARATOR%" | |
time_promt white black "java: $(java_version)" | |
info_promt 240 white "node: $(node_version)" | |
info_end | |
} | |
PROMPT='$(build_prompt) ' | |
#RPROMPT=$'\u2b82'"java: $(java_version)%{%f%k%b%}"$'\u2b82'"node: %{%F{blue}%}$(node_version)%{%f%k%b%}" | |
RPROMPT='%{%f%b%k%}$(build_info)' | |
#RPROMPT=$'\u2b82'"%f%k$POWERLINE_COLOR_BG_GRAY$POWERLINE_COLOR_FG_WHITE $POWERLINE_RIGHT_A %f%k" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment