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

herdr desktop notifications show with no icon or app identity

Reported by mattroe · filed Oct 5, 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

herdr desktop notifications show with no icon or app identityrevision 1 · captured 2026-10-05 21:47 UTC via poll

Summary

Omarchy packages herdr and ships its config, but herdr's desktop notifications show in the Omarchy shell with no icon and nothing identifying them as herdr. They are also treated as throwaway noise, so an agent finishing while do-not-disturb is on never reaches notification history.

Steps to reproduce

  1. Set [ui.toast] delivery = "system" in ~/.config/herdr/config.toml and run herdr server reload-config.
  2. Run herdr notification show "test" --body "hello", or let an agent finish in a background tab.

What happens

herdr 0.8.2 posts through a bare notify-send. Captured with dbus-monitor:

member=Notify
   string "notify-send"      # app_name
   uint32 0
   string ""                 # app_icon
   string "herdr icon probe"
   string "checking what herdr sends"
   hints: urgency=1, sender-pid

In the shell that means:

  1. No icon. plugins/notifications/components/NotificationCard.qml renders image or iconSource(appIcon) only, and herdr supplies neither.
  2. No identity. The app name is notify-send, so isEphemeral in plugins/notifications/Service.qml classes it as ephemeral. Under do-not-disturb a "finished" or "needs input" toast is silenced and not recorded.

Suggested changes

  • Move the packaged herdr from 0.8.2 to 0.9.x. Since then src/platform/linux.rs runs notify-send --app-name Herdr -- <title> <body>, which fixes the identity and the ephemeral classification.
  • Ship a herdr icon. The herdr package installs only the binary and a licence; upstream has assets/logo.svg.
  • Have the shell show that icon for notifications whose app name is Herdr, since herdr passes no --icon even on 0.9.3. A lookup from app name to icon when app_icon is empty would do it.

Workaround

delivery = "terminal" routes the notification through Ghostty, which gives it Ghostty's icon and a real app name.

Versions

  • omarchy 4.0.4-1
  • herdr 0.8.2-1 (omarchy repo)
  • quickshell 0.3.1-1
  • libnotify 0.8.8-1
View raw text
## Summary

Omarchy packages herdr and ships its config, but herdr's desktop notifications show in the Omarchy shell with no icon and nothing identifying them as herdr. They are also treated as throwaway noise, so an agent finishing while do-not-disturb is on never reaches notification history.

## Steps to reproduce

1. Set `[ui.toast] delivery = "system"` in `~/.config/herdr/config.toml` and run `herdr server reload-config`.
2. Run `herdr notification show "test" --body "hello"`, or let an agent finish in a background tab.

## What happens

herdr 0.8.2 posts through a bare `notify-send`. Captured with `dbus-monitor`:

```
member=Notify
   string "notify-send"      # app_name
   uint32 0
   string ""                 # app_icon
   string "herdr icon probe"
   string "checking what herdr sends"
   hints: urgency=1, sender-pid
```

In the shell that means:

1. No icon. `plugins/notifications/components/NotificationCard.qml` renders `image` or `iconSource(appIcon)` only, and herdr supplies neither.
2. No identity. The app name is `notify-send`, so `isEphemeral` in `plugins/notifications/Service.qml` classes it as ephemeral. Under do-not-disturb a "finished" or "needs input" toast is silenced and not recorded.

## Suggested changes

- Move the packaged herdr from 0.8.2 to 0.9.x. Since then `src/platform/linux.rs` runs `notify-send --app-name Herdr -- <title> <body>`, which fixes the identity and the ephemeral classification.
- Ship a herdr icon. The herdr package installs only the binary and a licence; upstream has `assets/logo.svg`.
- Have the shell show that icon for notifications whose app name is `Herdr`, since herdr passes no `--icon` even on 0.9.3. A lookup from app name to icon when `app_icon` is empty would do it.

## Workaround

`delivery = "terminal"` routes the notification through Ghostty, which gives it Ghostty's icon and a real app name.

## Versions

- omarchy 4.0.4-1
- herdr 0.8.2-1 (omarchy repo)
- quickshell 0.3.1-1
- libnotify 0.8.8-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 21:42 UTC