zshrc: added Darwin support for battery info
[grml-etc-core.git] / etc / zsh / zshrc
index a810b26..2b434ec 100644 (file)
@@ -1650,12 +1650,6 @@ PS4='+%N:%i:%_> '
 #    - vcs_info setup and version specific fixes
 
 # display battery status on right side of prompt using 'GRML_DISPLAY_BATTERY=1' in .zshrc.pre
-if [[ $GRML_DISPLAY_BATTERY -gt 0 ]] ; then
-    if ! islinux && ! isopenbsd && ! isfreebsd ; then
-        # not yet supported
-        GRML_DISPLAY_BATTERY=0
-    fi
-fi
 
 battery() {
 if [[ $GRML_DISPLAY_BATTERY -gt 0 ]] ; then
@@ -1665,6 +1659,11 @@ if [[ $GRML_DISPLAY_BATTERY -gt 0 ]] ; then
         batteryopenbsd
     elif isfreebsd ; then
         batteryfreebsd
+    elif isdarwin ; then
+        batterydarwin
+    else
+        #not yet supported
+        GRML_DISPLAY_BATTERY=0
     fi
 fi
 }
@@ -1752,6 +1751,28 @@ for num in 0 1 ; do
 done
 }
 
+batterydarwin(){
+GRML_BATTERY_LEVEL=''
+local -a table
+table=( ${$(pmset -g ps)[(w)7,8]%%(\%|);} )
+case $table[2] in
+    charging)
+        GRML_BATTERY_LEVEL+=" ^"
+        ;;
+    discharging)
+        if (( $table[1] < 20 )) ; then
+            GRML_BATTERY_LEVEL+=" !v"
+        else
+            GRML_BATTERY_LEVEL+=" v"
+        fi
+        ;;
+    *)
+        GRML_BATTERY_LEVEL+=" ="
+        ;;
+esac
+GRML_BATTERY_LEVEL+="$table[1]%%"
+}
+
 # set variable debian_chroot if running in a chroot with /etc/debian_chroot
 if [[ -z "$debian_chroot" ]] && [[ -r /etc/debian_chroot ]] ; then
     debian_chroot=$(</etc/debian_chroot)