#!/usr/bin/env bash level() { busctl --system get-property org.freedesktop.UPower /org/freedesktop/UPower/devices/battery_BAT0 org.freedesktop.UPower.Device Percentage | sed "s/d //" } icon-name() { busctl --system get-property org.freedesktop.UPower /org/freedesktop/UPower/devices/battery_BAT0 org.freedesktop.UPower.Device IconName | sed -E "s/(s )|\"//g" } if [ "$1" = "check" ]; then echo $(level)% exit fi while true; do icon_name=$(icon-name) if echo $icon_name | grep -qv charging && echo $icon_name | grep -q caution; then ffplay /usr/share/sounds/freedesktop/stereo/dialog-warning.oga -autoexit -nodisp -hide_banner -v -8 >&- 2>&- fi sleep 30 done