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-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.
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'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:
- The hardcoded fallback assumes Chromium is installed. If the default is a non-
--appbrowser (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
sedover the desktop files yields an empty Exec, so the script effectively runsuwsm-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.
- The allowlist needs a code change for every new Chromium fork. Helium needed two passes (#1945 added it, #3225 fixed the filename from
helium-desktoptohelium*), andbrave-originneeded #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
- Set a Gecko default (or any default whose desktop file is missing), e.g.
xdg-settings set default-web-browser firefox.desktop pacman -Q chromium-> not installed (or rename/usr/share/applications/chromium.desktopaway)omarchy launch webapp https://youtube.com/- 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.