Last active
March 25, 2025 18:09
-
-
Save vwbusguy/02992061b3054e6b1cafe9b94bad500e to your computer and use it in GitHub Desktop.
Auto Update for power-profiles-daemon
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
dbus-monitor --system "type='signal',path='/org/freedesktop/UPower/devices/battery_BAT0',member='PropertiesChanged'" | while read LINE; do | |
echo ${LINE} | grep battery_BAT0 | grep -q PropertiesChanged | |
if [ $? -eq 0 ]; then | |
BATT_STAT=$(dbus-send --print-reply=literal --system --dest=org.freedesktop.UPower /org/freedesktop/UPower/devices/battery_BAT0 org.freedesktop.DBus.Properties.Get string:org.freedesktop.UPower.Device string:State | awk '{ print $3; }') | |
if [ $BATT_STAT -eq 1 ] || [ $BATT_STAT -eq 4 ]; then | |
LEVEL=$(tuned-adm list | grep -q throughput-performance && echo "throughput-performance" || echo "balanced") | |
elif [ $BATT_STAT -eq 5 ]; then | |
LEVEL="balanced" | |
else | |
LEVEL="powersave" | |
fi | |
if [[ "$(tuned-adm active | sed 's,.*: ,,')" != "$LEVEL" ]] ; then | |
echo "Changing power level to ${LEVEL}" | |
tuned-adm profile $LEVEL | |
[[ $? -ne 0 ]] && echo "Could not change power level to ${LEVEL}!" | |
fi | |
fi | |
done |
I just updated this to work for Fedora 41 via tuned. Use the previous version if you're on Fedora 40 or otherwise using the powerprofiles daemon. I also updated the name to match the systemd service example. It'll also spam the logs less since it won't output anything if the level isn't changing now.
Note that tuned also has a "recommended" and "auto_profile" mode already, so you might consider just using the existing tuned methods. If you specifically want these modes based on the battery/charging status, then this script should still be useful.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thanks for that. I should note that this script is probably no longer useful For Fedora users as of Fedora 41 since Fedora has since moved to upower by default.