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.
omarchy-theme-set-browser hangs (and stalls omarchy update) when brave-bin is installed but only Brave Origin is running
Reported by bierlingm · filed Sep 7, 2026Closed upstream on 2026-09-21 by bjarneo via an automated message, as a duplicate of #8158 (R-1486). 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
omarchy update hung indefinitely in the first pending migration (1787515927, "Stop world-writable Chromium and Firefox policy directories"). The migration calls omarchy-theme-set-browser, which spawned a brand-new, windowless /opt/brave-bin/brave --refresh-platform-policy --no-startup-window process and then waited on it forever (10+ minutes until I killed it by hand). Killing that process let the migration and the rest of the update continue normally.
The same code path runs on every omarchy theme set, so theme changes hang the same way on this setup.
Cause
In bin/omarchy-theme-set-browser (still the same on quattro):
refresh_running_browser brave brave
# Match on the binary path: the running process is named plain "brave", and a
# bare -f brave-origin pattern would also match the installer's own terminal.
refresh_running_browser /opt/brave-origin-bin/ brave-origin -fThe plain-Brave line detects a running browser with pgrep -x brave. As the comment on the next line already notes, the Brave Origin process is also named plain brave:
$ pgrep -x brave | head -1
22262
$ readlink /proc/22262/exe
/opt/brave-origin-bin/brave
$ pgrep -f '^/opt/brave-bin/brave' ; echo $?
1So on a machine where both brave-bin and brave-origin-bin are installed and only Brave Origin is running, the script decides plain Brave is running and executes brave --refresh-platform-policy --no-startup-window. Because there is no plain-Brave instance to hand the flag to, that command starts a fresh browser process with no window, which never exits, and the script blocks on it in the foreground.
Setups with both packages seem likely to be common for a while: anyone who had brave-bin from an older Omarchy and then got Brave Origin as the new default browser.
Suggested fix
Match plain Brave by binary path the same way the Brave Origin line does, e.g.
refresh_running_browser /opt/brave-bin/ brave -fIndependently of that, it may be worth running the refresh command in the background or under a timeout, so a mis-detection can never stall a migration or a theme change.
Steps to reproduce
- Install both
brave-binandbrave-origin-bin. - Have Brave Origin running, plain Brave not running.
- Run
omarchy theme set <any theme>(oromarchy updatewith migration1787515927still pending). - Observe it never returns;
ps --forestshowsomarchy-theme-set-browserwaiting on a/opt/brave-bin/brave --refresh-platform-policy --no-startup-windowchild with no window.
System
- Omarchy 4.0.2-2 (aarch64 build from omarchy-mac/omarchy-pkgs-aarch64)
- Apple MacBook Pro (16-inch, M1 Max, 2021), Asahi / Arch Linux ARM, kernel 7.1.6-1-1-ARCH
- brave-bin 1:1.94.121-1, brave-origin-bin 1:1.94.121-1
The bug is platform-independent; nothing in the affected code depends on the architecture.
View raw text
## What happened `omarchy update` hung indefinitely in the first pending migration (`1787515927`, "Stop world-writable Chromium and Firefox policy directories"). The migration calls `omarchy-theme-set-browser`, which spawned a brand-new, windowless `/opt/brave-bin/brave --refresh-platform-policy --no-startup-window` process and then waited on it forever (10+ minutes until I killed it by hand). Killing that process let the migration and the rest of the update continue normally. The same code path runs on every `omarchy theme set`, so theme changes hang the same way on this setup. ## Cause In `bin/omarchy-theme-set-browser` (still the same on `quattro`): ```bash refresh_running_browser brave brave # Match on the binary path: the running process is named plain "brave", and a # bare -f brave-origin pattern would also match the installer's own terminal. refresh_running_browser /opt/brave-origin-bin/ brave-origin -f ``` The plain-Brave line detects a running browser with `pgrep -x brave`. As the comment on the next line already notes, the Brave Origin process is *also* named plain `brave`: ``` $ pgrep -x brave | head -1 22262 $ readlink /proc/22262/exe /opt/brave-origin-bin/brave $ pgrep -f '^/opt/brave-bin/brave' ; echo $? 1 ``` So on a machine where both `brave-bin` and `brave-origin-bin` are installed and only Brave Origin is running, the script decides plain Brave is running and executes `brave --refresh-platform-policy --no-startup-window`. Because there is no plain-Brave instance to hand the flag to, that command starts a fresh browser process with no window, which never exits, and the script blocks on it in the foreground. Setups with both packages seem likely to be common for a while: anyone who had `brave-bin` from an older Omarchy and then got Brave Origin as the new default browser. ## Suggested fix Match plain Brave by binary path the same way the Brave Origin line does, e.g. ```bash refresh_running_browser /opt/brave-bin/ brave -f ``` Independently of that, it may be worth running the refresh command in the background or under a `timeout`, so a mis-detection can never stall a migration or a theme change. ## Steps to reproduce 1. Install both `brave-bin` and `brave-origin-bin`. 2. Have Brave Origin running, plain Brave not running. 3. Run `omarchy theme set <any theme>` (or `omarchy update` with migration `1787515927` still pending). 4. Observe it never returns; `ps --forest` shows `omarchy-theme-set-browser` waiting on a `/opt/brave-bin/brave --refresh-platform-policy --no-startup-window` child with no window. ## System - Omarchy 4.0.2-2 (aarch64 build from omarchy-mac/omarchy-pkgs-aarch64) - Apple MacBook Pro (16-inch, M1 Max, 2021), Asahi / Arch Linux ARM, kernel 7.1.6-1-1-ARCH - brave-bin 1:1.94.121-1, brave-origin-bin 1:1.94.121-1 The bug is platform-independent; nothing in the affected code depends on the architecture.
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.
No decision has been recorded yet.