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

omarchy-launch-[browser,webapp] are garbage

Reported by mxraw · filed Sep 7, 2025Closed upstream on 2025-09-07 by dhh. GitHub close reason: completed. No closing PR or commit is recorded — "completed" alone is not evidence of a fix.

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-[browser,webapp] are garbagerevision 1 · captured 2026-10-04 11:35 UTC via poll

System details

Doesn't matter

What's wrong?

omarchy-launch-[browser,webapp] are garbage.

Here is a fix for launch-browser:

> cat omarchy-launch-browser
#!/bin/bash

exec setsid uwsm app -- xdg-open "${1:-about:blank}"

Now launch-webapp is a bit more involved because xdg is also garbage (surprise). However, shamelessly reusing what /usr/bin/xdg-open provides allows us to alleviate the smell (somewhat):

> cat omarchy-launch-webapp
#!/bin/bash

#-------------------------------------------------------------
# map an id to a .desktop file, shamelessly stolen from xdg-open and slightly adapted
id_to_desktop_file() {
  search="${XDG_DATA_HOME:-$HOME/.local/share}:${XDG_DATA_DIRS:-/usr/local/share:/usr/share}"
  app_id="$1"

  # Ensure .desktop extension for matching
  case "$app_id" in
  *.desktop) desktop_name="$app_id" ;;
  *) desktop_name="$app_id.desktop" ;;
  esac

  IFS=:
  for dir in $search; do
    unset IFS
    [ "$dir" ] || continue
    [ -d "$dir/applications" ] || [ -d "$dir/applnk" ] || continue
    for file in "$dir"/applications/*.desktop "$dir"/applications/*/*.desktop "$dir"/applnk/*.desktop "$dir"/applnk/*/*.desktop; do
      [ -r "$file" ] || continue

      # Check if filename matches the app ID
      filename="$(basename "$file")"
      if [ "$filename" = "$desktop_name" ]; then
        # Make sure it's a visible desktop file
        grep -Eq "^(NoDisplay|Hidden)=true" "$file" && continue
        # Fix any double slashes that got added from path composition
        echo "$file" | tr -s /
        return
      fi
    done
  done
}

browser=$(xdg-settings get default-web-browser)
file=$(id_to_desktop_file $browser)
smell='s/@@[^@]*@@//g; s/%[UuFfDdNnickvm]//g; s/  */ /g; s/ *$//'
command="$(grep -E "^Exec=" "$file" | head -n1 | cut -d= -f 2- | sed "$smell")"

exec setsid uwsm app -- $command --app="$1" "${@:2}"

I hope this can be useful to someone.

View raw text
### System details

Doesn't matter

### What's wrong?

omarchy-launch-[browser,webapp] are garbage.

Here is a fix for launch-browser:

```
> cat omarchy-launch-browser
#!/bin/bash

exec setsid uwsm app -- xdg-open "${1:-about:blank}"
```

Now launch-webapp is a bit more involved because xdg is also garbage (surprise). However, shamelessly reusing what /usr/bin/xdg-open provides allows us to alleviate the smell (somewhat):

```
> cat omarchy-launch-webapp
#!/bin/bash

#-------------------------------------------------------------
# map an id to a .desktop file, shamelessly stolen from xdg-open and slightly adapted
id_to_desktop_file() {
  search="${XDG_DATA_HOME:-$HOME/.local/share}:${XDG_DATA_DIRS:-/usr/local/share:/usr/share}"
  app_id="$1"

  # Ensure .desktop extension for matching
  case "$app_id" in
  *.desktop) desktop_name="$app_id" ;;
  *) desktop_name="$app_id.desktop" ;;
  esac

  IFS=:
  for dir in $search; do
    unset IFS
    [ "$dir" ] || continue
    [ -d "$dir/applications" ] || [ -d "$dir/applnk" ] || continue
    for file in "$dir"/applications/*.desktop "$dir"/applications/*/*.desktop "$dir"/applnk/*.desktop "$dir"/applnk/*/*.desktop; do
      [ -r "$file" ] || continue

      # Check if filename matches the app ID
      filename="$(basename "$file")"
      if [ "$filename" = "$desktop_name" ]; then
        # Make sure it's a visible desktop file
        grep -Eq "^(NoDisplay|Hidden)=true" "$file" && continue
        # Fix any double slashes that got added from path composition
        echo "$file" | tr -s /
        return
      fi
    done
  done
}

browser=$(xdg-settings get default-web-browser)
file=$(id_to_desktop_file $browser)
smell='s/@@[^@]*@@//g; s/%[UuFfDdNnickvm]//g; s/  */ /g; s/ *$//'
command="$(grep -E "^Exec=" "$file" | head -n1 | cut -d= -f 2- | sed "$smell")"

exec setsid uwsm app -- $command --app="$1" "${@:2}"
```

I hope this can be useful to someone.

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.