budgie-desktop
budgie-desktop copied to clipboard
Improving System Tray
This is a meta task to propose (not set in stone) a move to supporting the Status Notifier / Status Notifier Item Specification in our System Tray, whether that compliments all the excellent work @serebit did on "CarbonTray" or replaces it.
The reason for this is I want us to get into the mindset of not relying as much on XEmbed and X-related APIs, as a worthy goal for Budgie 11 is to be either Wayland-only or at the very least prioritize Wayland support. Implementing Status Notifier support into the System Tray would provide a good learning opportunity going forward.
Not labeling as accepted, as it is a proposal.
Perhaps we should add a separate Status Notifier applet in B10, and then remove the existing X System Tray in B11 with Status Notifier as the replacement.
@serebit That isn't a bad idea either! We could simply change the default panel.ini in that case and start consuming the new one.
Another point is that we may want to reuse the code for Budgie 11, so it might make sense to wait until we have an idea of how B11's codebase will be structured to develop this Status Notifier applet so as to mimimize friction when porting it over.
When you say "Status Notifier" is that KDE's solution for system tray apps? Will AppIndicator support be retained?
From what I have seen there are a lot of apps that mostly appear to use AppIndicator support, my https://kinto.sh app being among them.
Also I frequently notice sizing issues - I did fix one that was very slight with kinto recently, but this Windscribe VPN linux client sure takes the cake and even when I try changing the icon assets (png's apparently) it does not change things, so I am thinking they handle it somewhere else and may be an svg with a large size set in the file - but I can't find any svg file related to it.
Can we not simply force proper sizing and scaling of svg or png icons when they appear in the budgie-panel?
When you say "Status Notifier" is the KDE's solution for system tray apps?
Status Notifier is a FreeDesktop specification.
Will AppIndicator support be retained?
We never supported AppIndicator. We support XEmbed. Sounds like you're using an alternative solution to Budgie's actual System Tray.
How many DE's support XEmbed? Genuinely curious, since I developed Kinto's system tray to use AppIndicator. I do not mind changing it - if I know that multiple DE's support it well as I target multiple distros with that.
Also do you have any idea what the challenges might be with trying to force AppIndicator to work better in Budgies panel? I don't mind doing some digging if that is what it comes down to.
And when I said AppIndicator support - I guess I really just meant that it technically works. I don't guess anything would be done to purposefully break it.. although I know Budgie 11 will be a bit of departure from the prior release. Not sure how I'd feel about losing AppIndicator support :/, although I realize without the Gnome team wanting to support it either it seems pretty well dead with no clear replacement.
I would prefer to stick with Status Notifier as that is the preferred standard, rather than a holdover from the Unity days. I can't speak to how many DEs "support XEmbed" and it isn't really relevant, because we aren't going to be deprecating the existing implementation until we move over to Wayland (likely Budgie 11), since that would potentially introduce regressions for Budgie 10 series.
Instead we will be going the path @serebit suggested and have a dedicated Status Notifier Tray applet and replace the System Tray in the default.ini panel configuration :)
Not sue how I'd feel about losing AppIndicator support
Again, we never supported it. I think you may be conflating Ubuntu Budgie having an applet for it, versus us (the upstream).
Gnome team wanting to support it either it seems pretty well dead with no clear replacement
GNOME doesn't want system trays at all, regardless of implementation.
@JoshStrobl I see and yea, that'd be true lol. I am barking up the wrong tree here (on the appindicator stuff) 😅. I'll get with @fossfreedom on it later and see what he thinks.
Marking as accepted. Current plan, as noted by Josh and stemming from discussion on this issue, is to create a new StatusNotifier-based tray applet that will coexist with our XEMBED tray implementation, and replace it as our default on new installations of Budgie.
I think that the Status Indicator mainly needs a configuration option for the spacing between items, as it sticks out like a sore thumb when non-standard spacing is used between other panel elements. Maybe that would be the easiest to implement without having to completely refactor the code.
That's separate from this issue, but it wouldn't be difficult to implement.
I've decided that the StatusNotifier tray implementation will be entirely replacing the current XEmbed implementation. This was not my original plan, as evidenced by the history in this issue, but it feels like the appropriate move for a couple reasons:
- Applications that support both XEmbed and StatusNotifier do not expect a StatusNotifier watcher to be registered on the system if XEmbed is expected to be used
- Applications are beginning to remove support for XEmbed in favor of StatusNotifier (most recently Electron, which affects Element and Discord)
For those that this affects negatively, I'm truly sorry, but I think this is the right move to make.