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 4.0.1 migration 1787399318 installs a Qt 6.11.2-built quickshell that cannot start on the Qt 6.11.1 pin from #7750 (symbol lookup error, exit 127)
Reported by greencubator1 · filed Aug 26, 2026Closed upstream on 2026-10-08 by the bot omarchybot. GitHub close reason: completed. No closing PR or commit is recorded — "completed" alone is not evidence of a fix.
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
ThinkPad X1 Extreme Gen 4i (20Y6S1TV00), 11th Gen Intel Core i7-11800H, Intel UHD (TigerLake-H GT1) + NVIDIA GA107M RTX 3050 Ti Mobile, kernel 7.1.9-arch1-2, Hyprland 0.56.2, Omarchy 4.0.1-1 (stable).
What's wrong?
Summary
Updating to Omarchy 4.0.1 leaves a cursor-on-black desktop on any system that pinned Qt at 6.11.1 to work around #7750.
Migration 1787399318 ("Switch back to the packaged quickshell now that 0.3.1 kills synchronously") replaces quickshell-git with extra/quickshell 0.3.1-1. That binary is built against Qt 6.11.2 and cannot start on Qt 6.11.1:
quickshell: symbol lookup error: quickshell: undefined symbol:
_ZN23QUntypedPropertyBindingC1EP23QPropertyBindingPrivate, version Qt_6
Omarchy shell exited with status 127; relaunching.
... x6
Giving up on the Omarchy shell after 6 relaunches in under a minute.This is not the #7750 crash. It is a dynamic-linker version-node mismatch: exit 127, and no SIGSEGV and no coredump (coredumpctl list is empty). That is the cleanest way to tell the two failures apart, since the visible symptom — Hyprland up, no bar, no wallpaper — is identical.
Root cause
Qt 6.11.2 promoted QUntypedPropertyBinding::QUntypedPropertyBinding(QPropertyBindingPrivate*) from private to public ABI. The symbol exists in both releases, but under different version nodes:
$ readelf --dyn-syms --wide /usr/lib/libQt6Core.so.6.11.1 | grep QUntypedPropertyBindingC1EP23QPropertyBindingPrivate
2682: 00000000001f4560 16 FUNC GLOBAL PROTECTED 11 _ZN23QUntypedPropertyBindingC1EP23QPropertyBindingPrivate@@Qt_6_PRIVATE_API
$ readelf --dyn-syms --wide /usr/bin/quickshell | grep QUntypedPropertyBindingC1EP23QPropertyBindingPrivate
1050: 0000000000000000 0 FUNC GLOBAL DEFAULT UND _ZN23QUntypedPropertyBindingC1EP23QPropertyBindingPrivate@Qt_6 (2)quickshell 0.3.1-1 requests @Qt_6; Qt 6.11.1 only offers @Qt_6_PRIVATE_API. The loader requires an exact match, so the shell never reaches first graph load.
This is the same symbol implicated in #7750, which is consistent with 6.11.2's change to QUntypedPropertyBinding being the source of both problems.
Why this is a catch-22
- #7750 was closed as a Qt bug, with the practical workaround being to hold Qt at 6.11.1.
- The upstream fix, quickshell-mirror/quickshell#983, is still open — no Qt 6.11.3 yet.
- Omarchy 4.0.1 now requires a quickshell built against 6.11.2.
So a user on the documented workaround cannot take 4.0.1's shell, and cannot un-pin Qt without walking back into #7750's SIGSEGV. Both paths end at a cursor on black.
Steps to reproduce
- On Omarchy 4.0.0-1, pin Qt per the #7750 workaround:
IgnorePkg = qt6-* quickshell-gitin/etc/pacman.conf, with allqt6-*at 6.11.1 andquickshell-git 0.3.0.r20.g28771c7-1. omarchy updateto 4.0.1.- Let migration
1787399318run. - Reboot.
- Hyprland starts; the shell relaunch-loops with the symbol lookup error above and gives up.
Two secondary problems in the same update
a) The migration first aborts the whole update. quickshell-git does not declare qt6-wayland in its depends, but packaged quickshell does. On a system where qt6-wayland was therefore never installed, the only candidate is the ignored repo version:
warning: ignoring package qt6-wayland-6.11.2-1
warning: cannot resolve "qt6-wayland", a dependency of "quickshell"
error: failed to prepare transaction (could not satisfy dependencies)
Something went wrong during the update!The migration failure aborts omarchy update mid-run, leaving the remaining migrations unapplied. It only proceeds to the broken-shell state once qt6-wayland is supplied manually.
b) `IgnorePkg` does not protect against migration `1787133200`. omarchy-pkg-add qt6-imageformats installs 6.11.2-1 onto an otherwise-6.11.1 stack, because IgnorePkg only holds back upgrades, and pacman -S --noconfirm accepts the "in IgnorePkg, install anyway?" prompt by default. The result is a silently mixed Qt stack.
Suggested remedy
Gate 1787399318 on the installed Qt version — skip (with a printed warning) when qt6-base is older than the version extra/quickshell was built against, rather than swapping in a binary that cannot load. More generally, a migration that installs a package should fail soft rather than aborting the whole update run.
Workaround for anyone hitting this
Reinstall the Qt 6.11.1-built quickshell and keep the pin:
sudo pacman -U --ask 4 /path/to/quickshell-git-0.3.0.r20.g28771c7-1-x86_64.pkg.tar.zst
omarchy restart shellNote this must be done from a TTY — the polkit agent runs inside omarchy-shell, so pkexec cannot authenticate while the shell is down.
View raw text
### System details
ThinkPad X1 Extreme Gen 4i (20Y6S1TV00), 11th Gen Intel Core i7-11800H, Intel UHD (TigerLake-H GT1) + NVIDIA GA107M RTX 3050 Ti Mobile, kernel 7.1.9-arch1-2, Hyprland 0.56.2, Omarchy **4.0.1-1** (stable).
### What's wrong?
## Summary
Updating to Omarchy 4.0.1 leaves a cursor-on-black desktop on any system that pinned Qt at **6.11.1** to work around #7750.
Migration `1787399318` ("Switch back to the packaged quickshell now that 0.3.1 kills synchronously") replaces `quickshell-git` with `extra/quickshell 0.3.1-1`. That binary is built against Qt **6.11.2** and cannot start on Qt 6.11.1:
```
quickshell: symbol lookup error: quickshell: undefined symbol:
_ZN23QUntypedPropertyBindingC1EP23QPropertyBindingPrivate, version Qt_6
Omarchy shell exited with status 127; relaunching.
... x6
Giving up on the Omarchy shell after 6 relaunches in under a minute.
```
This is **not** the #7750 crash. It is a dynamic-linker version-node mismatch: exit **127**, and **no SIGSEGV and no coredump** (`coredumpctl list` is empty). That is the cleanest way to tell the two failures apart, since the visible symptom — Hyprland up, no bar, no wallpaper — is identical.
## Root cause
Qt 6.11.2 promoted `QUntypedPropertyBinding::QUntypedPropertyBinding(QPropertyBindingPrivate*)` from private to public ABI. The symbol exists in both releases, but under different version nodes:
```console
$ readelf --dyn-syms --wide /usr/lib/libQt6Core.so.6.11.1 | grep QUntypedPropertyBindingC1EP23QPropertyBindingPrivate
2682: 00000000001f4560 16 FUNC GLOBAL PROTECTED 11 _ZN23QUntypedPropertyBindingC1EP23QPropertyBindingPrivate@@Qt_6_PRIVATE_API
$ readelf --dyn-syms --wide /usr/bin/quickshell | grep QUntypedPropertyBindingC1EP23QPropertyBindingPrivate
1050: 0000000000000000 0 FUNC GLOBAL DEFAULT UND _ZN23QUntypedPropertyBindingC1EP23QPropertyBindingPrivate@Qt_6 (2)
```
`quickshell 0.3.1-1` requests `@Qt_6`; Qt 6.11.1 only offers `@Qt_6_PRIVATE_API`. The loader requires an exact match, so the shell never reaches first graph load.
This is the same symbol implicated in #7750, which is consistent with 6.11.2's change to `QUntypedPropertyBinding` being the source of both problems.
## Why this is a catch-22
- #7750 was closed as a Qt bug, with the practical workaround being to hold Qt at 6.11.1.
- The upstream fix, quickshell-mirror/quickshell#983, is **still open** — no Qt 6.11.3 yet.
- Omarchy 4.0.1 now requires a quickshell built against 6.11.2.
So a user on the documented workaround cannot take 4.0.1's shell, and cannot un-pin Qt without walking back into #7750's SIGSEGV. Both paths end at a cursor on black.
## Steps to reproduce
1. On Omarchy 4.0.0-1, pin Qt per the #7750 workaround: `IgnorePkg = qt6-* quickshell-git` in `/etc/pacman.conf`, with all `qt6-*` at 6.11.1 and `quickshell-git 0.3.0.r20.g28771c7-1`.
2. `omarchy update` to 4.0.1.
3. Let migration `1787399318` run.
4. Reboot.
5. Hyprland starts; the shell relaunch-loops with the symbol lookup error above and gives up.
## Two secondary problems in the same update
**a) The migration first aborts the whole update.** `quickshell-git` does not declare `qt6-wayland` in its depends, but packaged `quickshell` does. On a system where `qt6-wayland` was therefore never installed, the only candidate is the ignored repo version:
```
warning: ignoring package qt6-wayland-6.11.2-1
warning: cannot resolve "qt6-wayland", a dependency of "quickshell"
error: failed to prepare transaction (could not satisfy dependencies)
Something went wrong during the update!
```
The migration failure aborts `omarchy update` mid-run, leaving the remaining migrations unapplied. It only proceeds to the broken-shell state once `qt6-wayland` is supplied manually.
**b) `IgnorePkg` does not protect against migration `1787133200`.** `omarchy-pkg-add qt6-imageformats` installs **6.11.2-1** onto an otherwise-6.11.1 stack, because `IgnorePkg` only holds back upgrades, and `pacman -S --noconfirm` accepts the "in IgnorePkg, install anyway?" prompt by default. The result is a silently mixed Qt stack.
## Suggested remedy
Gate `1787399318` on the installed Qt version — skip (with a printed warning) when `qt6-base` is older than the version `extra/quickshell` was built against, rather than swapping in a binary that cannot load. More generally, a migration that installs a package should fail soft rather than aborting the whole update run.
## Workaround for anyone hitting this
Reinstall the Qt 6.11.1-built quickshell and keep the pin:
```bash
sudo pacman -U --ask 4 /path/to/quickshell-git-0.3.0.r20.g28771c7-1-x86_64.pkg.tar.zst
omarchy restart shell
```
Note this must be done from a TTY — the polkit agent runs inside omarchy-shell, so `pkexec` cannot authenticate while the shell is down.
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.