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

omarchy-launch-webapp falls back to chromium.desktop without checking it exists (plus allowlist needs constant updates)

Reported by thedavidweng · filed Sep 10, 2026Closed upstream on 2026-09-21 by bjarneo via an automated message, as a duplicate of #7034 (R-1814). 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-launch-webapp falls back to chromium.desktop without checking it exists (plus allowlist needs constant updates)revision 1 · captured 2026-10-04 12:10 UTC via poll

What's wrong?

bin/omarchy-launch-webapp decides which browser runs --app URLs like this:

browser=$(xdg-settings get default-web-browser)

case $browser in
google-chrome* | brave* | microsoft-edge* | opera* | vivaldi* | helium*) ;;
*) browser="chromium.desktop" ;;
esac

exec setsid uwsm-app -- $(sed -n 's/^Exec=\([^ ]*\).*/\1/p' {~/.local,~/.nix-profile,/usr}/share/applications/$browser 2>/dev/null | head -1) --app="$1" "${@:2}"

Two problems with that:

  1. The hardcoded fallback assumes Chromium is installed. If the default is a non---app browser (e.g. Firefox) and the user removed Chromium (pacman -Rns chromium), the fallback resolves to nothing:
  • ls /usr/share/applications/chromium.desktop -> No such file or directory
  • the sed over the desktop files yields an empty Exec, so the script effectively runs uwsm-app -- --app=<url> and the webapp (YouTube, HEY, WhatsApp, …) fails with no useful message.
  • Reproduced on my machine after switching the default to Helium (helium.desktop) and removing Chromium.
  1. The allowlist needs a code change for every new Chromium fork. Helium needed two passes (#1945 added it, #3225 fixed the filename from helium-desktop to helium*), and brave-origin needed #5304. The next fork will need another PR.

Expected

  • Trust the XDG default unless it is known not to support --app (Firefox family), instead of only trusting a hardcoded list.
  • When a fallback is needed (Gecko default, empty default, or the default's desktop file is gone), pick the first actually installed Chromium-based browser instead of blindly using chromium.desktop.
  • If no Chromium-based browser is installed at all, fail with a clear error instead of exec'ing an empty binary.

Steps to recreate

  1. Set a Gecko default (or any default whose desktop file is missing), e.g. xdg-settings set default-web-browser firefox.desktop
  2. pacman -Q chromium -> not installed (or rename /usr/share/applications/chromium.desktop away)
  3. omarchy launch webapp https://youtube.com/
  4. Observe it does not open; tracing shows the resolved Exec is empty because the fallback desktop file does not exist.

System details

MacBookPro15,2, Intel i5-8279U, Omarchy 4.0.3-1 (Hyprland 0.56.2). Full omarchy-debug --no-sudo --print output saved at /tmp/omarchy-debug.log on the reporting machine.

Related

  • #1945 Add Helium browser to supported browsers list
  • #3225 Fix Helium desktop filename (helium.desktop)
  • #5304 brave-origin not matched, wrongly fell back to chromium
  • Discussion #6087 (Helium in Setup > Defaults)
View raw text
## What's wrong?

`bin/omarchy-launch-webapp` decides which browser runs `--app` URLs like this:

```bash
browser=$(xdg-settings get default-web-browser)

case $browser in
google-chrome* | brave* | microsoft-edge* | opera* | vivaldi* | helium*) ;;
*) browser="chromium.desktop" ;;
esac

exec setsid uwsm-app -- $(sed -n 's/^Exec=\([^ ]*\).*/\1/p' {~/.local,~/.nix-profile,/usr}/share/applications/$browser 2>/dev/null | head -1) --app="$1" "${@:2}"
```

Two problems with that:

1. **The hardcoded fallback assumes Chromium is installed.** If the default is a non-`--app` browser (e.g. Firefox) and the user removed Chromium (`pacman -Rns chromium`), the fallback resolves to nothing:
   - `ls /usr/share/applications/chromium.desktop` -> No such file or directory
   - the `sed` over the desktop files yields an **empty** Exec, so the script effectively runs `uwsm-app -- --app=<url>` and the webapp (YouTube, HEY, WhatsApp, …) fails with no useful message.
   - Reproduced on my machine after switching the default to Helium (`helium.desktop`) and removing Chromium.
2. **The allowlist needs a code change for every new Chromium fork.** Helium needed two passes (#1945 added it, #3225 fixed the filename from `helium-desktop` to `helium*`), and `brave-origin` needed #5304. The next fork will need another PR.

## Expected

- Trust the XDG default unless it is *known* not to support `--app` (Firefox family), instead of only trusting a hardcoded list.
- When a fallback is needed (Gecko default, empty default, or the default's desktop file is gone), pick the first *actually installed* Chromium-based browser instead of blindly using `chromium.desktop`.
- If no Chromium-based browser is installed at all, fail with a clear error instead of exec'ing an empty binary.

## Steps to recreate

1. Set a Gecko default (or any default whose desktop file is missing), e.g. `xdg-settings set default-web-browser firefox.desktop`
2. `pacman -Q chromium` -> not installed (or rename `/usr/share/applications/chromium.desktop` away)
3. `omarchy launch webapp https://youtube.com/`
4. Observe it does not open; tracing shows the resolved Exec is empty because the fallback desktop file does not exist.

## System details

MacBookPro15,2, Intel i5-8279U, Omarchy 4.0.3-1 (Hyprland 0.56.2). Full `omarchy-debug --no-sudo --print` output saved at `/tmp/omarchy-debug.log` on the reporting machine.

## Related

- #1945 Add Helium browser to supported browsers list
- #3225 Fix Helium desktop filename (`helium.desktop`)
- #5304 brave-origin not matched, wrongly fell back to chromium
- Discussion #6087 (Helium in Setup > Defaults)

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

  • Related PRpr/10446· confirmed
  • Related PRpr/11975· 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.