A plain HH:mm clock for the Omarchy bar — no
ticking seconds cluttering the bar. Click it for the current time enlarged
with seconds, plus a world-clock list: Prague, Bangkok, Sydney, New
York, Los Angeles — each showing its offset from Prague, live local
time, and date.
The built-in omarchy.clock widget is one combined date+time display with
no way to see other timezones at a glance. This is a separate, focused
widget for exactly that — pairs naturally with a date-only clock widget
sitting next to it, but works fine on its own too.
omarchy plugin clone io.github.janfai.worldclock
omarchy plugin enable io.github.janfai.worldclock
omarchy bar put io.github.janfai.worldclock
omarchy-restart-shell(omarchy-restart-shell, not omarchy-refresh-shell — the latter resets
your whole bar layout to Omarchy's defaults.)
- Left click the bar label to open the popup.
- The popup shows today's time large with seconds, then one row per zone:
zone name, its offset from Prague (
+5h,-9h, etc.; Prague's own row reads+0h), liveHH:mm:ss, and date. - Everything ticks live while the popup is open (once a second); the bar label itself updates once a minute.
None yet — the zone list (Prague, Bangkok, Sydney, New York, Los Angeles)
is currently fixed in Panel.qml's zones property and
worldclock-offsets.py's ZONES dict. To use a different set of cities,
edit both to the same IANA timezone
names and
matching ids.
worldclock-offsets.pyprints each zone's current UTC offset (in minutes) as JSON, using Python's stdlibzoneinfo— correct across DST transitions automatically. Polled every 5 minutes (offsets only change a couple of times a year, not every tick).- Each zone's live clock is computed client-side in QML, not by
re-running the script every second:
Date.now()is a UTC epoch (timezone-agnostic) — add the zone's offset in minutes, then read the result back with theDateobject's UTC getters (getUTCHours(),getUTCMinutes(), etc. — notgetHours()), hand-formatted. (An earlier version triedQt.formatDateTime(date, format, Qt.UTC)for this — that overload doesn't exist in QML and threw aTypeErroron every evaluation, silently leaving the widget blank. Worth knowing if you're tempted to reach for it too.) - The widget's own directory is resolved from the QML file's own base URL
(
Qt.resolvedUrl(".")), not hardcoded, so it works from any install path/username.
omarchy plugin disable io.github.janfai.worldclock
rm -rf ~/.config/omarchy/plugins/worldclock(adjust the folder name if you cloned it somewhere else) and remove its
entry from ~/.config/omarchy/shell.json's bar.layout, then
omarchy-restart-shell.
MIT — see LICENSE.
