syncthing / syncthing-macos

Official frugal and native macOS Syncthing application bundle
https://syncthing.net
MIT License
2.73k stars 147 forks source link

Tray icon does not indicate if everything is up-to-date #105

Open grozan opened 4 years ago

grozan commented 4 years ago

Hi,

I saw in the doc that it says

Tray icon indicates when it is connected to syncthing (no status updates yet).

so this issue is to make sure it does not get forgotten :-)

It's good to see if syncthing is running locally or not, but what I also really want to see is if my files are all synced correctly or not. If any folder or any remote device is not up-to-date, I think the colour of the icon should change to draw the user's attention. Right now I regularly visit the web interface to make sure everything is green. I really wish the icon would give me that information.

Note: if there are events like a "receive only" folder becoming out of sync then I think the icon should also indicate there is something not 100% ok, so that the user knows he should visit the web interface to see what's going on, and eventually click the "revert local changes" button in that case.

Thanks!

xor-gate commented 4 years ago

To comment on the doc item:

Tray icon indicates when it is connected to syncthing (no status updates yet).

It actually displays it with an exclamation mark so this needs to be fixed in the documentation. See this for my setup in OS X dark mode:

Screenshot 2019-12-20 at 18 49 03 (normal icon Screenshot 2019-12-20 at 18 49 37). Tested by stopping the syncthing service: "click on the tray icon -> online -> syncthing service -> stop".

I personally like the icon to be monochrome and it is IMHO hard to have 32x32 pixels (or is it even less?) to display multiple specific states. I was thinking to have more a notification kind of system and extra info items in the root of the tray menu.

Just for my personal reference like BitBar has plugins for showing easy accessible information:

image

https://getbitbar.com/

xor-gate commented 4 years ago

If we really want we could at a very small piece of text next to the icon if that is helpfull? But we have to be carefull for small screens don't have infinite amount of pixels and don't pollute the taskbar to much.

xor-gate commented 4 years ago

Currently there are 4 icon states:

https://github.com/syncthing/syncthing-macos/tree/develop/syncthing/Assets.xcassets/

grozan commented 4 years ago

Hi,

thanks for the feedback!

I had actually tried to stop syncthing, the way you mentioned, and saw the icon change. I honestly had to come very very close to the screen to see what it was... As you said, icons are small, so little badges like that on small icons are very very very small :-) I think I would have never noticed the icon change, though, if I was not actively searching for it as I was testing.

IMO a much bigger exclamation mark would already be more noticeable, even if I shouldn't have to "monitor" the icons in my tray. If there is something wrong, it should jump at me instead. As you said space is very limited, so IMO writing text in the tray is a good option. Extra info in the root of the tray menu is nice, but the user still has to actively click it to see it

so I still think a colour change of the icon (only when something is not normal) is a more effective way to draw the user's attention, as it's more noticeable. Some people might want not want it, but maybe it could be left to the user as an option?? Macos notifications (similar to Slack for example when you receive a message) to notify only of conditions changes would be nice too, for sure.

Besides the look and feel of the notification itself, I think there is something that could be improved regarding WHEN to show it.

Notifying the user when the local syncthing is dead is very good, but IMHO it's equally important to notify him if the remote server he syncs to is disconnected. I tried to stop the remote device I sync to, and nothing happened. No exclamation mark or something. Still, the sync is effectively dead, so we are in the same critical state as when my local syncthing is stopped.

There are also the other cases, the non-critical alerts (but alerts still), like:

Could the notification be also triggered when that happens?

Thanks

xor-gate commented 4 years ago

Great, we are on the same page. I agree with all the points but we should think about features and functionality in a critical way so it will not be annoying. When we decide to implement some monitoring/notification system we must have the requirements clear. Currently i'm not very active on the development of new features because it is pro-bono.

Actually I had a draft for notifications where you could accept the sharing of folders by a node see https://github.com/syncthing/syncthing-macos/issues/52#issuecomment-402309753

I also totaly agree this makes the MacOS integration more natural without switching to the web interface. There is so many room for improvement like having the whole webinterface "ported" to a native gui. Like management of shares, nodes, etc etc. But of course it takes time to create requirements, design and implementation.

HannesK-ME commented 2 years ago

Seeing that this issue has been around for two years now, perhaps there are smaller changes that could be made to incrementally improve the user experience here? I feel like a very useful first change would be to include remote devices when checking the syncthing status, instead of just checking all folders. This would cause the menu bar icon to show "syncing" whenever a remote device is syncing, which is in part why this issue was created in the first place.

xor-gate commented 2 years ago

I understand all your ideas but syncthing-macos relies on the API exposed from Syncthing itself. We currently use the events endpoint and set the local state according to this.

https://github.com/syncthing/syncthing-macos/blob/9a5cebb9a1773a861aca50ef6e9c6cad26fc1954/syncthing/STStatusMonitor.m#L85-L86

It basicly means when we received an event StateChanged. It can have the following to states: idle, scanning, syncing and error.

So in my opinion there is nothing wrong with the current implementation, but possible something wrong in what we expect.

xor-gate commented 2 years ago

Hi all,

I finally had a small test of my files which took some time to sync. And indeed the tray icon doesn't change when one of the devices is syncing. See the following screenshot:

Screenshot 2021-12-31 at 10 56 59

This basically means the event API is not enough to look for remote device syncing.

thoelze1 commented 3 weeks ago

Does #74 resolve this issue?