Skip to content

tray: "Invalid Status Notifier Item" for Electron 43+ SNI items using well-known bus names #5240

Description

@burninc0de

Update 2026-08-28 — Upstream Electron bug, not Waybar

This is not a Waybar/GDBus bug as originally diagnosed — thanks to @marcioflaviof and @boredland for narrowing it down.

Root cause: Electron 43.3+ registers SNI under org.freedesktop.StatusNotifierItem-PID-N but its Properties.GetAll/Get handler only answers on that well-known name, not on its unique name :1.XXX. Waybar's Gio::DBus::Proxy (correctly) resolves to the unique name -> get_cached_property_names() == [] -> Invalid Status Notifier Item.

Upstream: electron/electron#52674 — last good 43.2. Waybar broken from 43.3.0 through 43.4.x (e.g. Slack 43.4.0 fails on Waybar, see #5240 (comment)). On my Omarchy/Quickshell system 43.4.0-1 is still fine, latest 43.4.1-1 breaks — Quickshell's tray proxy apparently doesn't hit the unique-name path the same way.

Verified: Ping/Introspect OK on both names, GetAll FAIL on :1.XXX only.

Keeping open as tracker for Waybar workaround (Item::proxyReady() fallback/raw call or keep proxy on well-known name). See comments for workarounds.


Original report follows:

Environment:

  • Waybar: 0.15.0.r959.g084d874-1 (waybar-git)
  • Electron: 43.3.0
  • Hyprland: 0.56.2
  • Arch Linux, kernel 7.1.6

Reproduction:

  1. Install Obsidian (obsidian package, uses Electron 43) with the "Tray" community plugin v0.3.5 by dragonwocky
  2. Enable the tray icon in the plugin settings
  3. Observe: no tray icon appears in Waybar

What happens:
Waybar logs:

[error] Invalid Status Notifier Item: org.freedesktop.StatusNotifierItem-<PID>-<N>, /StatusNotifierItem

The item is registered on D-Bus under a well-known bus name (org.freedesktop.StatusNotifierItem-PID-N), which is Electron 43+'s new SNI naming convention. g_dbus_proxy_get_cached_property_names() returns empty for this well-known name, so proxyReady() sees no Id or Category and invalidates the item.

Why it's a Waybar/GDBus issue (not Electron):
The properties are fully accessible via raw D-Bus calls — busctl get-property and dbus-send GetAll both return valid Id, Category, IconPixmap, etc. The problem is specifically that GDBus's proxy caching fails for well-known names of the form org.freedesktop.StatusNotifierItem-*.

Why other tray icons work:
Electron ≤39 and other apps use unique connection names like :1.724/StatusNotifierItem. GDBus caches properties fine for those. Electron 43+ changed to well-known names, exposing this GDBus proxy bug.

Possible fix:
proxyReady() in src/modules/sni/item.cpp should fall back to fetching Id and Category via raw g_dbus_connection_call_sync when get_cached_property_names() returns empty.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions