#9275·sway

swaybar tray draws a placeholder for an item that registers its bus name and object path as one string (Slack 4.52.155, Electron 44)

Author: mrmrwCreated Sep 8, 2026Updated Sep 8, 2026

Environment

  • sway 1.11, swaybar 1.11
  • Fedora Linux 44 (Workstation Edition), Wayland
  • swaybar is the only tray host running. tray_output *, icon_theme AdwaitaLegacy
  • Slack installed from Flathub as com.slack.Slack

What happens

Slack 4.52.155 (Electron 44, Flathub commit cc7ac4f3, 3 Sep 2026) shows a placeholder in the tray instead of its icon: the red sad face. Slack 4.51.180 (commit 5bae401d, 23 Jul 2026) shows the real icon. Nothing else changed between the two runs, and blueman's icon draws correctly throughout.

Other tray hosts have reported trouble with Electron 43.3 and later, so I compared what the two Slack versions put on the bus.

What I saw on the bus

dbus-monitor --session while restarting Slack.

4.51.180, which works. Slack registers from its unique bus name and passes an object path:

method call sender=:1.2120 -> destination=org.kde.StatusNotifierWatcher
  path=/StatusNotifierWatcher; interface=org.kde.StatusNotifierWatcher;
  member=RegisterStatusNotifierItem
   string "/org/chromium/StatusNotifierItem/1"

swaybar then reads properties at /org/chromium/StatusNotifierItem/1 and every call succeeds. No errors in the whole session.

4.52.155, which does not work. Slack takes the well-known name org.freedesktop.StatusNotifierItem-4-1 and passes that name and the object path in a single string:

method call sender=:1.1391 -> destination=org.kde.StatusNotifierWatcher
  path=/StatusNotifierWatcher; interface=org.kde.StatusNotifierWatcher;
  member=RegisterStatusNotifierItem
   string "org.freedesktop.StatusNotifierItem-4-1/StatusNotifierItem/1"

swaybar then reads properties at /StatusNotifierItem/1/StatusNotifierItem, and Slack answers every one with an error:

method call sender=:1.11 -> destination=org.freedesktop.StatusNotifierItem-4-1 serial=109
  path=/StatusNotifierItem/1/StatusNotifierItem;
  interface=org.freedesktop.DBus.Properties; member=Get
   string "org.kde.StatusNotifierItem"
   string "IconName"

error sender=:1.1391 -> destination=:1.11 error_name=org.freedesktop.DBus.Error.UnknownMethod
  reply_serial=109
   string "Method "Get" with signature "ss" on interface
   "org.freedesktop.DBus.Properties" doesn't exist"

The same error comes back for Status, IconName, IconPixmap, AttentionIconName, AttentionIconPixmap, ItemIsMenu and Menu.

The object path Slack exports is /StatusNotifierItem/1, without the second /StatusNotifierItem on the end. Asked there by hand, it answers normally:

bash
$ busctl --user get-property org.freedesktop.StatusNotifierItem-4-1 \
    /StatusNotifierItem/1 org.kde.StatusNotifierItem Status
s "Active"

$ busctl --user get-property org.freedesktop.StatusNotifierItem-4-1 \
    /StatusNotifierItem/1 org.kde.StatusNotifierItem Id
s "Slack_status_icon_1"

$ busctl --user get-property org.freedesktop.StatusNotifierItem-4-1 \
    /StatusNotifierItem/1 org.kde.StatusNotifierItem IconPixmap
a(iiay) 1 22 22 1936 ...

So the icon is there, as 22x22 pixels rather than a themed name, and Get works. The properties swaybar asks for exist; the path it asks at does not.

Reproducing it

One extra step is needed on a Flathub install, or the item never reaches the watcher at all. Slack 4.52.155 wants to own org.freedesktop.StatusNotifierItem-<pid>-<n>, and its sandbox grants no own policy for that name, so the request fails before any of the above happens:

$ flatpak run --log-session-bus com.slack.Slack
Filtering message due to arg0 org.freedesktop.StatusNotifierItem-4-1, policy: 0 (required 3)
[ERROR:dbus/bus.cc:570] Failed to get the ownership of
  org.freedesktop.StatusNotifierItem-4-1: org.freedesktop.DBus.Error.ServiceUnknown

Granting it lets Slack register, and then the placeholder appears. Note that flatpak rejects a wildcard here, because its wildcards split on dots, so the names have to be listed one by one:

flatpak override --user --own-name=org.freedesktop.StatusNotifierItem-4-1 com.slack.Slack

Then:

  1. Install com.slack.Slack 4.52.155 from Flathub and add the override above.
  2. Start sway with a bar that has a tray, and sign in to Slack.
  3. The tray shows the red sad face rather than the Slack icon.
  4. Downgrade with sudo flatpak update --commit=5bae401d6799cc1a5ecff8ff3645225797aa724a1db7b4fbfd69b1ec8a7d398d com.slack.Slack and restart it. The icon comes back, and the override is no longer needed.

What I have not established

I am reporting what I measured, not proposing a fix. I do not know whether the combined name/path string is something a host is meant to accept, or which side should change. I also have not tested sway master or any host other than swaybar.

I found the Electron side of this reported already, in electron/electron#52674 (closed, fix in 43.4.1), signalapp/Signal-Desktop#7992 (open) and Alexays/Waybar#5240, but no report against sway, which is why I am filing this.