Add Sync Progress Indicator with Data Size and ETA in Standalone Tray Application
Relevant components
- [ ] Standalone tray application (based on Qt Widgets)
Is your feature request specific to a certain platform/environment? Please specify. unsure. Windows qt Is your feature request related to a problem? Please describe. Difficult to see the progress of out of sync data. Both in size and estimated time left until sync is finished.
Describe the solution you'd like A number that displays n-number of bytes that are out of sync (or to be downloaded). And perhaps a progress indicator.
Describe alternatives you've considered Manually do a calculation between the size of the remote dir and the local dir, but it is a bit tedious.
something like this (from the official synctray web GUI). With three progress indicators (bar, data size remaining and percentage). I would love to have some of this information in the tray too, if not all.
The percentage is already shown. I can add the remaining size as well. I don't think adding a progress bar would fit well into the UI of Syncthing Tray.
I see. That is fine.
Would it be possible to add the "out of sync data size" and/or the percentage in this overview (pictured below)? (in the pic it is synced, so I does not need to be displayed)
Yes, that would be possible and indeed be a nice improvement. The tooltip of the tray icon should have that info probably as well then.
Thanks for adding this. It works well.
Would it be possible to also add the current "out of sync" filename? It is useful to know the filename of the file that is actively being synced (in addition to the size)
Would it be possible to also add the current "out of sync" filename? It is useful to know the filename of the file that is actively being synced (in addition to the size)
Any thoughts on this?
I could do that but as far as I know this would require polling the need API. That's something I don't want to do for all folders. Doing a periodic request only for expanded folders is something new to implement, though - and probably not worth it.
So far unnecessary event processing and polling is already avoided when the tray menu is hidden. So I guess I could at least make the polling dependent on this condition. Not ideal but I wouldn't have to add more complexity.
If I'm overlooking some API/event, please tell me. I just had a quick look again and perhaps I've already forgotten something.
By the way, at some point I'll bring a few UI elements I developed for Android to the desktop Syncthing UI. One would be a dialog to display Out of Sync items similar to the one from the official UI.
Note that official devs are currently contemplating on breaking changes. This might impact the API. So for now I'm trying to not add any new features requiring new API uses as it would mean having to port more to the new API in the future.
Thank you very much for the insight. You probably know best and it sounds wise to wait a bit for an eventual api rewrite. I also appreciate the low amount of polling/system resources
As a user I find displaying the out of sync folder/filename useful. especially when on a slow connection.
On Wed, 2 Apr 2025 at 15:50, Martchus @.***> wrote:
I could do that but as far as I know this would require polling the need API https://docs.syncthing.net/rest/db-need-get.html. That's something I don't want to do for all folders. Doing a periodic request only for expanded folders is something new to implement, though - and probably not worth it.
So far unnecessary event processing and polling is already avoided when the tray menu is hidden. So I guess I could at least make the polling dependent on this condition.
If I'm overlooking some API/event, please tell me. I just had a quick look again and perhaps I've already forgotten something.
By the way, at some point I'll bring a few UI elements I developed for Android to the desktop Syncthing UI. One would be a dialog to display Out of Sync items similar to the one from the official UI.
Note that official devs are currently contemplating on breaking changes. This might impact the API. So for now I'm trying to not add any new features requiring new API uses as it would mean having to port more to the new API in the future.
— Reply to this email directly, view it on GitHub https://github.com/Martchus/syncthingtray/issues/299#issuecomment-2772630469, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACUAKQI7RR4MKXBQVP4UMJT2XPTKLAVCNFSM6AAAAABS4DOVIKVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDONZSGYZTANBWHE . You are receiving this because you authored the thread.Message ID: @.***> [image: Martchus]Martchus left a comment (Martchus/syncthingtray#299) https://github.com/Martchus/syncthingtray/issues/299#issuecomment-2772630469
I could do that but as far as I know this would require polling the need API https://docs.syncthing.net/rest/db-need-get.html. That's something I don't want to do for all folders. Doing a periodic request only for expanded folders is something new to implement, though - and probably not worth it.
So far unnecessary event processing and polling is already avoided when the tray menu is hidden. So I guess I could at least make the polling dependent on this condition.
If I'm overlooking some API/event, please tell me. I just had a quick look again and perhaps I've already forgotten something.
By the way, at some point I'll bring a few UI elements I developed for Android to the desktop Syncthing UI. One would be a dialog to display Out of Sync items similar to the one from the official UI.
Note that official devs are currently contemplating on breaking changes. This might impact the API. So for now I'm trying to not add any new features requiring new API uses as it would mean having to port more to the new API in the future.
— Reply to this email directly, view it on GitHub https://github.com/Martchus/syncthingtray/issues/299#issuecomment-2772630469, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACUAKQI7RR4MKXBQVP4UMJT2XPTKLAVCNFSM6AAAAABS4DOVIKVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDONZSGYZTANBWHE . You are receiving this because you authored the thread.Message ID: @.***>
I've just checked how the official UI does it and it also only displays the figures. However, clicking on them opens the "Out of Sync" dialog. I guess that's the solution I also had in mind with:
By the way, at some point I'll bring a few UI elements I developed for Android to the desktop Syncthing UI. One would be a dialog to display Out of Sync items similar to the one from the official UI.
The official UI also seems to do polling while that dialog is open.
Would it be possible to also add the current "out of sync" filename? It is useful to know the filename of the file that is actively being synced (in addition to the size)
Upgrading to syncthing 2.0 I don't find much new in the api that would support this.
Perhaps using GET /rest/events (/rest/events?since=last_id) and filter on certain event types such as ItemStarted (key "item" contain the filename), ItemFinished, DownloadProgress. It might work and not be as heavy as GET /rest/db/need
Syncthing v2 eventually didn't end up breaking the API but there are also generally no notable additions I know of. I suppose v3 or another future major release will break the API instead. That'll be fun…
Syncthing Tray is already using the events end point. Maybe taking note of ItemStarted and ItemFinished events would work. Of course there still needs to be some other initial request to be able to display the initial state. Note that DownloadProgress doesn't seem to work - at least not anymore. (This is also why the "Downloads" tab isn't displayed by default anymore as it relies on DownloadProgress and also needed to be reworked.)