Add timezone confiruation to system menu.

This commit is contained in:
Storm Dragon
2025-07-18 16:52:01 -04:00
parent 09834bdbaf
commit 63080746f2
3 changed files with 56 additions and 0 deletions

View File

@@ -111,6 +111,9 @@ case "$GAME" in
"Install to Disk")
/usr/local/bin/install_to_disk.sh
;;
"Set Timezone")
sudo /usr/local/bin/set-timezone.sh
;;
*".md") /usr/bin/markdown -toc "$GAME" | /usr/bin/w3m -T text/html ;;
"/usr/bin/"*) $GAME ;;
esac

View File

@@ -962,6 +962,7 @@ if __name__ == "__main__":
menu.add_item("System", "Disable HDMI Screen", lambda: menu.toggle_screen("headless"))
menu.add_item("System", "Set System Default Speech Rate", "/usr/local/bin/speechd_rate.py")
menu.add_item("System", "Set Default Voice", "/usr/local/bin/set-voice.py")
menu.add_item("System", "Set Timezone", "GAME='Set Timezone' /home/stormux/.clirc")
menu.add_item("System", "Upload Files", "/home/stormux/.local/upload_server/uploader.py")
menu.add_item("System", "Restart: Can Take Several Minutes", "sudo reboot")
menu.add_item("System", "Power Off: Wait 2 Minutes Before Disconnecting Power", "sudo poweroff")

52
usr/local/bin/set-timezone.sh Executable file
View File

@@ -0,0 +1,52 @@
#!/usr/bin/env bash
# Timezone configuration for Stormux Gaming Image
# Uses the same interface as standard Stormux images
export DIALOGOPTS='--insecure --no-lines --visit-items'
set_timezone() {
# Get the list of timezones
mapfile -t regions < <(timedatectl --no-pager list-timezones | cut -d '/' -f1 | sort -u)
# Use the same text twice here and just hide the tag field.
region=$(dialog --backtitle "Please select your Region" \
--no-tags \
--menu "Use up and down arrows or page-up and page-down to navigate the list, and press 'Enter' to make your selection." 0 0 0 \
$(for i in ${regions[@]} ; do echo "$i";echo "$i";done) --stdout)
if [[ -z "$region" ]]; then
echo "No region selected"
exit 1
fi
mapfile -t cities < <(timedatectl --no-pager list-timezones | grep "$region" | cut -d '/' -f2 | sort -u)
# Use the same text twice here and just hide the tag field.
city=$(dialog --backtitle "Please select a city near you" \
--no-tags \
--menu "Use up and down arrow or page-up and page-down to navigate the list." 0 0 10 \
$(for i in ${cities[@]} ; do echo "$i";echo "$i";done) --stdout)
if [[ -z "$city" ]]; then
echo "No city selected"
exit 1
fi
# Set the timezone
if [[ -f /etc/localtime ]]; then
rm /etc/localtime
fi
ln -sf /usr/share/zoneinfo/${region}/${city} /etc/localtime
timedatectl set-ntp true
echo "Timezone set to ${region}/${city}"
}
# Check if running as root
if [[ $EUID -ne 0 ]]; then
echo "This script requires root privileges"
exit 1
fi
set_timezone