I've been using i3 for a while now, but the xfce power manager doesn't work outside the desktop environment, is there any alternative you can recommend? It doesn't matter if it is a terminal based or graphical interface program, I just need something that can suspend the computer after a certain time or lock it when the laptop is closed
Sometimes I forget to connect the charger to the laptop, and it discharges without realizing it. When I used xfce power manager, it warned me when the charger was disconnected, can tlp or acpitool send those types of notifications?
In a nutshell TLP's default settings are optimized for battery life upon installation, allowing you to further tweak/adjust to your needs.
Whereas acpitool analyzes, but doesn't optimize without your input.
As for notifications, I don't believe either package provides them, especially since they're both cli tools (TLP has a gui, TLPUI)
As for notifications, a bash script similar to this would work:
ac_adapter=$(acpi -a | cut -d' ' -f3 | cut -d- -f1) if [ "$ac_adapter" = "on" ]; then notify-send "AC Adapter" "The AC Adapter is on." else notify-send "AC Adapter" "The AC Adapter is off." fi
TLP has a common USB lost issue, that is mitigated by disabling USB-autosuspend in the config. TLP config is found here
And if you need a tool for warning about AC disconnect, you can use a systemd service.
cat > /usr/local/bin/check_ac.sh <<EOF
#!/bin/bash
while true; do
if [[ "$(cat /sys/class/power_supply/AC/online)" -eq 0 ]]; then
notify-send -t 20 -a "Power" "AC Disconnected"
fi
sleep 20
done
EOF
chmod +x /usr/local/bin/check_ac.sh
cat > /etc/systemd/user/ac-warning.service <<EOF
[Unit]
Description=Monitor AC State and Notify
[Service]
ExecStart=/usr/local/bin/check_ac.sh
Restart=always
[Install]
WantedBy=graphical.target
EOF
I also have a battery info using i3status in the status bar, and a script I named battery-check, which warns me via a dunst popup and a beep when the battery gets low:
#!/bin/sh
set -eu
bat=/sys/class/power_supply/BAT0
if [ ! -d "$bat" ]; then
exit 1;
fi
status=$(cat "$bat/status")
energy_now=$(cat "$bat/energy_now")
energy_full=$(cat "$bat/energy_full")
battery_percent=$(( ${energy_now}00 / ${energy_full} ))
if [ "$status" != "Charging" -a "$battery_percent" -le 15 ]; then
dunstify -t 8000 -u critical "Battery at ${battery_percent}%"
play -q -n -c1 synth 2 sine 600
fi
I run this from my ~/.config/sway/config like so:
exec sh -c 'while true; do sleep 180; battery-check || break; done'