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-1485GitHub issuePublicFixed

Symbolic tray icons with a dark fill render invisible: MultiEffect.colorization cannot lighten the source (Cryptomator)

Reported by relctx · filed Aug 25, 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

Symbolic tray icons with a dark fill render invisible: MultiEffect.colorization cannot lighten the source (Cryptomator)revision 1 · captured 2026-09-28 21:24 UTC via poll

System details

Omarchy 4.0.0, Hyprland 0.56.2, quickshell-git 0.3.0.r20.g28771c7-2, Qt 6.11.2, icon theme Yaru-blue-dark (yaru-icon-theme 26.04.5.1ubuntu-1), cryptomator 1.19.3-1.

What's wrong

Symbolic tray icons with a dark fill are drawn at close to the bar background colour, so they are invisible. The tray recolors symbolic icons to the bar foreground, but that recolor does not lighten a dark icon.

Cryptomator publishes IconName = org.cryptomator.Cryptomator.tray-symbolic. That SVG is filled #222222.

Measured on a dark theme:

  • bar background: #1C2128
  • bar foreground (wifi, battery, clock glyphs): #E8E6E3
  • rendered Cryptomator icon: #1D2128

Steps to reproduce

  1. Run a tray app whose IconName ends in -symbolic and whose SVG has a dark fill. cryptomator with showTrayIcon set is one case; its icon is /usr/share/icons/hicolor/symbolic/apps/org.cryptomator.Cryptomator.tray-symbolic.svg.
  2. Use a dark theme.
  3. The tray slot is occupied and clickable, but nothing is visible.

Cause

shell/plugins/bar/widgets/Tray.qml, TrayIcon component:

MultiEffect {
  anchors.fill: trayIconImage
  source: trayIconImage
  visible: trayIconRoot.symbolic
  colorization: 1.0
  colorizationColor: root.foreground
}

MultiEffect.colorization takes hue and saturation from colorizationColor but keeps the source's lightness, so it cannot lighten a dark source.

Source #222222, colorizationColor #E8E6E3, output #1D2128. If colorization replaced the colour, the output would be #E8E6E3.

The comment on iconIsSymbolic says symbolic icons "ship a fixed fill (often near-white)". Many are dark instead: Adwaita's symbolic fill is #2e3436, Cryptomator's is #222222.

Fix

Paint the foreground and use the icon as an alpha mask, so the source colour is discarded:

Rectangle {
  anchors.fill: trayIconImage
  color: root.foreground
  visible: trayIconRoot.symbolic
  layer.enabled: true
  layer.effect: MultiEffect {
    maskEnabled: true
    maskSource: trayIconImage
  }
}

Tested locally: the icon renders at #E8E6E3, the same as the wifi, battery and clock glyphs, and follows bar.foreground when the theme changes.

brightness: 1.0 before colorization also makes the icon visible, but it comes out near-white instead of the bar foreground.

View raw text
## System details

Omarchy 4.0.0, Hyprland 0.56.2, quickshell-git 0.3.0.r20.g28771c7-2, Qt 6.11.2, icon theme Yaru-blue-dark (yaru-icon-theme 26.04.5.1ubuntu-1), cryptomator 1.19.3-1.

## What's wrong

Symbolic tray icons with a dark fill are drawn at close to the bar background colour, so they are invisible. The tray recolors symbolic icons to the bar foreground, but that recolor does not lighten a dark icon.

Cryptomator publishes `IconName = org.cryptomator.Cryptomator.tray-symbolic`. That SVG is filled `#222222`.

Measured on a dark theme:

- bar background: `#1C2128`
- bar foreground (wifi, battery, clock glyphs): `#E8E6E3`
- rendered Cryptomator icon: `#1D2128`

## Steps to reproduce

1. Run a tray app whose `IconName` ends in `-symbolic` and whose SVG has a dark fill. `cryptomator` with `showTrayIcon` set is one case; its icon is `/usr/share/icons/hicolor/symbolic/apps/org.cryptomator.Cryptomator.tray-symbolic.svg`.
2. Use a dark theme.
3. The tray slot is occupied and clickable, but nothing is visible.

## Cause

`shell/plugins/bar/widgets/Tray.qml`, `TrayIcon` component:

```qml
MultiEffect {
  anchors.fill: trayIconImage
  source: trayIconImage
  visible: trayIconRoot.symbolic
  colorization: 1.0
  colorizationColor: root.foreground
}
```

`MultiEffect.colorization` takes hue and saturation from `colorizationColor` but keeps the source's lightness, so it cannot lighten a dark source.

Source `#222222`, `colorizationColor` `#E8E6E3`, output `#1D2128`. If colorization replaced the colour, the output would be `#E8E6E3`.

The comment on `iconIsSymbolic` says symbolic icons "ship a fixed fill (often near-white)". Many are dark instead: Adwaita's symbolic fill is `#2e3436`, Cryptomator's is `#222222`.

## Fix

Paint the foreground and use the icon as an alpha mask, so the source colour is discarded:

```qml
Rectangle {
  anchors.fill: trayIconImage
  color: root.foreground
  visible: trayIconRoot.symbolic
  layer.enabled: true
  layer.effect: MultiEffect {
    maskEnabled: true
    maskSource: trayIconImage
  }
}
```

Tested locally: the icon renders at `#E8E6E3`, the same as the wifi, battery and clock glyphs, and follows `bar.foreground` when the theme changes.

`brightness: 1.0` before `colorization` also makes the icon visible, but it comes out near-white instead of the bar foreground.

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

  • Fixed bypr/14661· confirmed

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:42 UTC