I have installed Linux Mint 22 in a DELL laptop with a buggy ACPI implementation (the kernel complains about it during boot). The laptop hangs if it goes to sleep (I tried various Linux distros/kernel-versions, the result is the same).
Because of that, I have disabled SLEEP in the firmware (latest version for that laptop btw). So basically, when you close the lid, nothing happens (it just locks the screen).
However, sometimes you might be in a hurry and you close the lid to do something else, and then you forget about it. The result would be for the battery to run dry, which eventually destroys the battery.
My question is: what would be the best way to setup an audible alarm if the battery reaches 20%?
Ok, I managed it by myself after a bit of tinkering. This is the bash script:
#!/bin/bash while true do battery_level=`cat /sys/class/power_supply/BAT0/capacity` battery_status=`cat /sys/class/power_supply/BAT0/status` if [ $battery_status = "Discharging" ] && [ $battery_level -lt 21 ]; then /usr/bin/aplay /home/eugenia/Music/alarm.wav fi sleep 120 done
Obviously change the path the .wav audio file to suit yours (I downloaded mine from the internet). Then, save the file (in my case, I named it battery.sh), make the script file executable (
chmod +x battery.sh
via the terminal, or via the file manager).Then add it to the Startup Applications settings panel on your distro (usually gnome and cinnamon have one). The alarm will sound if the battery reaches below 21%.
Since you say
change the path the .wav audio file
fyi, the sys BAT paths are also different per laptop. Just in case it doesn’t work for somebody else or for you on a different laptop.
You could look into using scripts with tools like
acpi
orupower
. A simple shell script checking battery levels every few minutes could work: if it’s below 20%, play a sound. Schedule it with a cron job or a systemd service for consistency. I’m no script guru, but there’s lots of good examples online!The arch wiki has a udev rule that can automatically do something if the battery crosses a certain threshold: https://wiki.archlinux.org/title/Laptop#Hibernate_on_low_battery_level
No polling which is great. I always try to do stuff on an event driven basis where possible for efficiency reasons. Gotta test this out though, since your battery might not send events for every percent change.
I seem to get pop-up notifications for free in GNOME/Fedora by setting these levels in
/etc/UPower/UPower.conf
:UsePercentageForPolicy=true PercentageLow=50 PercentageCritical=20 PercentageAction=10
I think you can also configure the system to take action when it reaches the lowest level with e.g.
# The action to take when "TimeAction" or "PercentageAction" above has been # reached for the batteries (UPS or laptop batteries) supplying the computer CriticalPowerAction=PowerOff
However I don’t know how to get these GNOME “Power” notifications to play an audible sound (without turning on notification sounds for ALL notifications). The best I could find is this: David Bazile / gaudible · GitLab
There’s talk of better control of sound notifications in GNOME 47+, but looks like nothing much has landed yet: Notifications in 46 and beyond – GNOME Shell & Mutter
I would instead look into the firmware settings. Dell has good Linux support.