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.
Hyprland 0.56.2 SIGSEGV on Super+G after moving an unrelated window into a workspace with a locked window group, group vanishes, workspace stays marked as occupied
Reported by gastyr · filed Sep 20, 2026 · open at source
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
System details
AMD Ryzen 5 7600X, Omarchy version: 4.0.3, Hyprland version: v0.56.2 (commit efb50993780079460b0cbed1363e2166a2de1d9f), Kernel: 7.2.3-arch1-3 (#1 SMP PREEMPT_DYNAMIC Sun, 06 Sep 2026), GPU: AMD Radeon RX 6750 XT (Navi 22) + AMD Raphael iGPU, Libraries: Hyprutils 0.14.2, Hyprlang 0.6.8, Hyprcursor 0.1.13, Hyprgraphics 0.5.1, Aquamarine 0.15.0
What's wrong?
Repro steps
- Have two window rules that group two web apps into the same window group
on workspace 4, e.g.:
windowrulev2 = workspace 4 silent, group new lock, class:^(chrome-discord.com__channels_@me-Default)$windowrulev2 = workspace 4 silent, group invade, class:^(chrome-web.whatsapp.com__-Default)$
Both apps launch on start, so this locked group is already established on
workspace 4 before any manual interaction happens.
- Focus a window that is NOT part of that group and is on a different
workspace (in my case, a browser window on workspace 1).
3. With focus on the browser, move it into workspace 4 using "swap window"
(bound to Super+Shift+Arrow). The browser lands on
workspace 4, but the existing window group (Discord+WhatsApp) disappears,
it is not visible on workspace 4 or on any other workspace.
4. Move the browser back to its own workspace (workspace 1).
5. Switch view to workspace 4. It is reported as occupied (window count > 0
in the workspace indicator), but nothing is rendered there. The window
group is gone from every workspace.
6. While on workspace 4 (visually empty), press Super+G (toggleGroup).
7. Hyprland crashes with SIGSEGV.
Expected behavior
Either the group should remain intact/visible after an unrelated window is
moved onto its workspace, or, failing that, toggleGroup should not crash
when invoked in a workspace whose tracked window/group state is already
inconsistent.
Actual behavior
Hyprland segfaults. Backtrace shows the crash insideLayout::CWindowTarget::assignToSpace(), called fromDesktop::View::CGroup::remove() during CGroup::destroy(), triggered byConfig::Actions::toggleGroup():
Config::Actions::toggleGroup()
→ Desktop::View::CGroup::destroy()
→ Desktop::View::CGroup::remove()
→ Layout::CWindowTarget::assignToSpace() <- SIGSEGV
This looks like the same class of bug reported in #10342 (a window not
getting properly reassigned to the target workspace's CSpace, leaving a
stale reference to a destroyed workspace's space), but triggered by moving
a window INTO a workspace that hosts an existing locked group, rather than
moving a grouped window OUT. The group itself seems to be the one left with
the dangling CSpace reference once a foreign window lands on its workspace
and leaves again.
Full crash report attached below.
hyprlandCrashReport1313.txt
Related: #10342
View raw text
### System details AMD Ryzen 5 7600X, Omarchy version: 4.0.3, Hyprland version: v0.56.2 (commit efb50993780079460b0cbed1363e2166a2de1d9f), Kernel: 7.2.3-arch1-3 (#1 SMP PREEMPT_DYNAMIC Sun, 06 Sep 2026), GPU: AMD Radeon RX 6750 XT (Navi 22) + AMD Raphael iGPU, Libraries: Hyprutils 0.14.2, Hyprlang 0.6.8, Hyprcursor 0.1.13, Hyprgraphics 0.5.1, Aquamarine 0.15.0 ### What's wrong? ## Repro steps 1. Have two window rules that group two web apps into the same window group on workspace 4, e.g.: `windowrulev2 = workspace 4 silent, group new lock, class:^(chrome-discord.com__channels_@me-Default)$` `windowrulev2 = workspace 4 silent, group invade, class:^(chrome-web.whatsapp.com__-Default)$` Both apps launch on start, so this locked group is already established on workspace 4 before any manual interaction happens. 2. Focus a window that is NOT part of that group and is on a different workspace (in my case, a browser window on workspace 1). 3. With focus on the browser, move it into workspace 4 using "swap window" (bound to Super+Shift+Arrow). The browser lands on workspace 4, but the existing window group (Discord+WhatsApp) disappears, it is not visible on workspace 4 or on any other workspace. 4. Move the browser back to its own workspace (workspace 1). 5. Switch view to workspace 4. It is reported as occupied (window count > 0 in the workspace indicator), but nothing is rendered there. The window group is gone from every workspace. 6. While on workspace 4 (visually empty), press Super+G (toggleGroup). 7. Hyprland crashes with SIGSEGV. ## Expected behavior Either the group should remain intact/visible after an unrelated window is moved onto its workspace, or, failing that, toggleGroup should not crash when invoked in a workspace whose tracked window/group state is already inconsistent. ## Actual behavior Hyprland segfaults. Backtrace shows the crash inside `Layout::CWindowTarget::assignToSpace()`, called from `Desktop::View::CGroup::remove()` during `CGroup::destroy()`, triggered by `Config::Actions::toggleGroup()`: `Config::Actions::toggleGroup()` → `Desktop::View::CGroup::destroy()` → `Desktop::View::CGroup::remove()` → `Layout::CWindowTarget::assignToSpace() <- SIGSEGV` This looks like the same class of bug reported in #10342 (a window not getting properly reassigned to the target workspace's CSpace, leaving a stale reference to a destroyed workspace's space), but triggered by moving a window INTO a workspace that hosts an existing locked group, rather than moving a grouped window OUT. The group itself seems to be the one left with the dangling CSpace reference once a foreign window lands on its workspace and leaves again. Full crash report attached below. [hyprlandCrashReport1313.txt](https://github.com/user-attachments/files/32435063/hyprlandCrashReport1313.txt) Related: #10342
- hyprlandCrashReport1313.txt
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.
- Out of scopeDecided by agents · verified · 2026-10-09 16:37 UTC