rezozo.zsh-theme
# Reset EVERYTHING!
unset TMOUT
unset RPROMPT
unset RPS1
function git_get_branch() {
ref=$(command git symbolic-ref HEAD 2> /dev/null) || \
ref=$(command git rev-parse --short HEAD 2> /dev/null) || return 0
echo "${ref#refs/heads/}"
}
function git_get_commit() {
echo "$(command git rev-parse --short HEAD)"
}
function info_git() {
if git rev-parse --git-dir > /dev/null 2>&1; then
local branch=$(git_get_branch)
local commit=$(git_get_commit)
echo "[${branch}: ${commit}]"
fi
}
function battery_info() {
local percent=$(node $ZSH/battery.js percent)
local is_charging=$(node $ZSH/battery.js is-charging)
if [[ "$is_charging" == "" ]]; then
echo "[🔋 ${percent}]"
else
echo "[🔌 ${percent}]"
fi
}
function put_spaces() {
local zero='%([BSUbfksu]|([FBK]|){*})'
local upperleft="%{$fg_bold[green]%}%T %{$fg_bold[yellow]%}%n %{$fg_bold[red]%}@ %{$fg_bold[cyan]%}%~"
upperleft=${#${(S%%)upperleft//$~zero/}}
local upperright="%{$fg_bold[magenta]%}$(info_git)%{$fg_bold[black]%}$(battery_info)%{$fg_bold[green]%}[⬢ $(node -v)]"
upperright=${#${(S%%)upperright//$~zero/}}
local termwidth
(( termwidth = $(tput cols) - ${upperleft} - ${upperright} ))
local spacing=""
for i in {1..$termwidth}; do
spacing="${spacing} "
done
echo $spacing
}
PROMPT=$'%{$fg_bold[green]%}%T %{$fg_bold[yellow]%}%n %{$fg_bold[red]%}@ %{$fg_bold[cyan]%}%~$(put_spaces)%{$fg_bold[magenta]%}$(info_git)%{$fg_bold[white]%}$(battery_info)%{$fg_bold[green]%}[⬢ $(node -v)]\
%{$fg_bold[blue]%}→ %{$fg_bold[red]%}'
battery.js
var exec = require('child_process').exec
function parseInfo (str) {
str = str.split(';')
var b = {}
b.percent = parseInt(str[0].replace('%', ''), 10)
b.isCharging = (str[1].replace(' ', '') === 'charged')
return b
}
exec('pmset -g batt | egrep "([0-9]+\%).*" -o', function (err, stdout, stderr) {
if (err) return console.log('')
try {
var p = parseInfo(stdout)
switch (process.argv[2]) {
case 'percent':
console.log(p.percent)
break
case 'is-charging':
console.log(p.isCharging ? true : '')
break
default:
console.log(p)
break
}
} catch (e) {
console.log('')
}
})
IMPORTANT: Put battery.js under your $ZSH defined directory