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.
first-run onboarding notifications repeat every boot on Apple Silicon (two bugs in install/user/first-run/)
Reported by WillGITCode · filed Sep 19, 2026 · open at source
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?
- AreaOutside the audited area· Decided by agents · verified
- 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?
- Decided by agents and verified by a second, independent agent — see the decision.
Original report
What happened
On a fresh Apple Silicon (Asahi) install, the first-run onboarding sequence (omarchy-provision-first-run, run on every Hyprland start via autostart.lua) never marks itself complete, because two of its steps fail on every single boot. Since it only calls omarchy-done mark first-run-user when all steps succeed, the entire sequence — including the "Learn Keybindings" and "Update System"/"Setup Wi-Fi" critical notifications from welcome.sh/wifi.sh — replays on every boot, forever, instead of once.
Confirmed via ~/.local/state/omarchy/first-run.log, which shows both of these failing on every login since the machine's first boot (2026-09-06):
Failed: enable user systemd units (exit code: 1)
Failed: prompt for the timezone (exit code: 1)Bug 1 — install/user/first-run/enable-user-units.sh
Runs, under set -euo pipefail:
systemctl --user enable --now \
bt-agent.service \
omarchy-recover-internal-monitor.service \
omarchy-sleep-lock.service \
omarchy-migrate-notify.service \
omarchy-fcitx5.service \
omarchy-crash-watch.service \
omarchy-brightness-keyboard-auto.serviceOn this Apple Silicon install, omarchy-brightness-keyboard-auto.service doesn't exist at all:
$ systemctl --user enable --now bt-agent.service ... omarchy-brightness-keyboard-auto.service
Failed to enable unit: Unit omarchy-brightness-keyboard-auto.service does not existThe other six units enable and start fine, but the missing one makes the whole systemctl invocation — and thus the script under set -e — exit non-zero every time.
Bug 2 — install/user/first-run/timezone.sh
Calls:
omarchy-notification-send -u critical -g "Set your timezone" \
"This machine is on $(current_timezone). Click to choose yours." \
--exec "omarchy-launch-floating-terminal-with-presentation omarchy-cmd-tzupdate-enhanced"--exec is passed a single quoted string instead of separate words, which omarchy-notification-send rejects outright:
--exec takes the command as separate words, not one quoted string.welcome.sh and wifi.sh already call --exec correctly (unquoted, separate words) — timezone.sh is the odd one out.
Expected
First-run should complete successfully once the timezone is set and Wi-Fi/updates are handled, write the first-run-user done-marker, and never re-show the onboarding notifications again.
Steps to reproduce
- Install Omarchy on Apple Silicon hardware where
omarchy-brightness-keyboard-auto.serviceisn't installed (or on any machine missing that unit). - Log in, note the "Learn Keybindings" / "Update System" / "Setup Wi-Fi" notifications.
- Reboot.
- Same notifications appear again — indefinitely, on every boot.
Suggested fixes
enable-user-units.sh: don't hard-fail the whole step if one unit in the list doesn't exist — e.g. loop per-unit and only fail on unexpected errors, or skip units thatsystemctl --user list-unit-filesdoesn't know about.timezone.sh: drop the quotes around the--execcommand so it's passed as separate words, matchingwelcome.sh/wifi.sh.
System details
- Hardware: MacBook Pro (16-inch, M1 Max, 2021), Apple M1 Max (8+2)
- Omarchy: 4.0.2-2
- Kernel: 7.1.13-3-1-ARCH (linux-asahi)
- Hyprland: 0.56.2 (Wayland)
omarchy debugis not a recognized command in this installed version, so the standard diagnostic log couldn't be generated; the above was gathered manually (uname -a,fastfetch,omarchy version).
Workaround applied locally
omarchy-done mark first-run-user — stops the notification loop but obviously doesn't fix the underlying script bugs for other users.
View raw text
## What happened On a fresh Apple Silicon (Asahi) install, the first-run onboarding sequence (`omarchy-provision-first-run`, run on every Hyprland start via `autostart.lua`) never marks itself complete, because two of its steps fail on every single boot. Since it only calls `omarchy-done mark first-run-user` when *all* steps succeed, the entire sequence — including the "Learn Keybindings" and "Update System"/"Setup Wi-Fi" critical notifications from `welcome.sh`/`wifi.sh` — replays on every boot, forever, instead of once. Confirmed via `~/.local/state/omarchy/first-run.log`, which shows both of these failing on every login since the machine's first boot (2026-09-06): ``` Failed: enable user systemd units (exit code: 1) Failed: prompt for the timezone (exit code: 1) ``` ### Bug 1 — `install/user/first-run/enable-user-units.sh` Runs, under `set -euo pipefail`: ```bash systemctl --user enable --now \ bt-agent.service \ omarchy-recover-internal-monitor.service \ omarchy-sleep-lock.service \ omarchy-migrate-notify.service \ omarchy-fcitx5.service \ omarchy-crash-watch.service \ omarchy-brightness-keyboard-auto.service ``` On this Apple Silicon install, `omarchy-brightness-keyboard-auto.service` doesn't exist at all: ``` $ systemctl --user enable --now bt-agent.service ... omarchy-brightness-keyboard-auto.service Failed to enable unit: Unit omarchy-brightness-keyboard-auto.service does not exist ``` The other six units enable and start fine, but the missing one makes the whole `systemctl` invocation — and thus the script under `set -e` — exit non-zero every time. ### Bug 2 — `install/user/first-run/timezone.sh` Calls: ```bash omarchy-notification-send -u critical -g "Set your timezone" \ "This machine is on $(current_timezone). Click to choose yours." \ --exec "omarchy-launch-floating-terminal-with-presentation omarchy-cmd-tzupdate-enhanced" ``` `--exec` is passed a single quoted string instead of separate words, which `omarchy-notification-send` rejects outright: ``` --exec takes the command as separate words, not one quoted string. ``` `welcome.sh` and `wifi.sh` already call `--exec` correctly (unquoted, separate words) — `timezone.sh` is the odd one out. ## Expected First-run should complete successfully once the timezone is set and Wi-Fi/updates are handled, write the `first-run-user` done-marker, and never re-show the onboarding notifications again. ## Steps to reproduce 1. Install Omarchy on Apple Silicon hardware where `omarchy-brightness-keyboard-auto.service` isn't installed (or on any machine missing that unit). 2. Log in, note the "Learn Keybindings" / "Update System" / "Setup Wi-Fi" notifications. 3. Reboot. 4. Same notifications appear again — indefinitely, on every boot. ## Suggested fixes - `enable-user-units.sh`: don't hard-fail the whole step if one unit in the list doesn't exist — e.g. loop per-unit and only fail on unexpected errors, or skip units that `systemctl --user list-unit-files` doesn't know about. - `timezone.sh`: drop the quotes around the `--exec` command so it's passed as separate words, matching `welcome.sh`/`wifi.sh`. ## System details - Hardware: MacBook Pro (16-inch, M1 Max, 2021), Apple M1 Max (8+2) - Omarchy: 4.0.2-2 - Kernel: 7.1.13-3-1-ARCH (linux-asahi) - Hyprland: 0.56.2 (Wayland) - `omarchy debug` is not a recognized command in this installed version, so the standard diagnostic log couldn't be generated; the above was gathered manually (`uname -a`, `fastfetch`, `omarchy version`). ## Workaround applied locally `omarchy-done mark first-run-user` — stops the notification loop but obviously doesn't fix the underlying script bugs for other users.
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
Not linked to any known issue, other report or change yet.
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.
- Out of scopeDecided by agents · verified · 2026-10-09 15:50 UTC