Proof Portal

Project overview

Omarchy

ProbeLabs65 findings · 95 requirements

A 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.

Inbox
ReportR-4647GitHub issuePublicFixed

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.

Received and recorded verbatim. Nothing has been checked yet.

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

Bar clock/calendar ignores system locale - always renders English day/month namesrevision 1 · captured 2026-10-04 12:03 UTC via poll

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

  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
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.