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)
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:
$ 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.ServiceUnknownGranting 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.SlackThen:
- Install
com.slack.Slack4.52.155 from Flathub and add the override above. - Start sway with a bar that has a tray, and sign in to Slack.
- The tray shows the red sad face rather than the Slack icon.
- Downgrade with
sudo flatpak update --commit=5bae401d6799cc1a5ecff8ff3645225797aa724a1db7b4fbfd69b1ec8a7d398d com.slack.Slackand 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.
Source: swaywm/sway