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

4.0.3: third-party bar-plugin popups become stuck overlays that cannot be dismissed

Reported by morindat · filed Sep 9, 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

4.0.3: third-party bar-plugin popups become stuck overlays that cannot be dismissedrevision 1 · captured 2026-09-28 21:23 UTC via poll

Summary

After upgrading Omarchy from 4.0.2-1 to 4.0.3-1, popups/panels opened from
third-party/user-installed bar plugins become stuck overlays. Once a plugin popup is
open it cannot be dismissed: Escape does nothing, clicking outside does nothing, and
clicking the trigger icon again does nothing. The overlay stays visible above normal
windows until logout/reboot. Restarting the Omarchy shell clears it because the overlay is
owned by the Quickshell omarchy-shell process.

Built-in first-party panels (network/audio/power/etc.) do not appear to be affected.

Steps to reproduce

  1. Upgrade from Omarchy 4.0.2-1 to 4.0.3-1.
  2. Have a third-party/user-installed bar plugin that opens a popup/panel enabled, for

example the calendar-clock clone matteodevenuto.clock.
3. Start a fresh session, or run omarchy restart shell after the upgrade.
4. Click the plugin's bar icon to open its popup.
5. Try dismissing it with Escape, by clicking outside, and by clicking the icon again.

Expected behavior

The popup dismisses normally with Escape / outside click / re-clicking the trigger, like
first-party panels.

Actual behavior

The popup opens and remains mapped above normal windows. Escape, outside clicks, and
re-clicking the trigger do not close it. The only reliable way found to clear it is logging
out/rebooting. This did not happen on 4.0.2-1.

Suspected cause

4.0.3 changed shell/plugins/bar/Bar.qml injectProps() so third-party bar widgets
receive a new scoped PluginBarApi instead of the real Bar root. The popup/panel
plumbing and third-party host widgets were written against the old bar surface; APIs the
facade does not expose are silently missing, which can leave a KeyboardPanel/Panel
open with broken dismissal/coordination.

A fresh 4.0.3-1 session already logs QML compatibility errors from installed
third-party widgets:

Sep 09 19:12:11 omarchy-shell[1085]: WARN scene: @plugins/bar/Bar.qml[2004:-1]: TypeError: Cannot assign to read-only property "moduleName"
Sep 09 19:12:18 omarchy-shell[1085]: WARN scene: QML Connections at file:///home/lone_wolf/.config/omarchy/plugins/lone_wolf.plugin-hider/PluginHider.qml[72:9]: Detected function "onBarConfigChanged" in Connections element. This is probably intended to be a signal handler but no signal of the target matches the name.
Sep 09 19:12:20 omarchy-shell[1085]: WARN scene: file:///home/lone_wolf/.config/omarchy/plugins/jrmmhm.pocket/BarWidget.qml[89:-1]: TypeError: Cannot read property 'length' of undefined
Sep 09 19:12:20 omarchy-shell[1085]: WARN scene: file:///home/lone_wolf/.config/omarchy/plugins/jrmmhm.pocket/BarWidget.qml[126:-1]: TypeError: Cannot read property 'length' of undefined

Related issues

This looks like part of the 4.0.2 → 4.0.3 third-party plugin API regression cluster:

  • #10863 — publicPluginManifest() strips __sourceDir, breaking third-party plugins that locate their own files
  • #10888 — no way for a third-party plugin to enumerate plugins
  • #10907 — third-party plugins lost read access to their own shell.json entry
  • #10908 — third-party menu clones get null appLibrary
  • #10929 — PluginBarApi drops the bar drag API
  • #10941 — bar widget popups leave a stale ghost frame on screen after closing (different symptom, same 4.0.3 popup area)

Workaround

omarchy restart shell

clears the stuck overlay without logging out (not yet tested by the reporter while stuck;
logging out was used previously).

System

Omarchy4.0.3-1 (broken; 4.0.2-1 worked)
Quickshell0.3.1-1
Hyprland0.56.2
Kernel7.2.3-arch1-3
GPUIntel UHD Graphics (Tiger Lake), i915
HardwareASUS P1412CEA laptop
DisplaySingle monitor, eDP-1
View raw text
## Summary

After upgrading Omarchy from **4.0.2-1** to **4.0.3-1**, popups/panels opened from
**third-party/user-installed bar plugins** become stuck overlays. Once a plugin popup is
open it cannot be dismissed: Escape does nothing, clicking outside does nothing, and
clicking the trigger icon again does nothing. The overlay stays visible above normal
windows until logout/reboot. Restarting the Omarchy shell clears it because the overlay is
owned by the Quickshell `omarchy-shell` process.

Built-in first-party panels (network/audio/power/etc.) do **not** appear to be affected.

## Steps to reproduce

1. Upgrade from Omarchy 4.0.2-1 to 4.0.3-1.
2. Have a third-party/user-installed bar plugin that opens a popup/panel enabled, for
   example the calendar-clock clone `matteodevenuto.clock`.
3. Start a fresh session, or run `omarchy restart shell` after the upgrade.
4. Click the plugin's bar icon to open its popup.
5. Try dismissing it with Escape, by clicking outside, and by clicking the icon again.

## Expected behavior

The popup dismisses normally with Escape / outside click / re-clicking the trigger, like
first-party panels.

## Actual behavior

The popup opens and remains mapped above normal windows. Escape, outside clicks, and
re-clicking the trigger do not close it. The only reliable way found to clear it is logging
out/rebooting. This did not happen on 4.0.2-1.

## Suspected cause

4.0.3 changed `shell/plugins/bar/Bar.qml` `injectProps()` so third-party bar widgets
receive a new scoped `PluginBarApi` instead of the real `Bar` root. The popup/panel
plumbing and third-party host widgets were written against the old bar surface; APIs the
facade does not expose are silently missing, which can leave a `KeyboardPanel`/`Panel`
open with broken dismissal/coordination.

A fresh 4.0.3-1 session already logs QML compatibility errors from installed
third-party widgets:

```text
Sep 09 19:12:11 omarchy-shell[1085]: WARN scene: @plugins/bar/Bar.qml[2004:-1]: TypeError: Cannot assign to read-only property "moduleName"
Sep 09 19:12:18 omarchy-shell[1085]: WARN scene: QML Connections at file:///home/lone_wolf/.config/omarchy/plugins/lone_wolf.plugin-hider/PluginHider.qml[72:9]: Detected function "onBarConfigChanged" in Connections element. This is probably intended to be a signal handler but no signal of the target matches the name.
Sep 09 19:12:20 omarchy-shell[1085]: WARN scene: file:///home/lone_wolf/.config/omarchy/plugins/jrmmhm.pocket/BarWidget.qml[89:-1]: TypeError: Cannot read property 'length' of undefined
Sep 09 19:12:20 omarchy-shell[1085]: WARN scene: file:///home/lone_wolf/.config/omarchy/plugins/jrmmhm.pocket/BarWidget.qml[126:-1]: TypeError: Cannot read property 'length' of undefined
```

## Related issues

This looks like part of the 4.0.2 → 4.0.3 third-party plugin API regression cluster:

- #10863 — `publicPluginManifest()` strips `__sourceDir`, breaking third-party plugins that locate their own files
- #10888 — no way for a third-party plugin to enumerate plugins
- #10907 — third-party plugins lost read access to their own shell.json entry
- #10908 — third-party menu clones get null `appLibrary`
- #10929 — `PluginBarApi` drops the bar drag API
- #10941 — bar widget popups leave a stale ghost frame on screen after closing (different symptom, same 4.0.3 popup area)

## Workaround

```bash
omarchy restart shell
```

clears the stuck overlay without logging out (not yet tested by the reporter while stuck;
logging out was used previously).

## System

| | |
|---|---|
| Omarchy | 4.0.3-1 (broken; 4.0.2-1 worked) |
| Quickshell | 0.3.1-1 |
| Hyprland | 0.56.2 |
| Kernel | 7.2.3-arch1-3 |
| GPU | Intel UHD Graphics (Tiger Lake), i915 |
| Hardware | ASUS P1412CEA laptop |
| Display | Single monitor, eDP-1 |

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 11:19 UTC