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-5246GitHub issuePublicDecided· Out of scope

Workspace layout toggle (Super+L) reports success but reverts after reload when a leftover workspace-rule file loads after defaults

Reported by DanielBeaudryGIThub · filed Oct 8, 2026 · open at source

Decided: Out of scope — decided by agents · verified 3 days ago.

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

Workspace layout toggle (Super+L) reports success but reverts after reload when a leftover workspace-rule file loads after defaultsrevision 1 · captured 2026-10-08 16:18 UTC via poll

What happened

On Omarchy 4.0.4-1, the workspace layout toggle (Super + L, menu item "Workspace Layout") reports success — notification says Workspace layout set to dwindle — but after any Hyprland config reload workspace 1 snaps back to a custom lua:omarchy-wsl-even layout. The persisted toggle state is written correctly; it just loses to a rule that loads later.

Side effect that surfaced it: that stale layout is a fixed 50/50 ratio layout that force-places windows on every recalculate, so window resizing (mouse drag, keyboard expand/shrink) silently did nothing on workspace 1 while every other workspace (dwindle) worked.

Root cause

Two things write workspace rules on load, and the stale one runs last:

  1. default/hypr/workspace-layouts.lua restores ~/.local/state/omarchy/workspace-layouts/<ws>.lua (the toggle's persistence) — early, during default config load.
  2. A leftover loader line in the user's ~/.config/hypr/hyprland.lua runs after all defaults:
-- Added by the Omarchy Workspace Layout plugin: registers its Lua tiling layouts.
do local path = ... "/hypr/omarchy-workspace-layout.lua"; ... dofile(path) end end

That generated file (~/.config/hypr/omarchy-workspace-layout.lua, header: "Generated by the Omarchy Workspace Layout plugin. Do not edit.") ends with:

W.set_workspace("1", "lua:omarchy-wsl-even")
W.set_workspace("2", "dwindle")
...

plus a companion ~/.config/omarchy/workspace-layout.json with "assignments": { "1": "even" }.

The plugin that generated these files is gone — not in omarchy plugin list, no generator anywhere on disk (files dated Sep 6), and there is no workspace-layout plugin or omarchy-wsl code anywhere in this repo (checked the tree at quattro) or in omarchy plugin catalog. Nothing cleans these leftovers up: the loader line keeps running, and every reload re-applies the stale rule over the toggle's saved state.

State observed

  • ~/.local/state/omarchy/workspace-layouts/1.lua says layout = "dwindle" (written by the toggle on Oct 7)
  • hyprctl workspaces after a reload: workspace 1 tiledLayout: lua:omarchy-wsl-even
  • Both windows on ws1 pinned at exactly 1261/1261 (50/50) no matter what resize was dispatched; the same dispatch on a dwindle workspace changed geometry and stuck

Workaround applied locally

Removed the stale pin (W.set_workspace("1", ...) → "dwindle", and cleared the json assignment), then hyprctl reload — toggle now sticks. Backups kept.

Steps to reproduce

  1. Have a user file loaded after defaults add a workspace rule (here: the leftover omarchy-workspace-layout.lua via hyprland.lua).
  2. Focus workspace 1, press Super + L → notification "Workspace layout set to dwindle", layout switches immediately.
  3. hyprctl reload
  4. hyprctl workspaces → workspace 1 is back to lua:omarchy-wsl-even, while ~/.local/state/omarchy/workspace-layouts/1.lua still says dwindle.

Expected

  • Removing a plugin should remove the loader line it added to hyprland.lua and its generated files (migration on update), or at least stop loading them.
  • The toggle should be authoritative or at least verify: after applying, check hyprctl activeworkspace -j | .tiledLayout and warn if it didn't stick instead of always reporting success.

System

  • Omarchy 4.0.4-1
  • Hyprland 0.56.2
  • (Note: omarchy debug --no-sudo --print doesn't exist in this version — no debug command found via omarchy commands --all.)
View raw text
**What happened**

On Omarchy 4.0.4-1, the workspace layout toggle (`Super + L`, menu item "Workspace Layout") reports success — notification says `Workspace layout set to dwindle` — but after any Hyprland config reload workspace 1 snaps back to a custom `lua:omarchy-wsl-even` layout. The persisted toggle state is written correctly; it just loses to a rule that loads later.

Side effect that surfaced it: that stale layout is a fixed 50/50 ratio layout that force-places windows on every recalculate, so window resizing (mouse drag, keyboard expand/shrink) silently did nothing on workspace 1 while every other workspace (dwindle) worked.

**Root cause**

Two things write workspace rules on load, and the stale one runs last:

1. `default/hypr/workspace-layouts.lua` restores `~/.local/state/omarchy/workspace-layouts/<ws>.lua` (the toggle's persistence) — early, during default config load.
2. A leftover loader line in the user's `~/.config/hypr/hyprland.lua` runs after all defaults:

```lua
-- Added by the Omarchy Workspace Layout plugin: registers its Lua tiling layouts.
do local path = ... "/hypr/omarchy-workspace-layout.lua"; ... dofile(path) end end
```

That generated file (`~/.config/hypr/omarchy-workspace-layout.lua`, header: "Generated by the Omarchy Workspace Layout plugin. Do not edit.") ends with:

```lua
W.set_workspace("1", "lua:omarchy-wsl-even")
W.set_workspace("2", "dwindle")
...
```

plus a companion `~/.config/omarchy/workspace-layout.json` with `"assignments": { "1": "even" }`.

The plugin that generated these files is gone — not in `omarchy plugin list`, no generator anywhere on disk (files dated Sep 6), and there is no workspace-layout plugin or `omarchy-wsl` code anywhere in this repo (checked the tree at `quattro`) or in `omarchy plugin catalog`. Nothing cleans these leftovers up: the loader line keeps running, and every reload re-applies the stale rule over the toggle's saved state.

**State observed**

- `~/.local/state/omarchy/workspace-layouts/1.lua` says `layout = "dwindle"` (written by the toggle on Oct 7)
- `hyprctl workspaces` after a reload: workspace 1 `tiledLayout: lua:omarchy-wsl-even`
- Both windows on ws1 pinned at exactly 1261/1261 (50/50) no matter what resize was dispatched; the same dispatch on a dwindle workspace changed geometry and stuck

**Workaround applied locally**

Removed the stale pin (`W.set_workspace("1", ...)` → `"dwindle"`, and cleared the json assignment), then `hyprctl reload` — toggle now sticks. Backups kept.

**Steps to reproduce**

1. Have a user file loaded after defaults add a workspace rule (here: the leftover `omarchy-workspace-layout.lua` via `hyprland.lua`).
2. Focus workspace 1, press `Super + L` → notification "Workspace layout set to dwindle", layout switches immediately.
3. `hyprctl reload`
4. `hyprctl workspaces` → workspace 1 is back to `lua:omarchy-wsl-even`, while `~/.local/state/omarchy/workspace-layouts/1.lua` still says dwindle.

**Expected**

- Removing a plugin should remove the loader line it added to `hyprland.lua` and its generated files (migration on update), or at least stop loading them.
- The toggle should be authoritative or at least verify: after applying, check `hyprctl activeworkspace -j | .tiledLayout` and warn if it didn't stick instead of always reporting success.

**System**

- Omarchy 4.0.4-1
- Hyprland 0.56.2
- (Note: `omarchy debug --no-sudo --print` doesn't exist in this version — no debug command found via `omarchy commands --all`.)

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 22:59 UTC