diff --git a/i3/i3/scripts/battery b/i3/i3/scripts/battery index db8febe..59b9ff8 100755 --- a/i3/i3/scripts/battery +++ b/i3/i3/scripts/battery @@ -1,99 +1,96 @@ #!/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" logfile="$LOGDIR/batwarn.log" -[[ ! -d "$rundir" ]] && mkdir -p "$rundir" +_PATH_WARN_1="$rundir/batwarn1" +_PATH_WARN_2="$rundir/batwarn2" -PATH_WARN_1="$rundir/batwarn1" -PATH_WARN_2="$rundir/batwarn2" - -THRESHOLD1=25 -THRESHOLD2=5 +_THRESHOLD1=25 +_THRESHOLD2=5 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 has_battery=1 - percent="$(echo "$acpi_output" | grep -oP '\d+(?=%)')" + percent="$(printf '%s' "$acpi_output" | grep -oP '\d+(?=%)')" if [[ $percent == 100 ]] ; then - status="Full" + status="F" else - status="$(echo "$acpi_output" | grep -oP '(?<=: )\w+(?=,)' )" + status="$(printf '%s' "$acpi_output" | grep -oP '(?<=: )\w+(?=,)' | cut -c 1 )" fi - shortstatus="$(echo $status | cut -c 1)" else has_battery=0 fi -log() { - echo [$(date +%FT%T)] "$*" >> $logfile -} - -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 (( has_battery )) ; then + if discharging ; then if threshold2 ; then - color="#FF0000" # red - urgent=1 + if [[ ! -f "$_PATH_WARN_2" ]] ; then + log "battery fell below $_THRESHOLD2 percent. issuing warning." + touch "$_PATH_WARN_2" + notify_threshold1 + fi elif threshold1 ; then - color="#FFFF00" # yellow - urgent=0 - else - color="#FFFFFF" # white - urgent=0 + if [[ ! -f "$_PATH_WARN_1" ]] ; then + log "battery fell below $_THRESHOLD1 percent. issuing warning." + touch "$_PATH_WARN_1" + notify_threshold2 + fi fi - - echo "${shortstatus} ${percent}%" - echo - echo $color - (( $urgent )) && exit 33 - exit 0 - else - echo "no battery" + elif 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 -} -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