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-or-focus matches window titles, so web app bindings focus a browser tab instead of launching the web app
Reported by rsd · filed Oct 7, 2026 · open at source
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
Summary
omarchy-launch-or-focus matches its pattern against the window title as well as the class. For the focus = true web app bindings, the pattern is the binding's description ("WhatsApp", "Google Maps", "Google Photos", "Google Messages"). So any ordinary browser window whose active tab title contains that word is taken as the web app. The binding then focuses the browser window and never launches the web app.
Steps to reproduce
- Make sure the WhatsApp web app is not running.
- In the browser, open a normal tab on https://www.whatsapp.com/ (title: "WhatsApp | Secure and Reliable Free Private Messaging and Calling"), or on any WhatsApp group invite page (
chat.whatsapp.com/…, title "WhatsApp Group Invite"), and leave it as the active tab of that window. The window title follows the active tab, so a background tab doesn't trigger it. - Press
SUPER + SHIFT + ALT + G.
Expected: the WhatsApp web app launches.
Actual: the browser window with that tab gets focus, and the web app never launches. (Reproduced on the system below.)
The same happens with SUPER + SHIFT + S (Google Maps) and SUPER + SHIFT + P (Google Photos) whenever a browser window's active tab is on maps.google.com or photos.google.com, since those tab titles contain "Google Maps" and "Google Photos". If the web app is already open, the result depends on the order in hyprctl clients, so the binding can still focus the browser tab instead of the web app.
Cause
bin/omarchy-launch-or-focus:
WINDOW_ADDRESS=$(hyprctl clients -j | jq -r --arg p "$WINDOW_PATTERN" '.[]|select((.class|test("\\b" + $p + "\\b";"i")) or (.title|test("\\b" + $p + "\\b";"i")))|.address' | head -n1)default/hypr/helpers.lua → o.launch_webapp_sole(name, url) passes the binding description as the pattern:
return "omarchy-launch-or-focus-webapp " .. shell_quote(name) .. " " .. shell_quote(url)Replaying that jq filter over a client list with {"class":"chromium","title":"WhatsApp | Secure and Reliable … - Chromium"} selects that browser window for the pattern WhatsApp, and Google Maps - Chromium for Google Maps.
Suggested fix
For web apps, match on the window class only, derived from the URL rather than the description. Chromium-based --app= windows get a class like chrome-web.whatsapp.com__-Default (brave-… on Brave), so omarchy-launch-or-focus-webapp could build the pattern from the URL's host (e.g. ^[a-z-]+-web\.whatsapp\.com_) and check it against .class only. Non-web-app callers of omarchy-launch-or-focus can keep the current behaviour.
System
- Omarchy 4.0.4-1
- Hyprland v0.56.2
- Browser: Chromium (default)
bin/omarchy-launch-or-focusand the WhatsApp binding are unchanged on currentmaster.
View raw text
## Summary
`omarchy-launch-or-focus` matches its pattern against the window **title** as well as the class. For the `focus = true` web app bindings, the pattern is the binding's description ("WhatsApp", "Google Maps", "Google Photos", "Google Messages"). So any ordinary browser window whose active tab title contains that word is taken as the web app. The binding then focuses the browser window and never launches the web app.
## Steps to reproduce
1. Make sure the WhatsApp web app is **not** running.
2. In the browser, open a normal tab on https://www.whatsapp.com/ (title: "WhatsApp | Secure and Reliable Free Private Messaging and Calling"), or on any WhatsApp group invite page (`chat.whatsapp.com/…`, title "WhatsApp Group Invite"), and leave it as the **active tab** of that window. The window title follows the active tab, so a background tab doesn't trigger it.
3. Press `SUPER + SHIFT + ALT + G`.
**Expected:** the WhatsApp web app launches.
**Actual:** the browser window with that tab gets focus, and the web app never launches. (Reproduced on the system below.)
The same happens with `SUPER + SHIFT + S` (Google Maps) and `SUPER + SHIFT + P` (Google Photos) whenever a browser window's active tab is on maps.google.com or photos.google.com, since those tab titles contain "Google Maps" and "Google Photos". If the web app is already open, the result depends on the order in `hyprctl clients`, so the binding can still focus the browser tab instead of the web app.
## Cause
`bin/omarchy-launch-or-focus`:
```bash
WINDOW_ADDRESS=$(hyprctl clients -j | jq -r --arg p "$WINDOW_PATTERN" '.[]|select((.class|test("\\b" + $p + "\\b";"i")) or (.title|test("\\b" + $p + "\\b";"i")))|.address' | head -n1)
```
`default/hypr/helpers.lua` → `o.launch_webapp_sole(name, url)` passes the binding **description** as the pattern:
```lua
return "omarchy-launch-or-focus-webapp " .. shell_quote(name) .. " " .. shell_quote(url)
```
Replaying that jq filter over a client list with `{"class":"chromium","title":"WhatsApp | Secure and Reliable … - Chromium"}` selects that browser window for the pattern `WhatsApp`, and `Google Maps - Chromium` for `Google Maps`.
## Suggested fix
For web apps, match on the window **class** only, derived from the URL rather than the description. Chromium-based `--app=` windows get a class like `chrome-web.whatsapp.com__-Default` (`brave-…` on Brave), so `omarchy-launch-or-focus-webapp` could build the pattern from the URL's host (e.g. `^[a-z-]+-web\.whatsapp\.com_`) and check it against `.class` only. Non-web-app callers of `omarchy-launch-or-focus` can keep the current behaviour.
## System
- Omarchy 4.0.4-1
- Hyprland v0.56.2
- Browser: Chromium (default)
- `bin/omarchy-launch-or-focus` and the WhatsApp binding are unchanged on current `master`.
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/12557· 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.
- Out of scopeDecided by agents · verified · 2026-10-09 22:27 UTC