Refactor battery script.
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user