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-1169GitHub issuePublicDecided· Out of scope

omarchy install terminal <pkg> reports failure but still mutates xdg-terminals.list and copies config when package is missing on aarch64

Reported by ozz1ee-dev · filed Aug 31, 2026 · open at source

Decided: Out of scope — decided by agents · verified 4 days ago.

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

omarchy install terminal <pkg> reports failure but still mutates xdg-terminals.list and copies config when package is missing on aarch64revision 1 · captured 2026-09-28 21:24 UTC via poll

Bug

Running omarchy install terminal ghostty on aarch64 prints "Failed to install ghostty" but still:

  1. Copies /usr/share/omarchy/config/ghostty/ into ~/.config/ghostty/
  2. Overwrites ~/.config/xdg-terminals.list so it points at com.mitchellh.ghostty.desktop

The package was never installed (pacman -Q | grep ghostty is empty afterwards, no ghostty binary on PATH), but xdg-terminal-exec and any Hyprland keybinding that resolves the default terminal now look for ghostty and fail to launch a terminal.

Steps to reproduce

  1. Use Omarchy on aarch64 (Apple Silicon). Ghostty is not in the aarch64 repos and there is no ghostty package in AUR (aur/ghostty does not exist; only derivatives like ghostty-git / ghostty-nightly-bin).
  2. Run omarchy install terminal ghostty.

What happens

Installing ghostty...
Skipping 'ghostty': not available in the repos on this system

But then the script silently:

  • creates ~/.config/ghostty/ (copied from /usr/share/omarchy/config/ghostty/)
  • rewrites ~/.config/xdg-terminals.list to:
  com.mitchellh.ghostty.desktop

The user has no terminal they can launch and no package they can run.

Expected

When the package cannot be installed, omarchy install terminal should:
- Print the error and exit non-zero
- Leave ~/.config/xdg-terminals.list unchanged
- Leave ~/.config/<package>/ untouched

Root cause

omarchy install terminal (in /usr/bin/omarchy-install-terminal) gates the config-copy and xdg-terminals.list rewrite on if omarchy-pkg-add $package; then. But omarchy-pkg-add (in /usr/bin/omarchy-pkg-add) does exit 0 when none of the requested packages are installable:

to_install=()
for pkg in "$@"; do
  if pacman -Q "$pkg" &>/dev/null || pacman -Si "$pkg" &>/dev/null; then
    to_install+=("$pkg")
  else
    echo -e "\033[33mSkipping '$pkg': not available in the repos on this system\033[0m" >&2
  fi
done

((${#to_install[@]})) || exit 0

So the if branch fires, even though no package was actually installed. The script needs a separate "did anything actually get installed?" check (e.g. omarchy-pkg-present $package after the call, or a non-zero exit from omarchy-pkg-add when nothing was installable).

Environment

  • Omarchy 4.0.1-2
  • aarch64 (Apple M1, Icestorm)
  • Kernel: Linux 7.1.6-1-1-ARCH
View raw text
## Bug

Running `omarchy install terminal ghostty` on aarch64 prints "Failed to install ghostty" but still:

1. Copies `/usr/share/omarchy/config/ghostty/` into `~/.config/ghostty/`
2. Overwrites `~/.config/xdg-terminals.list` so it points at `com.mitchellh.ghostty.desktop`

The package was never installed (`pacman -Q | grep ghostty` is empty afterwards, no `ghostty` binary on PATH), but `xdg-terminal-exec` and any Hyprland keybinding that resolves the default terminal now look for ghostty and fail to launch a terminal.

## Steps to reproduce

1. Use Omarchy on aarch64 (Apple Silicon). Ghostty is not in the aarch64 repos and there is no `ghostty` package in AUR (`aur/ghostty` does not exist; only derivatives like `ghostty-git` / `ghostty-nightly-bin`).
2. Run `omarchy install terminal ghostty`.

## What happens

```
Installing ghostty...
Skipping 'ghostty': not available in the repos on this system
```

But then the script silently:

- creates `~/.config/ghostty/` (copied from `/usr/share/omarchy/config/ghostty/`)
- rewrites `~/.config/xdg-terminals.list` to:
  ```
  com.mitchellh.ghostty.desktop
  ```

The user has no terminal they can launch and no package they can run.

## Expected

When the package cannot be installed, `omarchy install terminal` should:
- Print the error and exit non-zero
- Leave `~/.config/xdg-terminals.list` unchanged
- Leave `~/.config/<package>/` untouched

## Root cause

`omarchy install terminal` (in `/usr/bin/omarchy-install-terminal`) gates the config-copy and `xdg-terminals.list` rewrite on `if omarchy-pkg-add $package; then`. But `omarchy-pkg-add` (in `/usr/bin/omarchy-pkg-add`) does `exit 0` when none of the requested packages are installable:

```bash
to_install=()
for pkg in "$@"; do
  if pacman -Q "$pkg" &>/dev/null || pacman -Si "$pkg" &>/dev/null; then
    to_install+=("$pkg")
  else
    echo -e "\033[33mSkipping '$pkg': not available in the repos on this system\033[0m" >&2
  fi
done

((${#to_install[@]})) || exit 0
```

So the `if` branch fires, even though no package was actually installed. The script needs a separate "did anything actually get installed?" check (e.g. `omarchy-pkg-present $package` after the call, or a non-zero exit from `omarchy-pkg-add` when nothing was installable).

## Environment

- Omarchy 4.0.1-2
- aarch64 (Apple M1, Icestorm)
- Kernel: Linux 7.1.6-1-1-ARCH

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/11691· 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 10:16 UTC