Proof Portal
Omarchy
ProbeLabs65 findings · 95 requirementsA proof layer — requirements, tests and verified fixes — for two of Omarchy's subsystems: the application menu (launcher scripts, QML model, JSONC config, search and selection) and the lock screen (lock scripts, QML, PAM authentication). Scope is deliberately limited to those components of omacom/omarchy; the rest of the distribution is not covered.
Bar clock/calendar ignores system locale - always renders English day/month names
Reported by Hehed04 · filed Aug 22, 2026Closed upstream on 2026-09-21 by bjarneo via an automated message, as a duplicate of #7211 (R-1742). GitHub close reason: completed.
At a glance
- 1 · What is claimed?
- Only the report text below — no validator has restated it as checkable claims yet.
- 2 · What does it affect?
- Not yet mapped to any requirement or component.
- 3 · Is it reproducible?
- No validation has been run yet.
- 4 · What remains unclear?
- Not validated yet: no claims, no reproducer.
- 5 · What happens next?
- Our staff decide whether the report is valid. Where this project allows it, agents decide whether it duplicates another report or a known issue. No decision has been recorded yet.
Original report
What happened?
The bar clock and the calendar popup render weekday and month names in English even on a fully localized system (sv_SE.UTF-8). The Quickshell process runs with LANG=sv_SE.UTF-8 and Qt.locale() resolves to sv_SE, yet the bar shows e.g. "Saturday 11:18" and clicking it opens a calendar with hero date "August 22".
Root cause
shell/plugins/panels/clock/BarWidget.qml (formatted()) and Panel.qml call Qt.formatDateTime(date, format) / Qt.formatDate(date, format) without an explicit locale argument. In QML that call does not use the system locale; it formats with the default C locale, so day/month names are English regardless of LANG/LC_TIME.
Minimal repro under quickshell:
console.log(Qt.locale().name) // "sv_SE"
console.log(Qt.formatDateTime(new Date(), "dddd MMMM")) // "Saturday August"
console.log(new Date().toLocaleString(Qt.locale(), "dddd MMMM")) // "lördag augusti" ✓Note: the 3-arg form Qt.formatDateTime(date, Qt.locale(), format) is not a valid fix — QML's global Qt.formatDateTime has no locale overload, and passing extra args silently falls back to the locale's default long format ("lördag 22 augusti 2026 11:35:00 centraleuropeisk sommartid"). Date.prototype.toLocaleString/toLocaleDateString(Qt.locale(), fmt) is the correct API.
Expected behavior
The clock/calendar follow the system locale.
Steps to reproduce
- Set system locale to any non-English locale (e.g.
sv_SE.UTF-8), reboot - Bar clock shows English weekday name ("Saturday ...")
- Click the clock: calendar popup shows English month ("August 22")
Suggested fix (verified locally via omarchy plugin clone omarchy.clock, all three call sites):
BarWidget.qml:date.toLocaleString(Qt.locale(), activeFormat.replace(...))Panel.qmlhero date:root.today.toLocaleDateString(Qt.locale(), "MMMM d")Panel.qmlmonth header:root.viewDate.toLocaleDateString(Qt.locale(), "MMMM yyyy").toUpperCase()
System details
- Omarchy 4.0.0-1
- quickshell-git 0.3.0.r20.g28771c7-2
- Hyprland 0.56.2-1
- AMD Ryzen AI 9 HX 370 (Radeon 890M), NVIDIA RTX 4070 Max-Q
View raw text
**What happened?**
The bar clock and the calendar popup render weekday and month names in English even on a fully localized system (sv_SE.UTF-8). The Quickshell process runs with `LANG=sv_SE.UTF-8` and `Qt.locale()` resolves to `sv_SE`, yet the bar shows e.g. "Saturday 11:18" and clicking it opens a calendar with hero date "August 22".
**Root cause**
`shell/plugins/panels/clock/BarWidget.qml` (`formatted()`) and `Panel.qml` call `Qt.formatDateTime(date, format)` / `Qt.formatDate(date, format)` **without an explicit locale argument**. In QML that call does *not* use the system locale; it formats with the default C locale, so day/month names are English regardless of LANG/LC_TIME.
Minimal repro under quickshell:
```qml
console.log(Qt.locale().name) // "sv_SE"
console.log(Qt.formatDateTime(new Date(), "dddd MMMM")) // "Saturday August"
console.log(new Date().toLocaleString(Qt.locale(), "dddd MMMM")) // "lördag augusti" ✓
```
Note: the 3-arg form `Qt.formatDateTime(date, Qt.locale(), format)` is **not** a valid fix — QML's global `Qt.formatDateTime` has no locale overload, and passing extra args silently falls back to the locale's default long format ("lördag 22 augusti 2026 11:35:00 centraleuropeisk sommartid"). `Date.prototype.toLocaleString/toLocaleDateString(Qt.locale(), fmt)` is the correct API.
**Expected behavior**
The clock/calendar follow the system locale.
**Steps to reproduce**
1. Set system locale to any non-English locale (e.g. `sv_SE.UTF-8`), reboot
2. Bar clock shows English weekday name ("Saturday ...")
3. Click the clock: calendar popup shows English month ("August 22")
**Suggested fix** (verified locally via `omarchy plugin clone omarchy.clock`, all three call sites):
- `BarWidget.qml`: `date.toLocaleString(Qt.locale(), activeFormat.replace(...))`
- `Panel.qml` hero date: `root.today.toLocaleDateString(Qt.locale(), "MMMM d")`
- `Panel.qml` month header: `root.viewDate.toLocaleDateString(Qt.locale(), "MMMM yyyy").toUpperCase()`
**System details**
- Omarchy 4.0.0-1
- quickshell-git 0.3.0.r20.g28771c7-2
- Hyprland 0.56.2-1
- AMD Ryzen AI 9 HX 370 (Radeon 890M), NVIDIA RTX 4070 Max-Q
Validation
Not checked yet. A validator will restate this report as checkable claims, map it to the project's requirements and write a reproducer that the proof engine runs.
Linked
- Fixed bypr/7173· confirmed
- Related PRpr/13546· confirmed
- Related PRpr/13851· confirmed
Decision
Decisions are recorded by our staff — or, where this project allows it, by agents: checked by a second, independent agent, or by a single agent where the project's policy says so. Any decision reached so far is shown below.
No decision has been recorded yet.