Zdravím, zkouším si napsat takový malý skriptík (jsem v tom úplný nováček), který mi bude hlídat, jestli můj laptop bere energii z baterky nebo ze sítě a podle toho mi přepne frekvenci monitoru (je to pro úsporu baterky).
Toto je script:
status=$(cat /sys/class/power_supply/BAT0/status)
# Echo the status to verify the output
# echo "Battery Status: $status"
# Check if the status is "Discharging"
if [ "$status" = "Discharging" ]; then
# echo "Setting refresh rate to 60 Hz"
# Set refresh rate to 60 Hz
xrandr --rate 60.00
else
# echo "Setting refresh rate to 144 Hz"
# Set refresh rate to 144 Hz
# xrandr --rate 120.00
xrandr --rate 144.00
fi
# To create or edit .service file
# sudo nano /etc/systemd/system/display_refresh_rate_changer.service
#
# To enable .service
# sudo systemctl enable display_refresh_rate_changer.service
#
# To start .service
# sudo systemctl start display_refresh_rate_changer.service
#
# To disable .service
# sudo systemctl disable display_refresh_rate_changer.service
Konec skriptu.
Toto je .service file
[Unit]
Description=Change Display Refresh Rate based on Battery Status
After=multi-user.target
[Service]
Type=oneshot
Restart=on-failure
ExecStart=/home/user/.scripts/display_refresh_rate_changer/display_refresh_rate_changer.sh
[Install]
WantedBy=multi-user.target
Konec .service file
Nápad vznikl jako reakce na článek:
https://www.linuxuprising.com/2021/02/how-to-limit-battery-charging-set.htmlKde jsem si nastavil limit battery charge na 80% (prý to má dobrý vliv na životnost)
Můj problém je, že když napíšu
sudo systemctl start display_refresh_rate_changer.service
vypíše mi to toto
Job for display_refresh_rate_changer.service failed because the control process exited with error code.
See "systemctl status display_refresh_rate_changer.service" and "journalctl -xeu display_refresh_rate_changer.service" for details.
A když napíšu
systemctl status display_refresh_rate_changer.service
Vypíše se mi
× display_refresh_rate_changer.service - Change Display Refresh Rate based on Battery Status
Loaded: loaded (/etc/systemd/system/display_refresh_rate_changer.service; enabled; preset: enabled)
Active: failed (Result: exit-code) since Wed 2024-04-10 11:05:15 CEST; 7s ago
Process: 15739 ExecStart=/home/user/.scripts/display_refresh_rate_changer/display_refresh_rate_changer.sh (code=exited, status=1/FAILURE)
Main PID: 15739 (code=exited, status=1/FAILURE)
CPU: 6ms
dub 10 11:05:15 debian systemd[1]: display_refresh_rate_changer.service: Scheduled restart job, restart counter is at 5.
dub 10 11:05:15 debian systemd[1]: Stopped display_refresh_rate_changer.service - Change Display Refresh Rate based on Battery Status.
dub 10 11:05:15 debian systemd[1]: display_refresh_rate_changer.service: Start request repeated too quickly.
dub 10 11:05:15 debian systemd[1]: display_refresh_rate_changer.service: Failed with result 'exit-code'.
dub 10 11:05:15 debian systemd[1]: Failed to start display_refresh_rate_changer.service - Change Display Refresh Rate based on Battery Status.
Sám o sobě skript funguje když jej spustím samostatně, prosím o radu.
PS: Pouzívám Debian 12 Stable s 6.8.4-zabbly+ kernelem, protože tento kernel mi vyřešil nějaké niance s hardwarem, třeba tato informace pomůže kdoví