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-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.
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
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 theXF86TouchpadToggle / 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 nortrackpad, 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: stockomarchy-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.