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

System tray icon goes blank after an attention-icon round-trip (Qt SystemTrayIcon message)

Reported by Ant2210 · filed Sep 1, 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

System tray icon goes blank after an attention-icon round-trip (Qt SystemTrayIcon message)revision 1 · captured 2026-09-28 21:24 UTC via poll

Summary

A StatusNotifierItem that briefly enters NeedsAttention with an attention icon leaves its tray icon blank after the attention state clears. The tray slot keeps its size and stays clickable, but the icon is gone until the item is rebuilt (hide/show) or the shell restarts. Reproduced with EasyEffects 8.2.8 on omarchy 4.0.2 / quickshell 0.3.1.

Expected

After the attention icon disappears, the tray icon returns to the app's normal icon.

Actual

The icon goes blank. Hide + show the item (or omarchy restart shell) brings it back — so the icon data is intact; this is a re-render failure, not data loss.

Steps to reproduce

  1. EasyEffects 8.2.8 running, tray icon visible in the Omarchy bar tray.
  2. Click the EasyEffects tray icon → Output Presets → pick any preset.
  3. EasyEffects shows a 3s tray message (SystemTrayIcon.showMessage(…, SystemTrayIcon.Information, 3000)); the icon becomes an info/"i" glyph (SNI Status=NeedsAttention, AttentionIconName=dialog-information).
  4. After ~3s the message clears (Status → Active) and the EasyEffects icon goes blank and stays blank until the item is hidden/shown or the shell restarts.

Root cause

/usr/share/omarchy/shell/plugins/bar/widgets/Tray.qml, the TrayIcon component toggles Image.layer.enabled/visible based on symbolic-ness:

Image {
  ...
  visible: !trayIconRoot.symbolic
  layer.enabled: trayIconRoot.symbolic
}
MultiEffect {
  ...
  visible: trayIconRoot.symbolic
}

EasyEffects' icon (com.github.wwmm.easyeffects-symbolic) is symbolic → rendered through a hidden offscreen layer + MultiEffect tint. The attention icon dialog-information is not symbolic → plain visible image. Returning to the symbolic icon re-enables the layer with an unchanged image source, leaving the layer texture stale → blank. DBus side is healthy throughout (Status=Active, valid IconName + pixmaps); the blank only clears on item rebuild.

Proposed fix

Keep the layer persistent and switch only the tint:

Image {
  ...
  visible: false
  layer.enabled: true
}
MultiEffect {
  ...
  colorization: trayIconRoot.symbolic ? 1.0 : 0.0
  colorizationColor: root.foreground
}

Verified locally by cloning the widget to ~/.config/omarchy/plugins/ant.tray/ and applying the same change — the icon now survives the attention round-trip.

Environment

  • omarchy 4.0.2-1, quickshell 0.3.1-1, easyeffects 8.2.8-1, qt6-base 6.11.2-3, hyprland 0.56.2-1
  • Intel i7-1355U, Iris Xe + RTX 3050, Hyprland/Wayland
View raw text
### Summary
A StatusNotifierItem that briefly enters `NeedsAttention` with an attention icon leaves its tray icon **blank** after the attention state clears. The tray slot keeps its size and stays clickable, but the icon is gone until the item is rebuilt (hide/show) or the shell restarts. Reproduced with EasyEffects 8.2.8 on omarchy 4.0.2 / quickshell 0.3.1.

### Expected
After the attention icon disappears, the tray icon returns to the app's normal icon.

### Actual
The icon goes blank. Hide + show the item (or `omarchy restart shell`) brings it back — so the icon *data* is intact; this is a re-render failure, not data loss.

### Steps to reproduce
1. EasyEffects 8.2.8 running, tray icon visible in the Omarchy bar tray.
2. Click the EasyEffects tray icon → **Output Presets** → pick any preset.
3. EasyEffects shows a 3s tray message (`SystemTrayIcon.showMessage(…, SystemTrayIcon.Information, 3000)`); the icon becomes an info/"i" glyph (SNI `Status=NeedsAttention`, `AttentionIconName=dialog-information`).
4. After ~3s the message clears (`Status` → `Active`) and the EasyEffects icon goes blank and stays blank until the item is hidden/shown or the shell restarts.

### Root cause
`/usr/share/omarchy/shell/plugins/bar/widgets/Tray.qml`, the `TrayIcon` component toggles `Image.layer.enabled`/`visible` based on symbolic-ness:

```qml
Image {
  ...
  visible: !trayIconRoot.symbolic
  layer.enabled: trayIconRoot.symbolic
}
MultiEffect {
  ...
  visible: trayIconRoot.symbolic
}
```

EasyEffects' icon (`com.github.wwmm.easyeffects-symbolic`) is symbolic → rendered through a hidden offscreen layer + `MultiEffect` tint. The attention icon `dialog-information` is not symbolic → plain visible image. Returning to the symbolic icon re-enables the layer with an unchanged image source, leaving the layer texture stale → blank. DBus side is healthy throughout (`Status=Active`, valid `IconName` + pixmaps); the blank only clears on item rebuild.

### Proposed fix
Keep the layer persistent and switch only the tint:

```qml
Image {
  ...
  visible: false
  layer.enabled: true
}
MultiEffect {
  ...
  colorization: trayIconRoot.symbolic ? 1.0 : 0.0
  colorizationColor: root.foreground
}
```

Verified locally by cloning the widget to `~/.config/omarchy/plugins/ant.tray/` and applying the same change — the icon now survives the attention round-trip.

### Environment
- omarchy 4.0.2-1, quickshell 0.3.1-1, easyeffects 8.2.8-1, qt6-base 6.11.2-3, hyprland 0.56.2-1
- Intel i7-1355U, Iris Xe + RTX 3050, Hyprland/Wayland

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 10:23 UTC