Last active
December 21, 2015 13:38
-
-
Save justinclayton/6313792 to your computer and use it in GitHub Desktop.
My hacked up zsh prompt. Displays info on RVM, git, and battery (on MacBooks). Drop in ~/.oh-my-zsh/custom/themes/ and go
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
## janky theme | |
# | |
# based on https://github.com/robbyrussell/oh-my-zsh/blob/master/themes/blinks.zsh-theme | |
# certain things cribbed from https://github.com/robbyrussell/oh-my-zsh/blob/master/themes/agnoster.zsh-theme | |
function _battery_capacity { | |
ioreg -n AppleSmartBattery -r | \ | |
awk '$1~/Capacity/{c[$1]=$3} END{OFMT="%.2f%%"; max=c["\"MaxCapacity\""]; print (max>0? 100*c["\"CurrentCapacity\""]/max: "")}' | |
} | |
function _battery_charging_char { | |
ioreg -n AppleSmartBattery -r | \ | |
awk '$1~/ExternalConnected/{gsub("Yes", "+");gsub("No", "%%"); print substr($0, length, 1)}' | |
} | |
function _git_repo_status_char { | |
setopt promptsubst | |
autoload -Uz vcs_info | |
zstyle ':vcs_info:*' enable git | |
zstyle ':vcs_info:*' get-revision true | |
zstyle ':vcs_info:*' check-for-changes true | |
zstyle ':vcs_info:*' stagedstr '✚' | |
zstyle ':vcs_info:git:*' unstagedstr '●' | |
zstyle ':vcs_info:*' formats ' %u%c' | |
zstyle ':vcs_info:*' actionformats '%u%c' | |
vcs_info | |
if [[ $vcs_info_msg_0_ == " " ]]; then | |
echo -n '' | |
else | |
echo $vcs_info_msg_0_ | |
fi | |
} | |
function _prompt_char { | |
prompt_segment $bkg fg "$(_git_repo_status_char; bold '>')" | |
} | |
#function _rvm_prompt { | |
# ${HOME}/.rvm/bin/rvm-prompt | |
#} | |
function _ruby_version { | |
#_rvm_prompt | sed -e 's/^ruby-//' | cut -s -d '-' -f1 | |
} | |
function _ruby_gemset { | |
echo -n "$(rbenv gemset active | awk '{ print $1 }')" | |
} | |
function _prompt_rbenv { | |
## TODO: only show if not "system" | |
echo -n "$(rbenv_prompt_info)@$(_ruby_gemset)" | |
} | |
#function _prompt_rvm { | |
# local version=$(_ruby_version) | |
# local gemset=$(_ruby_gemset) | |
# if [[ ! -z $gemset ]]; then | |
# prompt_segment $bkg green "${version}@${gemset}" | |
# fi | |
#} | |
# Context: user@hostname (who am I and where am I) | |
function _prompt_context { | |
local user=`whoami` | |
if [[ "$user" != "$DEFAULT_USER" || -n "$SSH_CLIENT" ]]; then | |
_prompt_user; _prompt_at; _prompt_hostname | |
else | |
echo -n '' | |
fi | |
} | |
function _cwd { | |
prompt_segment $bkg yellow '%~' | |
} | |
function bold() { | |
local text=$1 | |
echo -n "%B${text}%b" | |
} | |
function _prompt_user { | |
prompt_segment $bkg green '%n' | |
} | |
function _prompt_at { | |
# echo -n '%F{blue}@' | |
prompt_segment $bkg blue '@' | |
} | |
function _prompt_hostname { | |
prompt_segment $bkg cyan '%m' | |
} | |
function _prompt_battery { | |
prompt_segment $bkg cyan "$(_battery_capacity)$(_battery_charging_char)" | |
} | |
function _prompt_git { | |
prompt_segment $bkg green "$(git_prompt_info)" | |
} | |
function blank_line { | |
echo -n '%{%f%k%b%}' | |
} | |
# function blurt() { | |
# zparseopts b=bold u=underline t:=text | |
# if [ $bold -eq '-b' ]; then | |
# echo 'BOLD!!!' | |
# done | |
# } | |
function 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 "%{%k%b%f%}%{$bg%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR%{$fg%}" | |
else | |
echo -n "%{$bg%}%{$fg%}" | |
fi | |
CURRENT_BG=$1 | |
[[ -n $3 ]] && echo -n $3 | |
} | |
# This theme works with both the "dark" and "light" variants of the | |
# Solarized color schema. Set the SOLARIZED_THEME variable to one of | |
# these two values to choose. If you don't specify, we'll assume you're | |
# using the "dark" variant. | |
case ${SOLARIZED_THEME:-dark} in | |
light) bkg=white;; | |
*) bkg=black;; | |
esac | |
ZSH_THEME_GIT_PROMPT_PREFIX="%B%K{${bkg}%F{green} [%{%B%F{blue}%}" | |
ZSH_THEME_GIT_PROMPT_SUFFIX="%{%f%k%b%K{${bkg}}%B%F{green}%}]" | |
ZSH_THEME_GIT_PROMPT_DIRTY=" %{%F{red}%}*%{%f%k%b%}" | |
ZSH_THEME_GIT_PROMPT_CLEAN="" | |
PROMPT='$(blank_line) | |
$(_prompt_context)$(_cwd)$(git_prompt_info) $(_prompt_rbenv)%E%{%f%k%b%} | |
$(_prompt_char)%{%f%k%b%} ' | |
RPROMPT=$(_prompt_battery) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment