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-4945GitHub issuePublicReceived

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.

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

omarchy-theme-set-browser hangs (and stalls omarchy update) when brave-bin is installed but only Brave Origin is runningrevision 1 · captured 2026-10-04 12:10 UTC via poll

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

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.

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.