Element-web: Riot Desktop system tray icon invisible

Created on 26 Feb 2020  路  45Comments  路  Source: vector-im/element-web

Description

Since a week or so, the system tray icon of Riot Desktop is not displayed anymore under i3/i3bar.

Steps to reproduce

  • Launch Riot Desktop

Version information

  • Platform: desktop
  • OS: Arch Linux, i3, i3bar
  • riot-web Version: 1.5.10
  • electron Version: 8.0.1
bug platform specific rageshake electron trayicon upstream-issue

Most helpful comment

@turt2live Just to be sure you understand what is going on, this is never going to be fixed in a future version. Chromium upstream removed support for XEmbed tray icons, leaving only StatusNotifierIcon and AppIndicator, and that has now percolated to Electron. DE/traybars have to support those standards, that鈥檚 all.

All 45 comments

+1 happend a week ago with Awesome WM:

  • Platform: desktop.
  • OS: Arch Linux, Awesome WM.
  • riot-web Version: 1.5.10-1
  • electron Version: 8.0.1

+1

  • Platform: desktop
  • OS: Arch Linux, Xfce 4.14
  • riot-web Version: 1.5.10-1
  • electron Version: 8.0.2

I attached a rageshake to this issue.

The issue persists after updating electron to 8.0.2

The issue appears to be caused by Electron 8.

Given the above, we're reverting to an older version of electron - release should be out tomorrow. Will leave this open to track the electron 8 issues.

I encountered this issue and resolved it by installing and activating the "appindicator" extension on my gnome-shell desktop.

Are you sure about this change? Riot 1.5.11 on Electron 8.0.1 tray icon works just fine in KDE openSUSE - seems first time it looks and works fine - first completely fixed Electron version. Are You sure 7.x will work and look fine with correct icon resolution?

I have the AppIndicator extension as well but it only works for a little while. After a few minutes the icon disappears and I see this crash in my logs:

Mar 04 06:16:45 wheatley gnome-shell[813]: JS ERROR: Exception in callback for signal: property-changed: GdkPixbuf.PixbufError: Unrecognized image file fo>
                                           _updateImage@/home/dan/.local/share/gnome-shell/extensions/[email protected]/dbusMenu.js:6>
                                           _onPropertyChanged@/home/dan/.local/share/gnome-shell/extensions/[email protected]/dbusMen>
                                           _emit@resource:///org/gnome/gjs/modules/signals.js:135:27
                                           property_set@/home/dan/.local/share/gnome-shell/extensions/[email protected]/dbusMenu.js:1>
                                           _endRequestProperties/<@/home/dan/.local/share/gnome-shell/extensions/[email protected]/db>
                                           _endRequestProperties@/home/dan/.local/share/gnome-shell/extensions/[email protected]/dbus>
                                           asyncCallback@resource:///org/gnome/gjs/modules/overrides/Gio.js:132:13
Mar 04 06:16:45 wheatley gnome-shell[813]: JS ERROR: Exception in callback for signal: property-changed: GdkPixbuf.PixbufError: Unrecognized image file fo>
                                           _updateImage@/home/dan/.local/share/gnome-shell/extensions/[email protected]/dbusMenu.js:6>
                                           _onPropertyChanged@/home/dan/.local/share/gnome-shell/extensions/[email protected]/dbusMen>
                                           _emit@resource:///org/gnome/gjs/modules/signals.js:135:27
                                           property_set@/home/dan/.local/share/gnome-shell/extensions/[email protected]/dbusMenu.js:1>
                                           _endRequestProperties/<@/home/dan/.local/share/gnome-shell/extensions/[email protected]/db>
                                           _endRequestProperties@/home/dan/.local/share/gnome-shell/extensions/[email protected]/dbus>
                                           asyncCallback@resource:///org/gnome/gjs/modules/overrides/Gio.js:132:13

Arch Linux with gnome shell.

Riot 1.5.11 on Electron 8.0.1 tray icon works just fine in KDE openSUSE - seems first time it looks and works fine

It really depends on the type of Linux system used. If used Linux system/DE/panel/tray-plugin doesn't support Status Notifier tray icons standard then you won't get the tray icon as @electron since v8 switched to use Status Notifier tray icons (the change actually came from the upstream project named @chromium).

@MazeChaZer, i3 related stuff (apparently there is no Status Notifier tray icons support for i3 implemented yet):

@kujaw

OS: Arch Linux, Xfce 4.14

You could try xfce4-statusnotifier-plugin as noted in https://github.com/electron/electron/issues/21445#issuecomment-565710027

Like I said icon become terrible in 1.5.12 (Electron 7):

Screenshot_20200304_190913

It was ok in 1.5.11 (Electron 8 where icon scaling was fixed):

Screenshot_20200304_191353

Please revert!!!

@akontsevich we're consciously not going to upgrade to electron 8 at this time, given people's icons are going missing. We'd rather they were blurry than not there.

For now let's keep this issue about the lack of icon rather than KDE's blurry icons.

Was so many hopes on Riot, for now it is completely unusable because of such bugs, so using Viber instead which works out of the box with encryption, etc.

we're consciously not going to upgrade to electron 8 at this time, given people's icons are going missing. We'd rather they were blurry than not there.

Not upgrading Electron or other major deps might potentially lead to sticking with security issues that were revealed and fixed in newer @chromium / @electron versions.

Btw, in some cases Electron v8 makes tray icons blurry on HiDPI Linux desktops https://github.com/electron/electron/issues/22207

We're aware of the risks. Please let's keep this issue about missing icons.

@turt2live Just to be sure you understand what is going on, this is never going to be fixed in a future version. Chromium upstream removed support for XEmbed tray icons, leaving only StatusNotifierIcon and AppIndicator, and that has now percolated to Electron. DE/traybars have to support those standards, that鈥檚 all.

@turt2live Just to be sure you understand what is going on, this is never going to be fixed in a future version. Chromium upstream removed support for XEmbed tray icons, leaving only StatusNotifierIcon and AppIndicator, and that has now percolated to Electron. DE/traybars have to support those standards, that鈥檚 all.

So let's move to Electron 8 back!

So let's move to Electron 8 back!

we will for riot 1.6

Thanks @ArchangeGabriel, we'll look into what we can do about it.

For now I'm going to lock this because we're well aware of the issue, have enough links to build up enough context, and this is turning into a campaign trail instead of information gathering.

https://git.sr.ht/~steef/snixembed allows you to proxy StatusNotifierItems as XEmbedded systemtray-spec icons

Issue tracking SNI/libappindicator support for the flatpak build: https://github.com/flathub/im.riot.Riot/issues/100

Please note that at least on Xfce, the riot-update from 1.5.x to 1.6 broke the status-notification icon (again). I use the official Deb package and run Debian Buster and have the xfce4-statusnotifier-plugin installed and running (;, as it is mentioned in the corresponding electron issue.
On mate-panel it is also not displayed.
Thanks

+1
tray icon is gone

riot-web: 1.6.0
Debian 10
Mate 1.20.4

In Awesome on Arch https://git.sr.ht/~steef/snixembed has resolved the issue.

In Awesome on Arch https://git.sr.ht/~steef/snixembed has resolved the issue.

If I get this right, snixembed translates status-notifier protocol to systemtray-spec protocol. While this (quoting the author) "dirty hack" may be acceptable as a temporary workaround for panels/window managers which do not have a status-notification area (but only a tray), it certainly makes no sense in other desktop environments like Mate or Xfce4, which do provide it.

Please note that at least on Xfce, the riot-update from 1.5.x to 1.6 broke the status-notification icon (again). I use the official Deb package and run Debian Buster and have the xfce4-statusnotifier-plugin installed and running

Could that be a dbus problem? The Riot flatpak had a similar issue. It was fixed yesterday with a dbus permission, and verified on Xfce 4.14 desktop with the Status Notifier panel plugin.

Note that the Riot flatpak uses the executable from the official deb package, but it may use its own Electron libs.

+1
Tray icon is disappeared

riot-web: 1.6.0
Ubuntu 16.04.6

Systray icon not showing here either.
Using:
tint2-16.7_1
riot-desktop-1.6.0_1
openbox-3.6.1_3

+1
Not showing tray icon here

riot-desktop: 1.6.0
Void Linux Rolling Release
AwesomeWM: 4.3-855-g814d701c

No system tray icon here as well after updating to Riot 1.6.0 on latest Debian Buster.
Is this getting fixed?

It isn't something which Riot can do anything about. It is an issue between Electron (Chromium) and your DE/WM.

@t3chguy Then how can it be that it broke due to an upgrade of just the Riot package?

Is there a workaround we can apply? I would try @foresto's comment but I don't understand exactly how to fix this "dbus permission".

As stated above. Riot upgraded to electron 8 which uses chromium 80.x which changed its tray icon support.

Other electron apps will suffer the same fate when they choose to upgrade.

It isn't something which Riot can do anything about. It is an issue between Electron (Chromium) and your DE/WM.

So how can i use a lot of apps in electron (like stremio, telegram) and all of them using the same version as riot and all of these i get the tray icons properly?

Other electron apps will suffer the same fate when they choose to upgrade.

Yea, no, that's not happening.

Most electron apps are not yet using electron 8.

For telegram if you mean tdesktop then it isn't electron: https://github.com/telegramdesktop/tdesktop

For stremio, it isn't electron, its using Node + QT.
image

Most electron apps are not yet using electron 8.

For telegram if you mean tdesktop then it isn't electron: https://github.com/telegramdesktop/tdesktop

For stremio, it isn't electron, its using Node + QT.
image

Stremio for linux uses electron. You're showing me Windows version.
Electron It's on the very dependencies for stremio on the Aur.

There's some reports that making the source image 32x32 resolves the issue for most desktop environments - we might want to try that if we can do so without impacting other environments (like Windows, mac, etc). Ideally we'd somehow specify the tray icon image specifically and for specific environments.

Electron It's on the very dependencies for stremio on the Aur.

https://aur.archlinux.org/packages/stremio/

mpv (mpv-sndio, mpv-semifull-git, mpv-vittgam, mpv-git-nc, mpv-ahjolinna, mpv-rpi, mpv-full, mpv-light, mpv-thin, mpv-build-git, mpv-full-build-git, mpv-git, mpv-full-git, mpv-amd-full-git, mpv-ahjolinna-git)
nodejs (nodejs-git, nodejs6-bin, nodejs-ipv6, nodejs-lts-dubnium, nodejs-lts-erbium)
openssl (libressl-git, openssl-git, openssl-weak-ciphers, openssl-purify, openssl-zlib)
qt5-base (qt5-base-git, qt5-base-headless)
qt5-declarative (qt5-declarative-git)
qt5-quickcontrols (qt5-quickcontrols-git)
qt5-quickcontrols2 (qt5-quickcontrols2-git)
qt5-translations (qt5-translations-git)
qt5-webchannel (qt5-webchannel-git)
qt5-webengine
git (git-git) (make)
librsvg (librsvg-git) (make)

Doesn't look like it?

+1. i3 (i3status/i3bar or i3blocks, doesn't matter), no icon in tray after upgrading to 1.6.x.

I'm locking this because it's not something we can fix at the moment. It requires OS/window manager vendors to talk to Chromium about how this is supposed to work.

At the moment we cannot downgrade electron for various reasons external to this one - we are trying to work out a solution that gets us the benefit of electron 8 (and therefore latest Chromium) as well as having a task tray icon.

Electron fixed this upstream. riot-desktop will be using the new electron in the next release.
See https://github.com/vector-im/riot-web/issues/13692

Was this page helpful?
0 / 5 - 0 ratings