Browse Source

Merge pull request #1455 from NeuralSandwich/master

Battery plugin: Added support for Apple Macs
Robby Russell 12 years ago
parent
commit
4fea3ce219
2 changed files with 104 additions and 16 deletions
  1. 67 16
      plugins/battery/battery.plugin.zsh
  2. 37 0
      themes/candy-kingdom.zsh-theme

+ 67 - 16
plugins/battery/battery.plugin.zsh

@@ -1,20 +1,71 @@
-if [[ $(acpi 2&>/dev/null | grep -c '^Battery.*Discharging') -gt 0 ]] ; then
-  function battery_pct_remaining() { echo "$(acpi | cut -f2 -d ',' | tr -cd '[:digit:]')" }
-  function battery_time_remaining() { echo $(acpi | cut -f3 -d ',') }
-  function battery_pct_prompt() {
-    b=$(battery_pct_remaining)
-    if [ $b -gt 50 ] ; then
-      color='green'
-    elif [ $b -gt 20 ] ; then
-      color='yellow'
+###########################################
+# Battery plugin for oh-my-zsh            #
+# Original Author: Peter hoeg (peterhoeg) #
+# Email: peter@speartail.com              #
+###########################################
+# Author: Sean Jones (neuralsandwich)     #
+# Email: neuralsandwich@gmail.com         #
+# Modified to add support for Apple Mac   #
+###########################################
+
+if [[ $(uname) -eq "Darwin" ]] ; then
+
+  function battery_pct_remaining() {
+    if [[ $(ioreg -rc AppleSmartBattery | grep -c '^.*"ExternalConnected"\ =\ No') -eq 1 ]] ; then
+      typeset -F maxcapacity=$(ioreg -rc "AppleSmartBattery"| grep '^.*"MaxCapacity"\ =\ ' | sed -e 's/^.*"MaxCapacity"\ =\ //')
+      typeset -F currentcapacity=$(ioreg -rc "AppleSmartBattery"| grep '^.*"CurrentCapacity"\ =\ ' | sed -e 's/^.*CurrentCapacity"\ =\ //')
+      integer i=$(((currentcapacity/maxcapacity) * 100))
+      echo $i
     else
-      color='red'
+      echo "External Power"
     fi
-    echo "%{$fg[$color]%}[$(battery_pct_remaining)%%]%{$reset_color%}"
   }
-else
-  error_msg='no battery'
-  function battery_pct_remaining() { echo $error_msg }
-  function battery_time_remaining() { echo $error_msg }
-  function battery_pct_prompt() { echo '' }
+
+  function battery_time_remaining() {
+    if [[ $(ioreg -rc AppleSmartBattery | grep -c '^.*"ExternalConnected"\ =\ No') -eq 1 ]] ; then
+      timeremaining=$(ioreg -rc "AppleSmartBattery"| grep '^.*"AvgTimeToEmpty"\ =\ ' | sed -e 's/^.*"AvgTimeToEmpty"\ =\ //')
+      echo "~$((timeremaining / 60)):$((timeremaining % 60))"
+    else
+      echo "∞"
+    fi
+  }
+
+  function battery_pct_prompt () {
+    if [[ $(ioreg -rc AppleSmartBattery | grep -c '^.*"ExternalConnected"\ =\ No') -eq 1 ]] ; then
+      b=$(battery_pct_remaining)
+      if [ $b -gt 50 ] ; then
+        color='green'
+      elif [ $b -gt 20 ] ; then
+        color='yellow'
+      else
+        color='red'
+      fi
+      echo "%{$fg[$color]%}[$(battery_pct_remaining)%%]%{$reset_color%}"
+    else
+      echo ""
+    fi
+  }
+
+elif [[ $(uname) -eq "Linux"  ]] ; then
+
+  if [[ $(acpi 2&>/dev/null | grep -c '^Battery.*Discharging') -gt 0 ]] ; then
+    function battery_pct_remaining() { echo "$(acpi | cut -f2 -d ',' | tr -cd '[:digit:]')" }
+    function battery_time_remaining() { echo $(acpi | cut -f3 -d ',') }
+    function battery_pct_prompt() {
+      b=$(battery_pct_remaining)
+      if [ $b -gt 50 ] ; then
+        color='green'
+      elif [ $b -gt 20 ] ; then
+        color='yellow'
+      else
+        color='red'
+      fi
+      echo "%{$fg[$color]%}[$(battery_pct_remaining)%%]%{$reset_color%}"
+    }
+  else
+    error_msg='no battery'
+    function battery_pct_remaining() { echo $error_msg }
+    function battery_time_remaining() { echo $error_msg }
+    function battery_pct_prompt() { echo '' }
+  fi
 fi

+ 37 - 0
themes/candy-kingdom.zsh-theme

@@ -0,0 +1,37 @@
+# neuralsanwich.zsh-theme
+#
+# Author: Sean Jones
+# URL: http://www.neuralsandwich.com
+# Repo: 
+# Direct link:
+# Create:
+# Modified: 
+
+if [ "x$OH_MY_ZSH_HG" = "x" ]; then
+    OH_MY_ZSH_HG="hg"
+fi
+
+function hg_prompt_info {
+    $OH_MY_ZSH_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 box_name {
+    [ -f ~/.box-name ] && cat ~/.box-name || hostname -s
+}
+
+PROMPT='
+%{$fg[magenta]%}%n%{$reset_color%}@%{$fg[yellow]%}$(box_name)%{$reset_color%}:%{$fg_bold[green]%}${PWD/#$HOME/~}%{$reset_color%}$(hg_prompt_info)$(git_prompt_info)
+%(?,,%{${fg_bold[white]}%}[%?]%{$reset_color%} )$ '
+
+ZSH_THEME_GIT_PROMPT_PREFIX=" (%{$fg[magenta]%}branch: "
+ZSH_THEME_GIT_PROMPT_CLEAN=""
+ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[red]%}?"
+ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[orange]%}!"
+ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%})"
+
+local return_status="%{$fg[red]%}%(?..✘)%{$reset_color%}"
+RPROMPT='${return_status}$(battery_time_remaining) $(battery_pct_prompt)%{$reset_color%}'