Refactor battery script.

This commit is contained in:
2015-11-30 23:38:00 +01:00
parent eaf92a34bb
commit acbb6b3275

View File

@@ -1,99 +1,96 @@
#!/bin/bash #!/bin/bash
# shitty. this is used for both creating a part of the status conkyrc AND for
# creating nice output if you click on the status bar
# what i done depends on the first paramter
rundir="$RUNDIR/batwarn" rundir="$RUNDIR/batwarn"
logfile="$LOGDIR/batwarn.log" logfile="$LOGDIR/batwarn.log"
[[ ! -d "$rundir" ]] && mkdir -p "$rundir" _PATH_WARN_1="$rundir/batwarn1"
_PATH_WARN_2="$rundir/batwarn2"
PATH_WARN_1="$rundir/batwarn1" _THRESHOLD1=25
PATH_WARN_2="$rundir/batwarn2" _THRESHOLD2=5
THRESHOLD1=25
THRESHOLD2=5
acpi_output=$(acpi -b) acpi_output=$(acpi -b)
log() {
printf '%s\n' "[$(date +%FT%T)] $*" >> $logfile
}
charging() {
[[ "$status" == "C" ]]
}
discharging() {
[[ "$status" == "D" ]]
}
threshold1() {
(( $percent <= $_THRESHOLD1 ))
}
threshold2() {
(( $percent <= $_THRESHOLD2 ))
}
notify_threshold1() {
notify-send --icon dialog-warning "Battery below ${_THRESHOLD2}%" --expire-time 0
}
notify_threshold2() {
notify-send --icon dialog-warning "Battery below ${_THRESHOLD1}%" --expire-time 30000
}
if [[ -n "$acpi_output" ]] ; then if [[ -n "$acpi_output" ]] ; then
has_battery=1 has_battery=1
percent="$(echo "$acpi_output" | grep -oP '\d+(?=%)')" percent="$(printf '%s' "$acpi_output" | grep -oP '\d+(?=%)')"
if [[ $percent == 100 ]] ; then if [[ $percent == 100 ]] ; then
status="Full" status="F"
else else
status="$(echo "$acpi_output" | grep -oP '(?<=: )\w+(?=,)' )" status="$(printf '%s' "$acpi_output" | grep -oP '(?<=: )\w+(?=,)' | cut -c 1 )"
fi fi
shortstatus="$(echo $status | cut -c 1)"
else else
has_battery=0 has_battery=0
fi fi
log() { if (( has_battery )) ; then
echo [$(date +%FT%T)] "$*" >> $logfile if discharging ; then
}
charging() {
[[ "$shortstatus" == "C" ]]
}
discharging() {
[[ "$shortstatus" == "D" ]]
}
threshold1() {
(( $percent <= $THRESHOLD1 ))
}
threshold2() {
(( $percent <= $THRESHOLD2 ))
}
short() {
if (( has_battery )) ; then
if discharging ; then
if threshold2 ; then
if [[ ! -f "$PATH_WARN_2" ]] ; then
log "battery fell below $THRESHOLD2 percent. issuing warning."
echo > "$PATH_WARN_2"
notify-send --icon dialog-warning "Battery below ${THRESHOLD2}%" --expire-time 0
fi
elif threshold1 ; then
if [[ ! -f "$PATH_WARN_1" ]] ; then
log "battery fell below $THRESHOLD1 percent. issuing warning."
echo > "$PATH_WARN_1"
notify-send --icon dialog-warning "Battery below ${THRESHOLD1}%" --expire-time 30000
fi
fi
fi
if charging ; then
if [[ -f "$PATH_WARN_1" ]] ; then
log "charging now. resetting warnings."
rm "$PATH_WARN_1"
fi
[[ -f "$PATH_WARN_2" ]] && rm "$PATH_WARN_2"
fi
if threshold2 ; then if threshold2 ; then
color="#FF0000" # red if [[ ! -f "$_PATH_WARN_2" ]] ; then
urgent=1 log "battery fell below $_THRESHOLD2 percent. issuing warning."
touch "$_PATH_WARN_2"
notify_threshold1
fi
elif threshold1 ; then elif threshold1 ; then
color="#FFFF00" # yellow if [[ ! -f "$_PATH_WARN_1" ]] ; then
urgent=0 log "battery fell below $_THRESHOLD1 percent. issuing warning."
else touch "$_PATH_WARN_1"
color="#FFFFFF" # white notify_threshold2
urgent=0 fi
fi fi
elif charging ; then
echo "${shortstatus} ${percent}%" if [[ -f "$_PATH_WARN_1" ]] ; then
echo log "charging now. resetting warnings."
echo $color rm "$_PATH_WARN_1"
(( $urgent )) && exit 33 fi
exit 0 [[ -f "$_PATH_WARN_2" ]] && rm "$_PATH_WARN_2"
else
echo "no battery"
fi fi
}
short if threshold2 ; then
color="#FF0000" # red
urgent=1
elif threshold1 ; then
color="#FFFF00" # yellow
urgent=0
else
color="#FFFFFF" # white
urgent=0
fi
printf '%s\n' "${status} ${percent}%"
printf '%s\n'
printf '%s\n' $color
(( $urgent )) && exit 33
else
printf '%s\n' "no battery"
printf '%s\n'
printf '%s\n' "#FFFFFF"
fi