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.
Alt+Shift+Tab cycles between only two windows
Reported by AvrumFeldman · filed Aug 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
- CPU: Intel Core i5-1145G7
- GPU: Intel Iris Xe Graphics (TigerLake-LP GT2)
- Omarchy: 4.0.0-1
- omarchy-settings: 4.0.0-1
- Hyprland: 0.56.2-1
- Stock Omarchy Alt+Tab bindings; no user override
What's wrong?
With three or more windows open on one workspace, Alt+Shift+Tab alternates between only two windows instead of cycling backward through every window. Alt+Tab correctly cycles forward through all windows.
Steps to reproduce
- Open three tiled windows on one workspace.
- Press
Alt+Tabrepeatedly: focus visits all three windows. - Press
Alt+Shift+Tabrepeatedly: focus alternates between two windows and never reaches the third.
Expected: Alt+Shift+Tab traverses the same window cycle as Alt+Tab, in reverse.
Actual: it toggles between two windows.
Isolation / likely cause
The shipped binding defines two actions for each shortcut:
o.bind("ALT + TAB", "Focus on next window", hl.dsp.window.cycle_next())
o.bind("ALT + SHIFT + TAB", "Focus on previous window", hl.dsp.window.cycle_next({ next = false }))
o.bind("ALT + TAB", "Reveal active window on top", hl.dsp.window.bring_to_top())
o.bind("ALT + SHIFT + TAB", "Reveal active window on top", hl.dsp.window.bring_to_top())I isolated the actions using Hyprland's Lua dispatcher:
- Repeating only
hl.dsp.window.cycle_next({ next = false })cycles through all three windows correctly. - Repeating reverse
cycle_nextfollowed bybring_to_top()reproduces the two-window loop. - Forward
cycle_next()followed bybring_to_top()still cycles through all three.
This suggests that raising the newly focused window changes the ordering used by the next reverse traversal, making it return to the former window. Removing the reverse shortcut's bring_to_top() action makes reverse cycling work, though floating-window stacking may need a different solution.
View raw text
### System details
- CPU: Intel Core i5-1145G7
- GPU: Intel Iris Xe Graphics (TigerLake-LP GT2)
- Omarchy: 4.0.0-1
- omarchy-settings: 4.0.0-1
- Hyprland: 0.56.2-1
- Stock Omarchy Alt+Tab bindings; no user override
### What's wrong?
With three or more windows open on one workspace, `Alt+Shift+Tab` alternates between only two windows instead of cycling backward through every window. `Alt+Tab` correctly cycles forward through all windows.
### Steps to reproduce
1. Open three tiled windows on one workspace.
2. Press `Alt+Tab` repeatedly: focus visits all three windows.
3. Press `Alt+Shift+Tab` repeatedly: focus alternates between two windows and never reaches the third.
Expected: `Alt+Shift+Tab` traverses the same window cycle as `Alt+Tab`, in reverse.
Actual: it toggles between two windows.
### Isolation / likely cause
The shipped binding defines two actions for each shortcut:
```lua
o.bind("ALT + TAB", "Focus on next window", hl.dsp.window.cycle_next())
o.bind("ALT + SHIFT + TAB", "Focus on previous window", hl.dsp.window.cycle_next({ next = false }))
o.bind("ALT + TAB", "Reveal active window on top", hl.dsp.window.bring_to_top())
o.bind("ALT + SHIFT + TAB", "Reveal active window on top", hl.dsp.window.bring_to_top())
```
Source: https://github.com/basecamp/omarchy/blob/945549699026df6c888a6b1bd4e06fbf55a67595/default/hypr/bindings/tiling.lua#L44-L47
I isolated the actions using Hyprland's Lua dispatcher:
- Repeating only `hl.dsp.window.cycle_next({ next = false })` cycles through all three windows correctly.
- Repeating reverse `cycle_next` followed by `bring_to_top()` reproduces the two-window loop.
- Forward `cycle_next()` followed by `bring_to_top()` still cycles through all three.
This suggests that raising the newly focused window changes the ordering used by the next reverse traversal, making it return to the former window. Removing the reverse shortcut's `bring_to_top()` action makes reverse cycling work, though floating-window stacking may need a different solution.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 04:51 UTC