#!/bin/bash export DIALOGOPTS='--insecure --no-lines --visit-items' # 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) 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) # Set the timezone sudo timedatectl set-timezone ${region}/${city} if [[ -f /etc/localtime ]]; then sudo rm /etc/localtime fi sudo ln -s /usr/share/zoneinfo/${region}/${city} /etc/localtime # Make sure we are syncing with the internet sudo timedatectl set-ntp false sudo systemctl stop ntpd sudo ntpd -gq sudo systemctl enable ntpd --now exit 0