ubuntu / gnome-shell-extension-appindicator

Adds KStatusNotifierItem support to the Shell
https://extensions.gnome.org/extension/615/appindicator-support/
GNU General Public License v2.0
1.21k stars 163 forks source link

3 dots instead of icon in gnome shell 3.36 #232

Open mike2307 opened 4 years ago

mike2307 commented 4 years ago

After upgrading to Fedora 32, all legacy tray icons show 3 dots instead of the real icon.

In this case, the 3 dots should represent the nextcloud icon: Tray

The same is the case for other legacy tray icons. In my case those are e.g. steam and electron mail.

The used version is gnome-shell-extension-appindicator.noarch 33-1.fc32

emichael commented 4 years ago

I'm having the same issue with Chrome/Hangouts indicators after upgrading to Ubuntu 20.04 from 18.04. Interestingly, after I restart the shell, the three dots and the chrome/hangouts appindicators disappear from the top bar entirely. One time the chrome/hangouts icons actually did appear in the top bar but disappeared after the next restart. There appears to be some sort of race condition in the process that converts legacy icons?

Nesaijn commented 4 years ago

It looks like the same problem I have. #229 Do you also get the same error messages in journalctl when starting the application?

luizesv commented 4 years ago

The same with me, upgrade from pop_os 19.10 to 20.04 and got that.

naz01101011 commented 4 years ago

Same here, though the pop-up menu works. On my side, Enpass tray icon works normal, but Teams or Remmina ones appear as three dots. Note that I am not using any tray icon Gnome extension.

3v1n0 commented 4 years ago

This should be fixed by gnome-shell 3.36.2, can you confirm?

Nesaijn commented 4 years ago

Not for me. I still get these errors when starting ElectronMail and the icon is not shown correctly:

Mai 19 10:19:59 zodd-pc gnome-shell[1176]: JS ERROR: Exception in callback for signal: property-changed: GdkPixbuf.PixbufError: Unrecognized image file format
                                           _updateImage@/home/zodd/.local/share/gnome-shell/extensions/appindicatorsupport@rgcjonas.gmail.com/dbusMenu.js:618:49
                                           _onPropertyChanged@/home/zodd/.local/share/gnome-shell/extensions/appindicatorsupport@rgcjonas.gmail.com/dbusMenu.js:554:42
                                           _emit@resource:///org/gnome/gjs/modules/core/_signals.js:133:47
                                           property_set@/home/zodd/.local/share/gnome-shell/extensions/appindicatorsupport@rgcjonas.gmail.com/dbusMenu.js:125:14
                                           _endRequestProperties/<@/home/zodd/.local/share/gnome-shell/extensions/appindicatorsupport@rgcjonas.gmail.com/dbusMenu.js:271:33
                                           _endRequestProperties@/home/zodd/.local/share/gnome-shell/extensions/appindicatorsupport@rgcjonas.gmail.com/dbusMenu.js:266:19
                                           asyncCallback@resource:///org/gnome/gjs/modules/core/overrides/Gio.js:132:13
bulletmark commented 4 years ago

I get the same issue reported by @emichael. I am using Arch Linux where gnome-shell is version 1:3.36.2+7+ge4199c71c-1.

tflori commented 4 years ago

I'm also having problems with the icons for legacy applications. In my case it was (yes, was - I found a solution) the owncloud icon. The reason for that is not clear to me as I don't know much about the icon theme handling in linux.

My findings: icon_theme.lookup_icon_for_scale returns null for the icon returned from the application (owncloud tries to use state-ok). That is shown in the system logs as appindicatorsupport@rgcjonas.gmail.com[76875]: ownCloud, Impossible to lookup icon for 'state-ok' . First I thought it would be enough to refactor the panel specification:

                // indicator-application looks up a special "panel" variant, we just replicate that here
                // try to look up the icon in the icon theme
                iconInfo = icon_theme.lookup_icon_for_scale(name + "-panel", size, scale,
                    Gtk.IconLookupFlags.GENERIC_FALLBACK);

                // no panel icon - lets try the "non-panel" variant
                if (iconInfo === null) {
                    iconInfo = icon_theme.lookup_icon_for_scale(name, size, scale,
                      Gtk.IconLookupFlags.GENERIC_FALLBACK);
                }

But that didn't work either. I don't know if it makes sense to look for the original name when the <icon>-panel does not exist.

But I found out that it is working when we just return the name as path - maybe it is then be used as relative path.

veddox commented 4 years ago

On Ubuntu 20.04, Gnome 3.36.2. Am seeing this issue with the Nextcloud desktop client (a Qt application). Mattermost (an Electron app), works fine.

The disappearing icons after renewed login that @emichael mentions seem to be a consequence of #228.

Nesaijn commented 4 years ago

For ElectronMail the latest updated solved my issue with its tray icon. https://github.com/vladimiry/ElectronMail/releases/tag/v4.6.0

veddox commented 4 years ago

I get the impression we're looking at multiple issues here that all result in the "three-dot icon". My error message is different from the two above and seems to be the consequence of a slow starting Nextcloud client - see my write-up here. I'm not yet sure though whether it's better to fix the issue here or over there.

jzazo commented 4 years ago

Keepassxc, which also uses Qt, shows three dots as well.

For a different problem they concluded it was a Qt problem. The three dot problem has not been assessed, but Qt may be the culprit in all these cases?

veddox commented 4 years ago

For a different problem they concluded it was a Qt problem. The three dot problem has not been assessed, but Qt may be the culprit in all these cases?

Well, the thing is, the "three-dot problem" is really only a symptom that can potentially have plenty of very different causes (kind of like a runny nose, really :sneezing_face: :mask: :sweat_smile: )

If you look at the IconActor class in appIndicator.js, you see the following code:

https://github.com/ubuntu/gnome-shell-extension-appindicator/blob/32f2f34ae382a4af850471a131cf9b5e42231ac5/appIndicator.js#L288-L296

Here you see that appindicator sets a default fallback icon (which on my system is located at /usr/share/icons/Adwaita/scalable/status/image-loading-symbolic.svg) - the infamous "three dots". Basically, appindicator initially sets all tray icons to the fallback icon, before changing them to whatever the application wants. This only happens when the ready signal is received in line 321. In short, if there is any error between the first initialisation and the actual setting of the application's systray icon, the symptom is going to be the "three dots".

(If you reread the above thread, you will notice that we do in fact have at least three different error messages we're talking about - one missing icon, one bad file format, and one null pointer exception. Also note that Electron-based apps are having issues too, not only Qt.)

cAstraea commented 4 years ago

I'm seeing it too on ubuntu 20.04.... Sorry can't be more useful just switched to Linux still getting used to everything :) Pressing ALT + f2 and r and enter makes it disappear. (I'm thinking this is the equivalent of killing and restarting explorer on windows or finder on mac ? )

loulou921222 commented 4 years ago

I have the exact same problem with teamviewer, image

loulou921222 commented 4 years ago
gnome-shell[973]: JS ERROR: Exception in callback for signal: ready: TypeError: this._indicator.id is null
                                            _updateIconClass@/usr/share/gnome-shell/extensions/appindicatorsupport@rgcjonas.gmail.com/appIndicator.js:386:34
                                            _init/<@/usr/share/gnome-shell/extensions/appindicatorsupport@rgcjonas.gmail.com/appIndicator.js:364:18
                                            _emit@resource:///org/gnome/gjs/modules/core/_signals.js:133:47
                                            _checkIfReady@/usr/share/gnome-shell/extensions/appindicatorsupport@rgcjonas.gmail.com/appIndicator.js:118:18
                                            AppIndicators_AppIndicator/<@/usr/share/gnome-shell/extensions/appindicatorsupport@rgcjonas.gmail.com/appIndicator.js:81:26
R-033 commented 4 years ago

Have this problem with Steam

loulou921222 commented 4 years ago

Have this problem with Steam

That's interesting, because steam displays for me fine.

cAstraea commented 4 years ago

I found what was the cause for me it was a chrome extension. In google chrome it shows the google tray icon but when using chromium it shows that.

loulou921222 commented 4 years ago

It doesn't matter if I reload or relogin, it's always 3 dots for teamviewer and others show up fine

tflori commented 4 years ago

I see the same: teamviewers indicator has no id. I added a warning message for that:

Okt 19 09:00:22 miracle appindicatorsupport@rgcjonas.gmail.com[2679]: Indicator has no id: {"busName":":1.380","_uniqueId":":1.380/StatusNotifierItem","_accumuledSignals":{},"_cancellable":{},"_proxy":{"Category":null,"Id":null,"Title":null,"Status":null,"WindowId":null,"IconThemePath":null,"Menu":null,"ItemIsMenu":null,"IconName":null,"IconPixmap":null,"OverlayIconName":null,"OverlayIconPixmap":null,"AttentionIconName":null,"AttentionIconPixmap":null,"AttentionMovieName":null},"_signalConnections":[{"id":1,"name":"destroy","disconnected":false},{"id":2,"name":"destroy","disconnected":false},{"id":3,"name":"destroy","disconnected":false},{"id":4,"name":"icon","disconnected":false},{"id":5,"name":"destroy","disconnected":false},{"id":6,"name":"overlay-icon","disconnected":false},{"id":7,"name":"destroy","disconnected":false},{"id":8,"name":"reset","disconnected":false},{"id":9,"name":"destroy","disconnected":false},{"id":10,"name":"ready","disconnected":false},{"id":11,"name":"destroy","disconnected":false},{"id":12,"name":"ready","disconnected":false},{"id":13,"name":"destroy","disconnected":false},{"id":14,"name":"menu","disconnected":false},{"id":15,"name":"destroy","disconnected":false},{"id":16,"name":"label","disconnected":false},{"id":17,"name":"destroy","disconnected":false},{"id":18,"name":"status","disconnected":false},{"id":19,"name":"destroy","disconnected":false},{"id":20,"name":"reset","disconnected":false},{"id":21,"name":"destroy","disconnected":false},{"id":22,"name":"destroy","disconnected":false}],"_nextConnectionId":23,"isReady":true,"_proxyPropertyList":[]}
twbeosl commented 4 years ago

I've had two sets of three dots show up on mine. One of them (the one on the left) will start Google Hangouts if clicked. The other does nothing. Can confirm the issue disappears with the Alt-F2 r fix.

vageliskatsiotis commented 4 years ago

I have the exact same problem with teamviewer, image

Same here. Only with teamviewer.

TeamViewer[218052]: QDBusMarshaller::appendVariantInternal: Found unknown D-BUS type ''
gnome-shell[961]: JS ERROR: Exception in callback for signal: ready: TypeError: this._indicator.id is null

Arch, gnome shell 3.38.1, extension 3.38

On my desktop on the other hand, same installation as the first, during first boot teamviewer starts with 2 icons, the dots and teamviewer's.

When restarting gnome-shel or teamviewer service only the dots appear after that

Funny...

gitrequests commented 3 years ago

Have this problem with KeyPassXC, Google Hangouts from Chromium extension and one more app. Ubuntu 20.04.1 LTS GNOME 3.36.3 Screenshot from 2020-12-01 13-22-03

rogercreagh commented 3 years ago

A system update today has completely killed the appindicator icons. None of them now show. Ubuntu now v20.04.1 Gnome 3.36.8

emichael commented 3 years ago

I can report the same problem as @rogercreagh. In my case, Slack still shows up fine. The Nextcloud client won't appear at all, even after restarting the shell. Looks like the upgrade gnome-shell-extension-appindicator:amd64 (33-1, 33.1-0ubuntu0.20.04.1) was installed yesterday and might be the culprit.

EDIT: Can confirm, downgrading back to 33-1 fixed the issue.

rogercreagh commented 3 years ago

It seems that it might be a timing issue as if I disable the apps run on startup and start them manually once everything has settled down then they appear ok.

PS @emichael how do I downgrade the appindicator?

emichael commented 3 years ago

@rogercreagh apt install gnome-shell-extension-appindicator=33-1 then apt-mark hold gnome-shell-extension-appindicator to prevent it from upgrading again next time you run apt upgrade.

rogercreagh commented 3 years ago

Fabulous, thanks @emichael , that has worked a treat, keypassxc, nextcloud and copyq all now starting on boot and their icons showing again. Hopefully this is a big that'll get fixed in the next release - does it need a new bug report since this one was originally about the 3 dots appearing which seemed to be cleared by a subsequent update (I had the 3 dots problem with nextcloud on on Ubuntu 20.04 machine but not on an ostensibly identical other one - it then cleared itself after about a month.

xeco23 commented 3 years ago

Hi, I also experince the same problem. I am using libappindicator C api for my application and it gives this error:

Apr 24 22:52:47 ubuntu-dev ubuntu-appindicators@ubuntu.com[1185]: com.github.whatsapp-for-linux.tray, Impossible to lookup icon for 'whatsapp-for-linux-tray-active-panel' in default theme Apr 24 22:52:48 ubuntu-dev ubuntu-appindicators@ubuntu.com[1185]: unable to update icon for com.github.whatsapp-for-linux.tray Apr 24 22:52:48 ubuntu-dev ubuntu-appindicators@ubuntu.com[1185]: com.github.whatsapp-for-linux.tray, Impossible to lookup icon for 'whatsapp-for-linux-tray-active-panel' in default theme Apr 24 22:52:48 ubuntu-dev ubuntu-appindicators@ubuntu.com[1185]: unable to update icon for com.github.whatsapp-for-linux.tray

Event though I am adding custom icons to the default theme as 'whatsapp-for-linux-tray-active and 'whatsapp-for-linux-tray-attention and setting the appindicator's icon to those. However, I don't get why the extension is trying to append a -panel at the end while searching.

3v1n0 commented 3 years ago

@eneshecan I think it may depend on the GIcon you're using...

xeco23 commented 3 years ago

@eneshecan I think it may depend on the GIcon you're using...

What do you mean? Could you please elaborate a bit?

caneraydinbey commented 3 years ago

Hello. I have also it. When click, it does not show which it should show image

Elmapul commented 1 year ago

same problem here, the problem started a few days after i installed gsconnect , not sure if its related

agopdev commented 1 year ago

Same problem here with NordPass on Debian 12, when I install the extension it works perfectly, after reboot the system the 3 dots appears.

janvlug commented 1 year ago

I've the impression that for some (but not all) applications (that start automatically when logging in) restarting the application get the icon back. I see the issue with Solaar, Nextcloud, and in the past Element (Riot). It seems that this issue for Element is fixed somehow.

tazihad commented 9 months ago

https://github.com/ubuntu/gnome-shell-extension-appindicator/issues/283#issuecomment-1943018705

For anyone here, I have same problem in Debian 12. Flatpak Mega app has the 3 dots problem. The hacky solution is to use custom icon. https://github.com/ubuntu/gnome-shell-extension-appindicator/issues/355#issuecomment-1214409509 this guide. I have finally fixed the 3 dots of Megasync app.

RalfJung commented 9 months ago

Following the instructions, it says that the Id of the icon is Nextcloud. The nextcloud image exists in /usr/share/icons/hicolor/48x48/apps/Nextcloud.png any many other folders for different resolutions. So it seems like the app is doing everything right and the extension just somehow fails to find the Nextcloud icon?

But it also seems like the extension is unmaintained, or at least nobody really is looking into fixing this issue. :( This issue and its duplicates seem to be going for years without a dev even telling us what we can do to debug this / what information is missing to make progress.

RalfJung commented 9 months ago

FWIW for nextcloud it suffices to add a custom icon for Id Nextcloud, icon Nextcloud. Like, literally use the exact same string as the Id and the icon. Then the icon is fixed. Isn't that what the extension should already be doing automatically? I am quite confused now, is there documentation somewhere on how the icon is determined when there is no custom icon? Clearly it is not using the Id...

EDIT: Ah, there is r(0)._indicator._proxy.IconName as well. That one is state-ok. Which apparently is not an icon that exists, I guess?

$ find /usr/share/icons -name "*state-ok*"
/usr/share/icons/breeze-dark/status/22/state-ok.svg
/usr/share/icons/breeze-dark/status/16/state-ok.svg
/usr/share/icons/breeze/status/22/state-ok.svg
/usr/share/icons/breeze/status/16/state-ok.svg

It exists in KDE's "breeze" theme but not beyond that.

Maybe the extension should fall back to interpreting the Id as an icon name if the IconName cannot be found? Not sure if that would make sense.

Klairm commented 5 months ago

I'm having the same problem with MEGASync imagen

Tried restarting the shell but didnt work