Merge remote-tracking branch 'origin/main' into display-power-control

This commit is contained in:
Karl 2025-04-21 15:29:06 +00:00
commit 7565fb2bdc
4 changed files with 68 additions and 0 deletions

View File

@ -2,6 +2,11 @@
[general]
hostname = "kioskpi"
[reboot]
; can be used to set an automatic reboot on a specific time (time in 24 horus format)
enabled=0
reboot_time = 04:00
[screen]
; can be used to force 1080p on 4k screens or workaround broken EDID communication
;force_resolution = "1920x1080"

View File

@ -79,6 +79,8 @@ systemctl enable lightdm
systemctl enable nginx
systemctl enable ssh
systemctl enable kiosk-sechedule-screen.service
systemctl enable schedule-reboot.service
# generate a version info/build info file
echo -n "Chromium version: " >> /version-info

View File

@ -0,0 +1,10 @@
[Unit]
Description=Schedule Reboot from kioskbrowser.ini
After=multi-user.target
[Service]
Type=oneshot
ExecStart=/usr/bin/schedule-reboot
[Install]
WantedBy=multi-user.target

View File

@ -0,0 +1,51 @@
#!/bin/bash
INI_FILE="/boot/kioskbrowser.ini"
REBOOT_ENABLED=$(awk -F '=' '/^\[reboot\]/ { in_reboot=1; next }
in_reboot && /^\[/ { in_reboot=0 }
in_reboot && $1 ~ /enabled/ { gsub(/ /, "", $2); print $2 }' "$INI_FILE")
REBOOT_TIME=$(awk -F '=' '/^\[reboot\]/ { in_reboot=1; next }
in_reboot && /^\[/ { in_reboot=0 }
in_reboot && $1 ~ /reboot_time/ { gsub(/ /, "", $2); print $2 }' "$INI_FILE")
if [[ "$REBOOT_ENABLED" -eq 1 ]] && [[ "$REBOOT_TIME" =~ ^[0-2][0-9]:[0-5][0-9]$ ]]; then
echo "Scheduling reboot for $REBOOT_TIME..."
TARGET_TIME=$(date -d "$REBOOT_TIME" +%s)
NOW=$(date +%s)
if [ "$TARGET_TIME" -le "$NOW" ]; then
TARGET_TIME=$(date -d "tomorrow $REBOOT_TIME" +%s)
fi
TARGET_ISO=$(date -d "@$TARGET_TIME" --iso-8601=seconds)
REBOOT_UNIT="/etc/systemd/system/reboot-at.timer"
cat <<EOF > "$REBOOT_UNIT"
[Unit]
Description=One-off reboot timer
[Timer]
OnCalendar=$TARGET_ISO
Persistent=false
[Install]
WantedBy=timers.target
EOF
# Create the associated service
cat <<EOF > /etc/systemd/system/reboot-at.service
[Unit]
Description=Scheduled Reboot
[Service]
Type=oneshot
ExecStart=/sbin/reboot
EOF
systemctl daemon-reload
systemctl enable --now reboot-at.timer
else
echo "Reboot not scheduled (disabled or invalid time)"
fi