element-hq / element-desktop

A glossy Matrix collaboration client for desktop.
https://element.io
Apache License 2.0
1.13k stars 257 forks source link

Number of unread messages badge not shown in the taskbar on Windows 10 #762

Open xobs opened 4 years ago

xobs commented 4 years ago

Is your suggestion related to a problem? Please describe. Riot currently shows the number of unread messages in the upper-left corner of the window. It would be nice if it showed the number of unread messages in the icon as well.

Describe the solution you'd like Here is a screenshot of both the Riot icon in the upper-left, as well as the taskbar icon:

image

The taskbar icon should be a larger version of the upper-left icon, indicating that there are unread messages. Alternately, the taskbar icon could simply overlay a dot, indicating that there are unread messages.

t3chguy commented 4 years ago

Looks like the thing you have pinned on your task bar is wrong, as it isn't linked to the open window otherwise it'd have the outline at the bottom. This works just fine:

image

xobs commented 4 years ago

Apologies, I cut off the bottom of the taskbar. Here is the entire thing:

image

And here's what I get when I mouseover the icon:

image

t3chguy commented 4 years ago

Very strange as that should update it as it does for me.

xobs commented 4 years ago

I added this as a suggestion because I have Riot installed on two separate Windows 10 machines, and neither of them changes the taskbar icon when I have unread messages, yet both update their program icon that shows up in the upper-left corner and in alt-tab.

t3chguy commented 4 years ago

image

I cannot reproduce on either of my Windows 10 machines

xobs commented 4 years ago

What can I do to troubleshoot this, then? Just grasping at straws here: Might this be caused by the updater somehow not correctly replacing the icon properly, which you won't see if you build it from source yourself?

t3chguy commented 4 years ago

It has nothing to do with the updater.

It uses the electron BrowserWindow setIcon API https://github.com/vector-im/riot-desktop/blob/develop/src/tray.js#L99-L100 This bit works as expected, as you see it on the top left of your window. Your Windows is not copying that to the taskbar though which mine is

xobs commented 4 years ago

Aha, that's one problem.

With Combine taskbar buttons set to Never:

image

With Combine taskbar buttons set to Always, hide labels:

image

I'm not sure how you're managing to get an icon consistently...

t3chguy commented 4 years ago

Definitely sounds like some Windows failure/misconfiguration as it works just fine here image

xobs commented 4 years ago

I don't think it's a Windows issue, because e.g. Discord is able to show badges just fine, as are Telegram and WhatsApp:

image

Riot seems to only set the "Urgent" flag, and doesn't actually update its badge.

t3chguy commented 4 years ago

There is an additional, Windows-specific API, we could be using here but it is a lot of work for something that works for the vast majority of users already. Detailed here https://github.com/vector-im/riot-web/issues/13920

xobs commented 4 years ago

I installed the Riot Nightly mentioned in that issue, and it still didn't work. It looks like I've hit the same issue as @assarbad where Riot doesn't show unread message counts. Except for me it's reliably not showing anything, and across multiple devices.

I'm not sure what else I can do to try and get it working.

t3chguy commented 4 years ago

Not the same issue as that one at all, the one they were seeing was an inconsistency between the unread count and the icon count in the tray, window and taskbar. You are just seeing it missing it from the taskbar with a specific Windows setting enabled. Given it works for you in the Window icon then issue is different.

xobs commented 4 years ago

From my understanding of why this is hard:

I have a terrible hack that reads the number of unread messages from the <title> tag by monitoring page-title-updated and pulling it out using a regex. This is reliable, but since I can't render anything with canvas it doesn't get me very far.

DJCrashdummy commented 4 years ago

unfortunately i have a bunch of windows users complaining about this too! - for some time i didn't know what they were talking about because on my linux DEs everything works fine. :neutral_face:

is there at least any workaround i can suggest to them?

xobs commented 2 years ago

This was working for a while, then stopped working. It seems inconsistent, and is at a point now where it isn't working again, possibly since the most recent update.

image

t3chguy commented 2 years ago

https://github.com/vector-im/element-web/issues/19986 seems to suggest it is related to the Windows configuration option

Set windows taskbar to "Always hide labels" in the taskbar settings

JPustkuchen commented 2 years ago

I can confirm the issue still exists in latest release:

Version von Element: 1.9.9 Version von Olm: 3.2.8

No counter is ever shown! grafik

For Thunderbird it works in the same display.

pencil240 commented 2 years ago

We find the issue can be reproduced when the electron windows(electron 13.6.3) is unfocused sometimes . if we click the electron window to active the window the icon will be OK . (We disabled backgroundThrottling and created a frameless window)

aleld commented 2 years ago

Any Update on this? I ask you to please fix this soon. My users are complaining and while for private use this is more of an inconvenience, for an company environment it is lost money due to productivity loss since they miss that they do have new messages which is quite severe for a messaging app and communication in general.

While I am at it: Thank you guys for your great work! Love the direction and recent Updates!

e00E commented 2 years ago

Using Element on Linux and would also love to have a counter or at least some indication that there is an unread message.

t3chguy commented 2 years ago

@e00E whether or not there in Linux depends on if Electron supports doing that with your Desktop Environment. Element just uses the Electron badgeCount API

jchv commented 2 years ago

For folks having this issue: you should be able to get it to work again temporarily by pinning and unpinning Element from the taskbar.

As for actually fixing it, what if we just sent both the composed favicon as well as the badge and raw icon all at once? In theory, element-web can remain agnostic and element-desktop can handle determining which of the images to actually use and how. If this is acceptable I’d be happy to try to open some PRs this weekend. I understand this issue is not high priority, but I’m trying to help some of my friends join Matrix and the possibility that the taskbar badge could disappear inappropriately is troublesome for them, as they sometimes completely miss that they had multiple chats with notifications they did not read.

I could be wrong, but I’m pretty sure not using setOverlayIcon will always be unreliable, because Windows 7+ taskbar blends shortcuts and running apps into one thing, and which determines the icon seems to be somewhat inscrutable.

t3chguy commented 2 years ago

what if we just sent both the composed favicon as well as the badge and raw icon all at once?

Then they can overlay each other image

Ref https://github.com/vector-im/element-web/issues/16942

ArtexJay commented 2 years ago

This has never worked for me, however the icon in the system tray has the badge/number working. Would be ideal if it could use the built-in windows 10/11 badges for the icons. If not simply displaying a red dot without the number would be enough for me.

jchv commented 2 years ago

@t3chguy

what if we just sent both the composed favicon as well as the badge and raw icon all at once?

Then they can overlay each other image

Ref vector-im/element-web#16942

Actually, I meant:

@ArtexJay

This has never worked for me, however the icon in the system tray has the badge/number working. Would be ideal if it could use the built-in windows 10/11 badges for the icons. If not simply displaying a red dot without the number would be enough for me.

Unfortunately, it’s no easier to do that than it is to fix the problem fully, that I know of.

pyrates999 commented 1 year ago

There's no vote button, so I'll leave this that I'd also like this to be implemented.

t3chguy commented 1 year ago

@pyrates999 there's reaction buttons on the issue description

image

kennu commented 1 year ago

On Windows 11, when you Unpin the icon from taskbar, the unread badge appears. When you Pin the icon to taskbar again, the badge disappears. This seems to be repeatable.

This happens to me with current version: Element version: 1.11.20 Olm version: 3.2.12.

AitakattaSora commented 1 year ago

can relate, unpinned icon shows counter in taskbar, pinned - doesn't

DJCrashdummy commented 1 year ago

i can resp. must confirm both of previous findings: this happens on Windows 10 and 11 with the setting Combine taskbar buttons set to Always, hide labels, when you pin Element to the taskbar. as soon as you unpin it, the badge appears.

stupid idea more or less rooted from desperation (which i unfortunately couldn't check): perhaps it is decisive at which state - with or without a badge - you first pinned Element... i know this would be completely bonkers, but IMHO may be an explanation why many casual users do have this issue but most power users (which much more likely have pending notifications) seem to mostly don't have it.

jchv commented 1 year ago

I think it would legitimately be possible to fix this, it's just a bit awkward because of Element's architecture, wherein the hosted Electron renderer is running essentially the stock web code and icons are handled by handling favicon events. I'm not sure if upstream would accept a PR that adds some Electron IPC where the favicon logic would normally be, or if that could even be done in a terribly non-invasive way. There hasn't been much signal from the project that I can see.

t3chguy commented 1 year ago

@jchv yes that would be accepted. Originally we had 2 badges overlapped on some environments hence removing the appBadgeCount API which Electron claims is macOS-only but actually works on some Windows envs. The right way is as per - https://github.com/vector-im/element-desktop/issues/762#issuecomment-1513256598

max06 commented 4 months ago

Just want to bring this topic up again... for me it's no matter if Element is pinned or not. Not having my taskbar icons combined matters though.

I'd consider myself as a power user, and I still combine my icons - I have too many windows, not enough real estate, and I'm actually used to it and would prefer to not change that setting.

For comparison: Whatsapp, slack, discord, even the "new outlook pwa" are able to show badges or icons on my win11 taskbar. It can't be that complicated?

t3chguy commented 4 months ago

It can't be that complicated?

As always, contributions welcome.

max06 commented 4 months ago

Honestly, I'd love to!

Let's just say there are more reasons why I can't do that, one of them being no developer 🙈 I'd be happy to fix container issues or build pipelines in exchange!