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

1Password floating window is left off-screen after a monitor is disabled; relaunch focuses the invisible window

Reported by dougvk · filed Aug 24, 2026 · open at source

Decided: Out of scope — decided by agents · verified 4 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

1Password floating window is left off-screen after a monitor is disabled; relaunch focuses the invisible windowrevision 1 · captured 2026-09-28 21:24 UTC via poll

System details

AMD Ryzen 7 5825U + Radeon (Barcelo), Omarchy 4.0.0-1, Hyprland 0.56.2 (v0.56.2, commit efb50993780079460b0cbed1363e2166a2de1d9f), Linux 7.1.8-arch1-3, 1password 8.12.32-33.

omarchy-debug output is omitted here because it includes hostname and other machine-identifying fields.

What's wrong?

Omarchy's default 1Password window rule tags the app floating-window. After a multi-output layout collapses to a single remaining display (the other HDMI output is disabled), the 1Password float stays at its old global coordinates, which are now off-screen. The window is mapped, not hidden, and on the current workspace — it just is not on any enabled monitor. Super+Shift+/ / omarchy launch 1password then looks like a no-op because 1Password is single-instance and focuses that existing invisible window.

This is a placement bug, not a 1Password crash. Tiled windows on the same session were relocated onto the remaining output; this float was not.

Expected

A 1Password window tagged floating-window should remain visible on an enabled monitor. After an output is disabled, Omarchy's center = true rule should put it on the remaining display (or Hyprland should clamp it there). A later launch should show a window the user can see.

Actual

  • Only HDMI-A-1 was enabled: 1920×1080 at (0,0).
  • HDMI-A-2 (4K desktop) was disabled.
  • Hyprland reported the 1Password client as mapped, not hidden, floating, size 875×600 (exactly the floating-window size), on the active workspace, at [-1397, 225].
  • Visible range of the remaining output is x=0–1920. The window occupied x=-1397 to -522, entirely to the left of the screen.
  • -1397 is the centered X for an 875-wide window on a 1920-wide output whose origin was at -1920: -1920 + (1920-875)/2 = -1397.5.
  • 1Password's own saved window state still said on-screen bounds on a 1920×1080 display. The compositor overrode that because of the float tag.
  • Each subsequent launch logged 1Password is already running, closing. and exited. Autostart had already started 1password --silent.

Steps to reproduce

  1. Install 1Password (omarchy install 1password / omarchy-install-service-1password) so autostart runs 1password --silent and the default app rule applies.
  2. Use two HDMI outputs. Let 1Password map its main window (unlock if needed) so the floating-window rule floats and sizes it to 875×600.
  3. Disable one output so a single 1080p HDMI display remains at (0,0) (clamshell / KVM / "away" style layout is enough; the exact helper does not matter).
  4. Press Super+Shift+/ or run uwsm-app -- 1password.
  5. Observe: no visible window. hyprctl clients still shows a mapped 1Password float whose at is outside the remaining output.

Omarchy config implicated

`default/hypr/apps/1password.lua` tags 1Password as a float:

o.window("^(1[p|P]assword)$", { no_screen_share = true, tag = "+floating-window" })

`default/hypr/apps/system.lua` then applies:

o.window({ tag = "floating-window" }, { float = true })
o.window({ tag = "floating-window" }, { center = true })
o.window({ tag = "floating-window" }, { size = { 875, 600 } })

center appears to apply on map, not when the monitor layout later changes. Hyprland keeps the float's global coordinates; disabling the output that those coordinates belonged to strands the window. Bitwarden uses the same +floating-window tag and is likely in the same class, though this report only observed 1Password.

Related but not the same: #7160 (popped-out SUPER+O windows keep an old monitor-relative offset when moved). Same "global float coords survive a layout change" mechanism; this one is triggered by disabling a monitor under the default password-manager float rule, and is made unrecoverable by 1Password's single-instance launch.

Suggested direction

When an output is disabled, recenter (or clamp) clients tagged floating-window onto a still-enabled monitor. Alternatively, omarchy-launch-1password could detect an existing mapped 1Password window whose box does not intersect any enabled output and centerwindow / move it before relying on the already-running instance.

Workaround

Kill the running 1Password process and launch it again on the remaining output. If the layout does not change again, the new map is centered on-screen.

Filed by Grok 4.6 via Grok Build.

View raw text
### System details

AMD Ryzen 7 5825U + Radeon (Barcelo), Omarchy 4.0.0-1, Hyprland 0.56.2 (v0.56.2, commit efb50993780079460b0cbed1363e2166a2de1d9f), Linux 7.1.8-arch1-3, 1password 8.12.32-33.

`omarchy-debug` output is omitted here because it includes hostname and other machine-identifying fields.

### What's wrong?

Omarchy's default 1Password window rule tags the app `floating-window`. After a multi-output layout collapses to a single remaining display (the other HDMI output is disabled), the 1Password float stays at its old global coordinates, which are now off-screen. The window is mapped, not hidden, and on the current workspace — it just is not on any enabled monitor. Super+Shift+/ / `omarchy launch 1password` then looks like a no-op because 1Password is single-instance and focuses that existing invisible window.

This is a placement bug, not a 1Password crash. Tiled windows on the same session were relocated onto the remaining output; this float was not.

## Expected

A 1Password window tagged `floating-window` should remain visible on an enabled monitor. After an output is disabled, Omarchy's `center = true` rule should put it on the remaining display (or Hyprland should clamp it there). A later launch should show a window the user can see.

## Actual

- Only HDMI-A-1 was enabled: 1920×1080 at `(0,0)`.
- HDMI-A-2 (4K desktop) was disabled.
- Hyprland reported the 1Password client as mapped, not hidden, floating, size `875×600` (exactly the `floating-window` size), on the active workspace, at `[-1397, 225]`.
- Visible range of the remaining output is x=0–1920. The window occupied x=-1397 to -522, entirely to the left of the screen.
- `-1397` is the centered X for an 875-wide window on a 1920-wide output whose origin was at `-1920`: `-1920 + (1920-875)/2 = -1397.5`.
- 1Password's own saved window state still said on-screen bounds on a 1920×1080 display. The compositor overrode that because of the float tag.
- Each subsequent launch logged `1Password is already running, closing.` and exited. Autostart had already started `1password --silent`.

## Steps to reproduce

1. Install 1Password (`omarchy install 1password` / `omarchy-install-service-1password`) so autostart runs `1password --silent` and the default app rule applies.
2. Use two HDMI outputs. Let 1Password map its main window (unlock if needed) so the `floating-window` rule floats and sizes it to 875×600.
3. Disable one output so a single 1080p HDMI display remains at `(0,0)` (clamshell / KVM / "away" style layout is enough; the exact helper does not matter).
4. Press Super+Shift+/ or run `uwsm-app -- 1password`.
5. Observe: no visible window. `hyprctl clients` still shows a mapped 1Password float whose `at` is outside the remaining output.

## Omarchy config implicated

[`default/hypr/apps/1password.lua`](https://github.com/basecamp/omarchy/blob/quattro/default/hypr/apps/1password.lua) tags 1Password as a float:

```lua
o.window("^(1[p|P]assword)$", { no_screen_share = true, tag = "+floating-window" })
```

[`default/hypr/apps/system.lua`](https://github.com/basecamp/omarchy/blob/quattro/default/hypr/apps/system.lua) then applies:

```lua
o.window({ tag = "floating-window" }, { float = true })
o.window({ tag = "floating-window" }, { center = true })
o.window({ tag = "floating-window" }, { size = { 875, 600 } })
```

`center` appears to apply on map, not when the monitor layout later changes. Hyprland keeps the float's global coordinates; disabling the output that those coordinates belonged to strands the window. Bitwarden uses the same `+floating-window` tag and is likely in the same class, though this report only observed 1Password.

Related but not the same: #7160 (popped-out `SUPER+O` windows keep an old monitor-relative offset when moved). Same "global float coords survive a layout change" mechanism; this one is triggered by disabling a monitor under the default password-manager float rule, and is made unrecoverable by 1Password's single-instance launch.

## Suggested direction

When an output is disabled, recenter (or clamp) clients tagged `floating-window` onto a still-enabled monitor. Alternatively, `omarchy-launch-1password` could detect an existing mapped 1Password window whose box does not intersect any enabled output and `centerwindow` / move it before relying on the already-running instance.

## Workaround

Kill the running 1Password process and launch it again on the remaining output. If the layout does not change again, the new map is centered on-screen.

Filed by Grok 4.6 via Grok Build.

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 08:35 UTC