zshrc: added OpenBSD support for battery info
[grml-etc-core.git] / etc / zsh / zshrc
index 6130df9..eb3f2a6 100644 (file)
@@ -347,7 +347,7 @@ NOMENU=${NOMENU:-0}
 NOPRECMD=${NOPRECMD:-0}
 COMMAND_NOT_FOUND=${COMMAND_NOT_FOUND:-0}
 GRML_ZSH_CNF_HANDLER=${GRML_ZSH_CNF_HANDLER:-/usr/share/command-not-found/command-not-found}
-GRML_DISPLAY_BATTERY=${GRML_DISPLAY_BATTERY:-0}
+GRML_DISPLAY_BATTERY=${GRML_DISPLAY_BATTERY:-${BATTERY:-0}}
 GRMLSMALL_SPECIFIC=${GRMLSMALL_SPECIFIC:-1}
 ZSH_NO_DEFAULT_LOCALE=${ZSH_NO_DEFAULT_LOCALE:-0}
 
@@ -358,7 +358,7 @@ if ls --color=auto / >/dev/null 2>&1; then
 elif ls -G / >/dev/null 2>&1; then
     ls_options=( -G )
 fi
-if grep --color=auto -q "a" <<< "a"; then
+if grep --color=auto -q "a" <<< "a" >/dev/null 2>&1; then
     grep_options=( --color=auto )
 fi
 
@@ -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)