zshrc: added OpenBSD support for battery info
authorMoviuro <moviuro+grml@gmail.com>
Mon, 15 Sep 2014 17:58:13 +0000 (19:58 +0200)
committerFrank Terbeck <ft@grml.org>
Mon, 15 Sep 2014 18:14:12 +0000 (20:14 +0200)
etc/zsh/zshrc

index c41cdd7..eb3f2a6 100644 (file)
@@ -1651,7 +1651,7 @@ PS4='+%N:%i:%_> '
 
 # 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 ; then
+    if ! islinux && ! isopenbsd ; then
         # not yet supported
         GRML_DISPLAY_BATTERY=0
     fi
@@ -1661,6 +1661,8 @@ battery() {
 if [[ $GRML_DISPLAY_BATTERY -gt 0 ]] ; then
     if islinux ; then
         batterylinux
+    elif isopenbsd ; then
+        batteryopenbsd
     fi
 fi
 }
@@ -1692,6 +1694,35 @@ if (( $#batteries > 0 )) ; then
 fi
 }
 
+batteryopenbsd(){
+GRML_BATTERY_LEVEL=''
+local batfull batwarn batnow num
+for num in 0 1 ; do
+    bat=$(sysctl -n hw.sensors.acpibat${num})
+    if [[ ! -z $bat ]]; then
+        batfull=${"$(sysctl -n hw.sensors.acpibat${num}.amphour0)"%% *}
+        batwarn=${"$(sysctl -n hw.sensors.acpibat${num}.amphour1)"%% *}
+        batnow=${"$(sysctl -n hw.sensors.acpibat${num}.amphour3)"%% *}
+        case "$(sysctl -n hw.sensors.acpibat${num}.raw0)" in
+            *" discharging"*)
+                if (( batnow < batwarn )) ; then
+                    GRML_BATTERY_LEVEL+=" !v"
+                else
+                    GRML_BATTERY_LEVEL+=" v"
+                fi
+                ;;
+            *" charging"*)
+                GRML_BATTERY_LEVEL+=" ^"
+                ;;
+            *)
+                GRML_BATTERY_LEVEL+=" ="
+                ;;
+        esac
+        GRML_BATTERY_LEVEL+="${$(( 100 * batnow / batfull ))%%.*}%%"
+    fi
+done
+}
+
 # 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)