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

omarchy-hw-touchpad misses Apple Touch (MTP) trackpads, so omarchy-toggle-touchpad silently does nothing

Reported by GonzFC · filed Aug 26, 2026Closed upstream on 2026-10-08 by the bot omarchybot, as not planned.

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-hw-touchpad misses Apple Touch (MTP) trackpads, so omarchy-toggle-touchpad silently does nothingrevision 1 · captured 2026-09-28 21:24 UTC via poll

System details

Apple MacBook Air (M2, 2022), Asahi Linux, Omarchy 4.0.0.r6560.gcf105bf, Hyprland 0.56.1 — also verified against a MacBook Air (M1, 2020), which is unaffected

What's wrong?

What happens

On a MacBook Air (M2, 2022) running Asahi, omarchy-toggle-touchpad and the
XF86TouchpadToggle / XF86TouchpadOn / XF86TouchpadOff bindings do nothing
at all. The trackpad is never disabled or enabled.

omarchy-toggle-input-device is reaching its "no device" branch:

device="$("omarchy-hw-$KIND")"
if [[ -z $device ]]; then
echo "No $KIND device found" >&2
exit 1
fi

Because the Hyprland bindings in default/hypr/bindings/media.lua run the
command without a terminal, that echo ... >&2 goes nowhere and the key just
appears dead.

What should happen

The touchpad toggles, with the usual OSD.

Cause

bin/omarchy-hw-touchpad matches the device by name:

device=$(hyprctl devices -j | jq -r '[.mice[] | .name | select(test("touchpad|trackpad"; "i"))] | first // empty')

Apple trackpads driven by the Apple Touch (MTP) protocol are exposed by
Hyprland as `apple-mtp-multi-touch`, which contains neither touchpad nor
trackpad, so the match returns empty.

This is model-dependent rather than vendor-dependent, which is what makes it
easy to miss — two MacBook Airs of the same family expose different names:

hostHyprland device namematched by stock?
MacBook Air M1 (2020)apple-spi-trackpadyes
MacBook Air M2 (2022)apple-mtp-multi-touchno

So the feature works on one Apple laptop and silently does not on the next one
over, with no error visible to the user.

Reproduce

On a host whose trackpad is an Apple Touch device:

$ hyprctl devices -j | jq -r '.mice[].name'
apple-mtp-multi-touch

$ omarchy-hw-touchpad
(prints nothing, exit 0)

$ omarchy-toggle-touchpad
No touchpad device found

Verified on 2026-08-25 on a MacBook Air M2 running Asahi: stock
omarchy-hw-touchpad printed nothing, and the same query widened by one
alternative printed apple-mtp-multi-touch.

Suggested fix

One alternative in the pattern:

-device=$(hyprctl devices -j | jq -r '[.mice[] | .name | select(test("touchpad|trackpad"; "i"))] | first // empty')
+device=$(hyprctl devices -j | jq -r '[.mice[] | .name | select(test("touchpad|trackpad|multi-touch"; "i"))] | first // empty')

multi-touch is specific enough not to catch anything else in .mice[] — mice
and pointing sticks do not carry it — and bin/omarchy-hw-touchscreen is
unaffected because it reads .touch[] / .tablets[] rather than matching by
name.

Happy to open a PR if that is the preferred route.

View raw text
### System details

Apple MacBook Air (M2, 2022), Asahi Linux, Omarchy 4.0.0.r6560.gcf105bf, Hyprland 0.56.1 — also verified against a MacBook Air (M1, 2020), which is unaffected

### What's wrong?

## What happens

On a MacBook Air (M2, 2022) running Asahi, `omarchy-toggle-touchpad` and the
`XF86TouchpadToggle` / `XF86TouchpadOn` / `XF86TouchpadOff` bindings do nothing
at all. The trackpad is never disabled or enabled.

`omarchy-toggle-input-device` is reaching its "no device" branch:

    device="$("omarchy-hw-$KIND")"
    if [[ -z $device ]]; then
      echo "No $KIND device found" >&2
      exit 1
    fi

Because the Hyprland bindings in `default/hypr/bindings/media.lua` run the
command without a terminal, that `echo ... >&2` goes nowhere and the key just
appears dead.

## What should happen

The touchpad toggles, with the usual OSD.

## Cause

`bin/omarchy-hw-touchpad` matches the device by name:

    device=$(hyprctl devices -j | jq -r '[.mice[] | .name | select(test("touchpad|trackpad"; "i"))] | first // empty')

Apple trackpads driven by the Apple Touch (MTP) protocol are exposed by
Hyprland as **`apple-mtp-multi-touch`**, which contains neither `touchpad` nor
`trackpad`, so the match returns empty.

This is model-dependent rather than vendor-dependent, which is what makes it
easy to miss — two MacBook Airs of the same family expose different names:

| host | Hyprland device name | matched by stock? |
|---|---|---|
| MacBook Air M1 (2020) | `apple-spi-trackpad` | yes |
| MacBook Air M2 (2022) | `apple-mtp-multi-touch` | **no** |

So the feature works on one Apple laptop and silently does not on the next one
over, with no error visible to the user.

## Reproduce

On a host whose trackpad is an Apple Touch device:

    $ hyprctl devices -j | jq -r '.mice[].name'
    apple-mtp-multi-touch

    $ omarchy-hw-touchpad
    (prints nothing, exit 0)

    $ omarchy-toggle-touchpad
    No touchpad device found

Verified on 2026-08-25 on a MacBook Air M2 running Asahi: stock
`omarchy-hw-touchpad` printed nothing, and the same query widened by one
alternative printed `apple-mtp-multi-touch`.

## Suggested fix

One alternative in the pattern:

```diff
-device=$(hyprctl devices -j | jq -r '[.mice[] | .name | select(test("touchpad|trackpad"; "i"))] | first // empty')
+device=$(hyprctl devices -j | jq -r '[.mice[] | .name | select(test("touchpad|trackpad|multi-touch"; "i"))] | first // empty')
```

`multi-touch` is specific enough not to catch anything else in `.mice[]` — mice
and pointing sticks do not carry it — and `bin/omarchy-hw-touchscreen` is
unaffected because it reads `.touch[]` / `.tablets[]` rather than matching by
name.

Happy to open a PR if that is the preferred route.

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.