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}
-BATTERY=${BATTERY:-0}
+GRML_DISPLAY_BATTERY=${GRML_DISPLAY_BATTERY:-${BATTERY:-0}}
GRMLSMALL_SPECIFIC=${GRMLSMALL_SPECIFIC:-1}
ZSH_NO_DEFAULT_LOCALE=${ZSH_NO_DEFAULT_LOCALE:-0}
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
bind2maps emacs viins -- -s "^x^x" hist-complete
# insert unicode character
-# usage example: 'ctrl-x i' 00A7 'ctrl-x i' will give you an §
+# usage example: 'ctrl-x i' 00A7 'ctrl-x i' will give you an §
# See for example http://unicode.org/charts/ for unicode characters code
#k# Insert Unicode character
bind2maps emacs viins -- -s '^xi' insert-unicode-char
# - debian_chroot
# - vcs_info setup and version specific fixes
-# display battery status on right side of prompt using 'BATTERY=1' in .zshrc.pre
-if [[ $BATTERY -gt 0 ]] ; then
- if ! islinux ; then
+# 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
- BATTERY=0
+ GRML_DISPLAY_BATTERY=0
fi
fi
battery() {
-if [[ $BATTERY -gt 0 ]] ; then
+if [[ $GRML_DISPLAY_BATTERY -gt 0 ]] ; then
if islinux ; then
batterylinux
+ elif isopenbsd ; then
+ batteryopenbsd
+ elif isfreebsd ; then
+ batteryfreebsd
fi
fi
}
batterylinux(){
-PERCENT=''
+GRML_BATTERY_LEVEL=''
local batteries bat capacity
batteries=( /sys/class/power_supply/BAT*(N) )
if (( $#batteries > 0 )) ; then
capacity=$(< $bat/capacity)
case $(< $bat/status) in
Charging)
- PERCENT+=" ^"
+ GRML_BATTERY_LEVEL+=" ^"
;;
Discharging)
if (( capacity < 20 )) ; then
- PERCENT+=" !v"
+ GRML_BATTERY_LEVEL+=" !v"
else
- PERCENT+=" v"
+ GRML_BATTERY_LEVEL+=" v"
fi
;;
*) # Full, Unknown
- PERCENT+=" ="
+ GRML_BATTERY_LEVEL+=" ="
;;
esac
- PERCENT+="${capacity}%%"
+ GRML_BATTERY_LEVEL+="${capacity}%%"
done
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
+}
+
+batteryfreebsd(){
+GRML_BATTERY_LEVEL=''
+local num
+local -A table
+for num in 0 1 ; do
+ table=( ${=${${${${${(M)${(f)"$(acpiconf -i $num)"}:#(State|Remaining capacity):*}%%( ##|%)}//:[ $'\t']##/@}// /-}//@/ }} )
+ if [[ $table[State] != "not-present" ]] ; then
+ case $table[State] in
+ *discharging*)
+ if (( $table[Remaining-capacity] < 20 )) ; then
+ GRML_BATTERY_LEVEL+=" !v"
+ else
+ GRML_BATTERY_LEVEL+=" v"
+ fi
+ ;;
+ *charging*)
+ GRML_BATTERY_LEVEL+=" ^"
+ ;;
+ *)
+ GRML_BATTERY_LEVEL+=" ="
+ ;;
+ esac
+ GRML_BATTERY_LEVEL+="$table[Remaining-capacity]%%"
+ 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)
grml_prompt_token_default=(
at '@'
- battery 'PERCENT'
+ battery 'GRML_BATTERY_LEVEL'
change-root 'debian_chroot'
date '%D{%Y-%m-%d}'
grml-chroot 'GRML_CHROOT'
if is437; then
# The prompt themes use modern features of zsh, that require at least
# version 4.3.7 of the shell. Use the fallback otherwise.
- if [[ $BATTERY -gt 0 ]]; then
+ if [[ $GRML_DISPLAY_BATTERY -gt 0 ]]; then
zstyle ':prompt:grml:right:setup' items sad-smiley battery
add-zsh-hook precmd battery
fi
"NOPRECMD=1 zsh" => disable the precmd + preexec commands (set GNU screen title)
"NOTITLE=1 zsh" => disable setting the title of xterms without disabling
preexec() and precmd() completely
- "BATTERY=1 zsh" => activate battery status (via acpi) on right side of prompt
+ "GRML_DISPLAY_BATTERY=1 zsh"
+ => activate battery status on right side of prompt (WIP)
"COMMAND_NOT_FOUND=1 zsh"
=> Enable a handler if an external command was not found
The command called in the handler can be altered by setting