ohmyzsh/themes/north.zsh-theme
Adam Hitchcock 7285d78f1f added my own theme
added my theme

bail on linux

bail on linux

speed

fix bug

added my theme

no git stat done, too slow

added color to stderr

minor changes to clolor for linux

killed red

git stuff is back!

coproc for red stderr

battery works!

works on linux

theme updates

tweaks
2012-07-17 10:26:20 -07:00

151 lines
4.7 KiB
Bash
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

autoload -U promptinit
promptinit
autoload -U colors; colors
case $USER in
'root')
export PS1="$PS1_NAME$PS1_TIME$PS1_PATH# "
local user_prompt="%B$fg[red]%b%% "
;;
*)
local user_prompt="%B$fg[magenta]%b%% "
;;
esac
local HOST_STRING="$fg[green]`hostname`"
local blue_ob="%{%B$fg[blue]%}[%{$reset_color%}%b"
local blue_cb="%{%B$fg[blue]%}]%{$reset_color%}%b"
local blue_op="%{%B$fg[blue]%}(%{$reset_color%}%b"
local blue_cp="%{%B$fg[blue]%})%{$reset_color%}%b"
local path_p="${blue_ob}$fg[red]%~${blue_cb}"
local user_host="${blue_ob}${HOST_STRING}$fg[magenta]@$fg[green]%m${blue_cb}"
local ret_status="${blue_ob}$fg[yellow]ret:%?${blue_cb}"
local hist_no="${blue_ob}$fg[yellow]hist:%h${blue_cb}"
local panic="${blue_ob}%(?,%{$fg[green]%}%BDON'T PANIC%b%{$reset_color%},%{$fg[red]%}>> PANIC <<%{$reset_color%})${blue_cb}"
local smiley="%(?,%{$fg[green]%}:%)%{$reset_color%},%{$fg[red]%}:(%{$reset_color%})"
function collapse_pwd {
echo $(pwd | sed -e "s,^$HOME,~,")
}
function prompt_char {
git branch >/dev/null 2>/dev/null && echo "${fg[red]}git ∓∓∓${reset_color}" && return
# hg root >/dev/null 2>/dev/null && echo "${fg[red]}hg ☿${reset_color}" && return
# svn info >/dev/null 2>/dev/null && echo "${fg[red]}svn s${reset_color}" && return
echo "${fg[blue]}${reset_color}"
}
function battery_charge {
[[ ! ($1 == "arrows" || $1 == "steps") ]] && print "usage $0 arrows|steps [opt: CurrentCapacity]" && exit
[[ -e /usr/bin/pmset ]] || return
s=`pmset -g ps`
# "Currently drawing from 'AC Power'"
# "-InternalBattery-0 54%; charging; 0:51 remaining"
[[ -z $s ]] && return
[[ -z $1 && -z $2 ]] && return
[[ $1 == 'arrows' ]] && base=10
[[ $1 == 'steps' ]] && base=8
[[ ! -z $2 ]] && cur=$2
percent=`pmset -g batt | awk '/-InternalBattery-0/ {print $2}'`
percent=${percent%%%*}
fuel=$(( $percent / $base ))
# fuel=`echo "scale=1; $percent/$base" | bc -q`
# color=""
# if [[ $fuel -ge 9 ]]; then
# #full
# color="$terminfo[bold]$fg[green]"
# elif [[ $fuel -ge 8 ]]; then
# #good
# color="$fg[green]"
# elif [[ $fuel -ge 5 ]]; then
# #ok
# color="$fg[orange]"
# elif [[ $fuel -ge 3 ]]; then
# #low
# color="$terminfo[bold]$fg[yellow]"
# elif [[ $fuel -ge 1 ]]; then
# #bad
# color="$fg[red]"
# fi
if [[ $1 == arrows ]]; then
full='▶'
part='▷'
display=""
for (( i = 1; i <= $fuel; i++ )); do
display=$display$full
done
for (( i = $fuel; i < 10; i++ )); do
display=$display$part
done
fi
if [[ $1 == steps ]]; then
level="▁▂▃▄▅▆▇▉"
for (( i = 1; i <= $fuel; i++ )); do
display=$display$level[$i]
done
for (( i = $fuel; i < 8; i++ )); do
display=" "$display
done
fi
print "${display}"
}
function virtualenv_info {
[ $VIRTUAL_ENV ] && echo "${blue_op}$fg[magenta]"`basename $VIRTUAL_ENV`"$fg[reset]${blue_cp}"
}
ZSH_THEME_GIT_PROMPT_PREFIX=" on %{$fg[magenta]%}"
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}"
ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[green]%}!"
ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[green]%}?"
ZSH_THEME_GIT_PROMPT_CLEAN=""
function hg_prompt_info() {
hg prompt --angle-brackets "\
< on %{$fg[magenta]%}<branch>%{$reset_color%}>\
< at %{$fg[yellow]%}<tags|%{$reset_color%}, %{$fg[yellow]%}>%{$reset_color%}>\
%{$fg[green]%}<status|modified|unknown><update>%{$reset_color%}<
patches: <patches|join( → )|pre_applied(%{$fg[yellow]%})|post_applied(%{$reset_color%})|pre_unapplied(%{$fg_bold[black]%})|post_unapplied(%{$reset_color%})>>" 2>/dev/null
}
function parse_git_dirty2() {
gitstat=$(git status -u 2>/dev/null | grep '\(# Untracked\|# Changes\|# Changed but not updated:\)'&)
if [[ $(echo ${gitstat} | grep -c "^# Changes to be committed:$") > 0 ]]; then
echo -n "$ZSH_THEME_GIT_PROMPT_DIRTY"
fi
if [[ $(echo ${gitstat} | grep -c "^\(# Untracked files:\|# Changed but not updated:\)$") > 0 ]]; then
echo -n "$ZSH_THEME_GIT_PROMPT_UNTRACKED"
fi
if [[ $(echo ${gitstat} | grep -v '^$' | wc -l | tr -d ' ') == 0 ]]; then
echo -n "$ZSH_THEME_GIT_PROMPT_CLEAN"
fi
}
# get the name of the branch we are on
function git_prompt_info2() {
ref=$(git symbolic-ref HEAD 2> /dev/null) || return
branch=${ref#refs/heads/}
sha=$(git rev-parse --short ${branch})
echo "$ZSH_THEME_GIT_PROMPT_PREFIX${branch}%{$fg[green]%}@%{$fg[magenta]%}${sha}$ZSH_THEME_GIT_PROMPT_SUFFIX$(parse_git_dirty2)"
}
PROMPT='╭─$(virtualenv_info)$(prompt_char)$(git_prompt_info2)─${user_host}─${path_p}─${panic}-${ret_status}─${hist_no}
╰─${blue_ob}${smiley}${blue_cb}${user_color}─> ⚡ '
PROMPT2='${blue_ob}$_${blue_cb}> '
# righthand side
RPROMPT='$(battery_charge arrows)'