Skip to content

Instantly share code, notes, and snippets.

@jonohayon
Created June 5, 2016 07:53
Show Gist options
  • Save jonohayon/b7bd226a25e4915e5fd91d15846d674b to your computer and use it in GitHub Desktop.
Save jonohayon/b7bd226a25e4915e5fd91d15846d674b to your computer and use it in GitHub Desktop.
My Prompt

My Prompt

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

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