Skip to content

Instantly share code, notes, and snippets.

@davidcelis
Created December 18, 2012 00:28
Show Gist options
  • Star 17 You must be signed in to star a gist
  • Fork 6 You must be signed in to fork a gist
  • Save davidcelis/4323782 to your computer and use it in GitHub Desktop.
Save davidcelis/4323782 to your computer and use it in GitHub Desktop.
Output a Zelda-style heart meter for your MacBook's battery level. On the command line. Based on an idea from @stephencelis, executed by myself. For a tmux version, see https://gist.github.com/4324139
#!/usr/bin/env zsh
#
# Works best with blinking text; the last heart will blink
# when you have less than 25% of your battery life remaining.
BATTERY="$(pmset -g ps | awk 'NR==2' | perl -pe 's/.*?(\d+)%.*/\1/')"
if [[ $BATTERY -lt 25 ]]; then
echo "\e[5;31m♥\e[0;31m♡♡\e[0m"
elif [[ $BATTERY -lt 50 ]]; then
echo "\e[31m♥♡♡\e[0m"
elif [[ $BATTERY -lt 75 ]]; then
echo "\e[31m♥♥♡\e[0m"
else
echo "\e[31m♥♥♥\e[0m"
fi
@davidcelis
Copy link
Author

The output of pmset -g ps becomes three lines when your battery approaches critical levels (under 20% remaining). So I've updated it to pipe to awk 'NR==2' instead of tail -1.

@vosechu
Copy link

vosechu commented Feb 24, 2013

In case I have to look this up again, this is how I ended up doing it:

zelda() {
  BATTERY="$(pmset -g ps | tail -1 | perl -pe 's/.*?(\d+)%.*/\1/')"

  if [[ $BATTERY -lt 25 ]]; then
    echo "%{$fg_blink[red]%}♥%{$fg_bold[red]%} ♡ ♡ "
  elif [[ $BATTERY -lt 50 ]]; then
    echo "♥ ♡ ♡ "
  elif [[ $BATTERY -lt 75 ]]; then
    echo "♥ ♥ ♡ "
  else
    echo "♥ ♥ ♥ "
  fi
}

# Get the current ruby version in use with RVM:
if [ -e ~/.rvm/bin/rvm-prompt ]; then
    RUBY_PROMPT_="%{$fg_bold[blue]%}rvm:(%{$fg[green]%}\$(~/.rvm/bin/rvm-prompt s i v g)%{$fg_bold[blue]%})%{$reset_color%} "
else
  if which rbenv &> /dev/null; then
    RUBY_PROMPT_="%{$fg_bold[blue]%}rbenv:(%{$fg[green]%}\$(rbenv version | sed -e 's/ (set.*$//')%{$fg_bold[blue]%})%{$reset_color%} "
  fi
fi

# Get the host name (first 4 chars)
HOST_PROMPT_="%{$fg_bold[red]%}➜  %{$fg_bold[cyan]%}%c "
GIT_PROMPT="%{$fg_bold[blue]%}\$(git_prompt_info)%{$fg_bold[blue]%} % %{$reset_color%}"
PROMPT="%{$fg_bold[red]%}$(zelda)%{$reset_color%}$HOST_PROMPT_$RUBY_PROMPT_$GIT_PROMPT"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment