2025-06-02 12:11:07 +01:00
|
|
|
#!/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
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2025-06-02 12:11:07 +01:00
|
|
|
# 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
|
2025-06-02 12:11:07 +01:00
|
|
|
[Unit]
|
|
|
|
Description=Refresh Screen
|
2025-06-04 12:59:05 +01:00
|
|
|
After=graphical.target
|
2025-06-02 12:11:07 +01:00
|
|
|
|
|
|
|
[Service]
|
|
|
|
Type=oneshot
|
2025-06-04 12:59:05 +01:00
|
|
|
User=pi
|
|
|
|
Environment=DISPLAY=:0
|
|
|
|
Environment=XAUTHORITY=/home/pi/.Xauthority
|
2025-06-02 12:11:07 +01:00
|
|
|
ExecStart=/usr/bin/refresh-screen
|
|
|
|
EOF
|
|
|
|
|
2025-06-02 12:21:04 +01:00
|
|
|
cat <<EOF | tee "$TIMER_UNIT" > /dev/null
|
2025-06-02 12:11:07 +01:00
|
|
|
[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."
|
2025-06-02 12:11:07 +01:00
|
|
|
else
|
|
|
|
echo "Invalid or missing refresh interval"
|
2025-06-02 12:21:04 +01:00
|
|
|
fi
|