protonscr

Steam does not follow the StatusNotifierItem spec

steamclosed reviewedWindow manager
ValveSoftware/steam-for-linux#4092 · opened 2015-10-24 by TwoD · updated 2025-12-08 · 6 comments · github
TTwoD 2015-10-24 github

I posted this in the Steam community, but it went unanswered so trying here instead.
Original post:
http://steamcommunity.com/groups/SteamClientBeta/discussions/0/490121928354227314/

ISSUE

Steam causes Enlightenment 19 to crash repeatedly because it does not follow the StatusNotifierItem specification correctly.

OS

Arch Linux, Enlightenment 19.99 (Git master branch)

STEPS

Launch Steam (in a terminal to see output)

RESULTS:

E crashes (Reload with F1)
Steam logs this after every crash:
(steam:13106): libappindicator-WARNING **: Unable to connect to the Notification Watcher: GDBus.Error:org.freedesktop.DBus.Error.NoReply: Message recipient disconnected from message bus without replying
No icon in the systray. E no longer uses Xembed. Running another task tray with Xembed support shows the icon but still crashes E.

EXPECTED:

Steam should connect via D-BUS correctly and the systray icon should appear.

A bug was filed in with Enlightenment: T2763[phab.enlightenment.org] which lead to the devs implementing a workaround[phab.enlightenment.org] for misbehaving applications.
Their summary:

fix systray to work with spec-breaking apps, eg. steam

according to the StatusNotifierItem specification, applications
register "service org.freedesktop.StatusNotifierItem-PID-ID" on the
session bus, and then "must register the unique instance name
to the StatusNotifierWatcher".

some applications, such as steam, instead register the path that they
will run on (/org/ayatana/NotificationItem/steam) and then expect the
watcher to register the method call's send id bus: this is totally bogus.

to catch this, when registering the new item the enlightenment watcher must
first determine if the item is spec-conforming. if yes, proceed as normal.
if no, pretend the application knows what it's doing and try to make things
work as expected anyway

for more details, read the full spec here
http://www.freedesktop.org/wiki/Specifications/StatusNotifierItem

Kkisak-valve maintainer 2019-01-25 github

Hello @TwoD, are you still experiencing this issue on an up to date system?

TTwoD 2019-01-25 github

I'll investigate and check if it works without doing any explicit workarounds ASAP. Hopefully during this weekend.

Kkisak-valve maintainer 2019-03-08 github

Closing pending feedback.

TTwoD 2019-03-15 github

The icon does show up and works correctly for me and I've not seen any crashes I could trace to it. Its menu even seems a bit more stable rendering wise than it was before. I have been unable to determine if this is due to some change in Steam or the aforementioned workaround implemented by the Enlightenment team, but I agree on closing this for now.

PPh4ntomas 2025-12-08 github

Hello !

Sorry to comment on a 6 y.o. issue, but it seems this was never fixed.

I'm running Arch, and here is the steam version:

Steam Beta Branch:  Stable Client
Steam Version:  1763795278
Steam Client Build Date:  Sat, Nov 22 8:00 AM UTC -08:00
Steam Web Build Date:  Sat, Nov 22 7:35 AM UTC -08:00
Steam API Version:  SteamClient023

Here is what steam sends to the StatusNotifierWatcher (using busctl monitor):

Type=method_call  Endian=l  Flags=0  Version=1 Cookie=81  Timestamp="Mon 2025-12-08 22:07:41.969244 UTC"
  Sender=:1.144  Destination=:1.201  Path=/StatusNotifierWatcher  Interface=org.kde.StatusNotifierWatcher  Member=RegisterStatusNotifierItem
  UniqueName=:1.144
  MESSAGE "s" {
          STRING "/org/ayatana/NotificationItem/steam";
  };

According to the spec, this is wrong:

Register a StatusNotifierItem into the StatusNotifierWatcher, in the form of its full name on the session bus, for instance org.freedesktop.StatusNotifierItem-4077-1. [...]

The 'correct' behavior would be to register the name org.kde.StatusNotifierItem-<steampid>-<uid>, and use /StatusNotifierItem as the path of the object with the StatusNotifierItem interface.

Anyway, if anyone wonder how other tools make it work, it seems the consensus is to register the item as <unique_name><path> (here :1.144/org/ayatana/NotificationItem/steam).

Kkisak-valve maintainer 2025-12-08 github

Hello @Ph4ntomas, given the age of this issue report and the comment before yours, I think your feedback should be evaluated separately. Please open a new issue report with those details and the functional issue you're seeing.

Nothing extracted yet.