From 86e55814968fbfa47d2b37bfadfa59310f1e5915 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Mon, 29 Jun 2026 08:37:13 -0500 Subject: [PATCH] Refresh clock after timezone change --- bin/omarchy-menu-timezone | 4 +++- test/shell.d/timezone-test.sh | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 test/shell.d/timezone-test.sh diff --git a/bin/omarchy-menu-timezone b/bin/omarchy-menu-timezone index 52d55635..1c95a1ba 100755 --- a/bin/omarchy-menu-timezone +++ b/bin/omarchy-menu-timezone @@ -4,7 +4,9 @@ # omarchy:group=menu # omarchy:name=timezone +set -e + timezone=$(timedatectl list-timezones | omarchy-menu-select "Set timezone" -- --width 520 --maxheight 520) || exit 1 sudo timedatectl set-timezone "$timezone" -omarchy-shell -q Clock refresh +omarchy-shell -q omarchy.clock refresh omarchy-notification-send "Timezone is now set to $timezone" diff --git a/test/shell.d/timezone-test.sh b/test/shell.d/timezone-test.sh new file mode 100644 index 00000000..3a03c65f --- /dev/null +++ b/test/shell.d/timezone-test.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +set -euo pipefail + +source "$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)/base-test.sh" + +timezone_menu="$ROOT/bin/omarchy-menu-timezone" +sudoers_file="$ROOT/etc/sudoers.d/omarchy-tzupdate" + +grep -F '%wheel ALL=(root) NOPASSWD: /usr/bin/tzupdate, /usr/bin/timedatectl set-timezone *' "$sudoers_file" >/dev/null || + fail "timezone sudoers rule allows passwordless timedatectl timezone changes" + +grep -F 'sudo timedatectl set-timezone "$timezone"' "$timezone_menu" >/dev/null || + fail "timezone menu uses the passwordless sudoers timedatectl rule" + +! grep -F 'pkexec timedatectl set-timezone "$timezone"' "$timezone_menu" >/dev/null || + fail "timezone menu does not wrap timedatectl in pkexec" + +! grep -F 'pkexec /usr/bin/timedatectl set-timezone "$timezone"' "$timezone_menu" >/dev/null || + fail "timezone menu does not wrap timedatectl in pkexec" + +! grep -F 'sudo /usr/bin/timedatectl set-timezone "$timezone"' "$timezone_menu" >/dev/null || + fail "timezone menu lets sudo resolve timedatectl from its secure path" + +! grep -Fx 'timedatectl set-timezone "$timezone"' "$timezone_menu" >/dev/null || + fail "timezone menu does not use bare timedatectl, which triggers polkit" + +grep -F 'omarchy-shell -q omarchy.clock refresh' "$timezone_menu" >/dev/null || + fail "timezone menu refreshes the namespaced clock IPC target" + +! grep -F 'omarchy-shell -q Clock refresh' "$timezone_menu" >/dev/null || + fail "timezone menu no longer refreshes the retired Clock IPC target" + +pass "timezone menu refreshes clock after timezone changes"