diff options
Diffstat (limited to 'scripts/battery-status.sh')
| -rwxr-xr-x | scripts/battery-status.sh | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/scripts/battery-status.sh b/scripts/battery-status.sh new file mode 100755 index 0000000..efbc2a2 --- /dev/null +++ b/scripts/battery-status.sh @@ -0,0 +1,57 @@ +#!/bin/bash + +if [[ "$(upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep native-path | awk '{print $2}')" == '(null)' ]]; then + exit +fi + +battery_notify () { + # if battery percentage is equal to given one, if battery percentage inside /tmp/battery.tmp is not equal to given one and if power indicator is the given on + if [ ${__bat_per} -eq $1 ] && ! grep -q $1 "/tmp/battery.tmp" && [[ ${__bat_power} = $2 ]]; then + # Send notification and rewrite battery.tmp file with current percentage + notify-send -u critical -i battery-low -t 99999999 "$3" + echo $1 > /tmp/battery.tmp + fi +} + +# If upower command is available +if command -v upower > /dev/null 2>&1 ; then + + # Get battery power indicator (charging/discharging/fully charged) and stop script if there is no value for it (if there is no battery in device) + __bat_power=$(upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep state | awk '{print $2}') + if [[ -n ${__bat_per} ]]; then + exit + fi + + # Set the battery power indicator icon + __bat_power_ind="" + if [[ ${__bat_power} = "charging" ]]; then __bat_power_ind="" + elif [[ ${__bat_power} = "discharging" ]]; then __bat_power_ind="" + elif [[ ${__bat_power} = "fully-charged" ]]; then __bat_power_ind="" + fi + + # Get the battery percentage, time until the battery is empty and time until the battery is full + __bat_per=$(upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep percentage | awk '{print $2}' | sed "s|%||g") + __time_empt=$(upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep "time to empty" | awk '{print $4 $5}' | grep -o '^[0-9.]*[a-z]') + __time_full=$(upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep "time to full" | awk '{print $4 $5}' | grep -o '^[0-9.]*[a-z]') + + # Print the battery power indicator icon, percentage and time until empty or time until full + echo -n " ${__bat_power_ind} ${__bat_per}%" + if [[ ${__bat_power} = "discharging" ]]; then + echo " ${__time_empt}" + else + echo " ${__time_full}" + fi + + # Create the temporary battery file, if it doesn't exist + if [ ! -f "/tmp/battery.tmp" ]; then + touch /tmp/battery.tmp + fi + + # Setup for battery notifications + battery_notify 100 'fully-charged' 'Battery 100%' + battery_notify 80 'charging' 'Battery 80%' + battery_notify 20 'discharging' 'Battery 20%' + battery_notify 15 'discharging' 'Battery 15%' + battery_notify 10 'discharging' 'Battery 10%' + battery_notify 5 'discharging' 'Battery 5%' +fi |
