mirror of
https://github.com/karl0ss/AnotterKiosk.git
synced 2025-04-25 18:00:11 +01:00
Merge pull request #3 from karl0ss/display-power-control
Display power control
This commit is contained in:
commit
5fdb39ea81
@ -14,6 +14,9 @@ reboot_time = 04:00
|
||||
;custom_modeline = "40.141 1024 1032 1064 1104 600 604 612 618 +HSync -VSync"
|
||||
; set screen rotation to be used (normal, left, right, inverted)
|
||||
;rotate_screen = "normal"
|
||||
; configure screen to power on/off as specific time of day (time format in 24 hours)
|
||||
;screen_off_time=23:00
|
||||
;screen_on_time=07:00
|
||||
|
||||
[wifi]
|
||||
; If you need more complex WiFi settings (like WPA2-Enterprise, hidden SSIDs, etc.)
|
||||
|
@ -78,6 +78,7 @@ systemctl enable ntpdate
|
||||
systemctl enable lightdm
|
||||
systemctl enable nginx
|
||||
systemctl enable ssh
|
||||
systemctl enable kiosk-sechedule-screen.service
|
||||
systemctl enable schedule-reboot.service
|
||||
|
||||
|
||||
|
@ -0,0 +1,11 @@
|
||||
# /etc/systemd/system/kiosk-sechedule-screen.service
|
||||
[Unit]
|
||||
Description=Schedule Screen On/Off Timers
|
||||
After=multi-user.target
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=/usr/bin/schedule-screen-timers
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
65
kiosk_skeleton/usr/bin/schedule-screen-timers
Normal file
65
kiosk_skeleton/usr/bin/schedule-screen-timers
Normal file
@ -0,0 +1,65 @@
|
||||
#!/bin/bash
|
||||
|
||||
INI_FILE="/boot/kioskbrowser.ini"
|
||||
SYSTEMD_DIR="/etc/systemd/system"
|
||||
|
||||
get_ini_value() {
|
||||
local section=$1 key=$2
|
||||
awk -F '=' -v sec="$section" -v k="$key" '
|
||||
$0 ~ /^\[.*\]/ { in_section = ($0 == "[" sec "]") }
|
||||
in_section && $1 ~ "^"k"$" {
|
||||
gsub(/^[ \t]+|[ \t]+$/, "", $2)
|
||||
print $2
|
||||
exit
|
||||
}' "$INI_FILE"
|
||||
}
|
||||
|
||||
create_recurring_timer() {
|
||||
local action=$1
|
||||
local time=$2
|
||||
local name="screen-${action}"
|
||||
|
||||
echo "Setting daily screen ${action} at ${time}"
|
||||
|
||||
cat <<EOF > "$SYSTEMD_DIR/${name}.timer"
|
||||
[Unit]
|
||||
Description=Daily screen ${action} timer
|
||||
|
||||
[Timer]
|
||||
OnCalendar=*-*-* ${time}:00
|
||||
Persistent=true
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
||||
EOF
|
||||
|
||||
cat <<EOF > "$SYSTEMD_DIR/${name}.service"
|
||||
[Unit]
|
||||
Description=Turn screen ${action}
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
Environment=DISPLAY=:0
|
||||
ExecStart=/usr/bin/xset dpms force ${action}
|
||||
EOF
|
||||
|
||||
systemctl daemon-reload
|
||||
systemctl enable --now "${name}.timer"
|
||||
}
|
||||
|
||||
cleanup_screen_timers() {
|
||||
for action in on off; do
|
||||
systemctl disable --now screen-${action}.timer 2>/dev/null
|
||||
rm -f "$SYSTEMD_DIR/screen-${action}.timer" "$SYSTEMD_DIR/screen-${action}.service"
|
||||
done
|
||||
systemctl daemon-reload
|
||||
}
|
||||
|
||||
# === MAIN ===
|
||||
SCREEN_ON=$(get_ini_value screen screen_on_time)
|
||||
SCREEN_OFF=$(get_ini_value screen screen_off_time)
|
||||
|
||||
cleanup_screen_timers
|
||||
|
||||
[[ "$SCREEN_ON" =~ ^[0-2][0-9]:[0-5][0-9]$ ]] && create_recurring_timer on "$SCREEN_ON"
|
||||
[[ "$SCREEN_OFF" =~ ^[0-2][0-9]:[0-5][0-9]$ ]] && create_recurring_timer off "$SCREEN_OFF"
|
Loading…
x
Reference in New Issue
Block a user