AnotterKiosk/kiosk_skeleton/usr/bin/setup-refresh-timer

66 lines
1.6 KiB
Plaintext
Raw Permalink Normal View History

#!/bin/bash
INI_FILE="/boot/kioskbrowser.ini"
REFRESH_INTERVAL=$(awk -F '=' '/^\[screen\]/ { in_screen=1; next }
in_screen && /^\[/ { in_screen=0 }
in_screen && $1 ~ /refresh_screen_every_x_min/ { gsub(/ /, "", $2); print $2 }' "$INI_FILE")
2025-06-02 12:21:04 +01:00
# Function to safely remount root FS
remount_root() {
local mode=$1
echo "Remounting root filesystem as $mode..."
mount -o remount,"$mode" / || {
echo "Failed to remount root as $mode"
exit 1
}
}
# Safely check if REFRESH_INTERVAL is a positive integer
if [[ "$REFRESH_INTERVAL" =~ ^[0-9]+$ ]] && (( REFRESH_INTERVAL > 0 )); then
echo "Setting up screen refresh every $REFRESH_INTERVAL minutes..."
SERVICE_UNIT="/etc/systemd/system/screen-refresh.service"
TIMER_UNIT="/etc/systemd/system/screen-refresh.timer"
2025-06-02 12:21:04 +01:00
# Remount as read-write
remount_root rw
# Write unit files
cat <<EOF | tee "$SERVICE_UNIT" > /dev/null
[Unit]
Description=Refresh Screen
2025-06-04 12:59:05 +01:00
After=graphical.target
[Service]
Type=oneshot
2025-06-04 12:59:05 +01:00
User=pi
Environment=DISPLAY=:0
Environment=XAUTHORITY=/home/pi/.Xauthority
ExecStart=/usr/bin/refresh-screen
EOF
2025-06-02 12:21:04 +01:00
cat <<EOF | tee "$TIMER_UNIT" > /dev/null
[Unit]
Description=Run screen refresh every $REFRESH_INTERVAL minutes
[Timer]
OnBootSec=1min
OnUnitActiveSec=${REFRESH_INTERVAL}min
Persistent=false
[Install]
WantedBy=timers.target
EOF
2025-06-02 12:21:04 +01:00
# Reload and enable timer
systemctl daemon-reload
systemctl enable --now screen-refresh.timer
# Remount as read-only
remount_root ro
echo "Screen refresh timer setup complete."
else
echo "Invalid or missing refresh interval"
2025-06-02 12:21:04 +01:00
fi