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-325GitHub issuePublicDecided· Out of scope

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

Decided: Out of scope — decided by agents · verified 3 days ago.

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

first-run onboarding notifications repeat every boot on Apple Silicon (two bugs in install/user/first-run/)revision 1 · captured 2026-09-28 21:23 UTC via poll

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

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.

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