mirror of
https://github.com/kuhyx/testsAndMisc.git
synced 2026-07-04 19:43:11 +02:00
- install.sh: install sleep-hook.sh to systemd-sleep hooks (step 3) and shutdown-wrapper.sh to /usr/local/bin/shutdown (step 5) - shutdown-wrapper.sh: new script that intercepts shutdown calls and redirects to rtcwake -m disk on alarm nights (Mon/Fri/Sat/Sun), pass- through for reboots and cancel commands - sleep-hook.sh: new systemd-sleep hook that restarts wake-alarm.service for each logged-in user after hibernate resume - setup_midnight_shutdown.sh: check wake-alarm day; if yes set RTC alarm and hibernate, otherwise fall back to systemctl poweroff
39 lines
1.3 KiB
Bash
Executable File
39 lines
1.3 KiB
Bash
Executable File
#!/bin/bash
|
|
# Wrapper for /usr/bin/shutdown that redirects to rtcwake -m disk on alarm
|
|
# nights (Mon, Fri, Sat, Sun by tomorrow's day-of-week). This ensures that
|
|
# both the automated systemd timer AND manual "shutdown now" hibernate
|
|
# correctly so the PC wakes for the morning alarm.
|
|
#
|
|
# Install to /usr/local/bin/shutdown (takes priority over /usr/bin/shutdown
|
|
# because /usr/local/bin appears first in PATH).
|
|
|
|
set -euo pipefail
|
|
|
|
REAL_SHUTDOWN=/usr/bin/shutdown
|
|
RTCWAKE=/usr/sbin/rtcwake
|
|
WAKE_AFTER_HOURS=8 # Must match WAKE_AFTER_HOURS in python_pkg/wake_alarm/_constants.py
|
|
|
|
# Pass through reboots and cancel commands unchanged.
|
|
for arg in "$@"; do
|
|
case "$arg" in
|
|
-r|--reboot|-c|--cancel)
|
|
exec "$REAL_SHUTDOWN" "$@"
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# Check if tomorrow is an alarm day (Mon=1, Fri=5, Sat=6, Sun=7 in date +%u).
|
|
tomorrow_dow=$(date -d "tomorrow" +%u)
|
|
case "$tomorrow_dow" in
|
|
1|5|6|7)
|
|
wake_epoch=$(( $(printf '%(%s)T' -1) + WAKE_AFTER_HOURS * 3600 ))
|
|
logger -t shutdown-wrapper \
|
|
"Tomorrow is alarm day (dow=$tomorrow_dow) — hibernating, RTC wake at epoch $wake_epoch"
|
|
sudo "$RTCWAKE" -m no -t "$wake_epoch"
|
|
exec /usr/bin/systemctl hibernate
|
|
;;
|
|
*)
|
|
exec "$REAL_SHUTDOWN" "$@"
|
|
;;
|
|
esac
|