budgie-desktop icon indicating copy to clipboard operation
budgie-desktop copied to clipboard

Facilitating a better and pluggable Raven

Open JoshStrobl opened this issue 3 years ago • 3 comments

This is a meta issue that complements a discussion presented by @EbonJaeger on Notification Refactoring, presenting actionable items that would improve Raven in the Budgie 10 series and provide a learning opportunity going into Budgie 11.

Firstly, let's talk about a Raven API. As many of you know, this was deferred previously to Budgie 11. While I certainly think there are improvements in Budgie 11 we can make to any sort of widget implementation (so you can trivially write both panel widgets and Raven widgets, and ship them either wholesale or part of an application), I believe a Raven API via libpeas should be feasible.

This will require updating the existing widgets to leverage this new API, which would expose APIs for adding / removing Raven widgets, Raven widget preferences like collapse by default (useful in places like Sound Input), and possibly more (open for discussion). Alongside this, we would need to update the Raven section of Budgie Desktop Settings to programmatically list available Raven widgets, like we do with applets in Budgie Panels, with dynamic options to show / hide them, and it would be even better if it had an ordering system as well.

With this new API, we would be empowered to start adding more Raven widgets. My thoughts immediately go to:

  • Weather
  • World Clocks (hopefully with contributions from the fine folks like @fossfreedom that have implemented world clocks in an applet)
  • Maybe EDS or other event system support into the Calendar (it is pretty useless otherwise, let's be honest).
  • Brightness Control

Alongside this work, it would be valuable to refactor Notifications into a separate centralized provider / Notifications "store" that Raven is merely a consumer of. This would satisfy ideas by @EbonJaeger on enabling other areas of Budgie like IconTasklist to become consumers of this and expose alternative ways of being informed of active notifications.

If anyone has any other ideas on how to improve Raven, I would love to hear it! I would like to mention that nobody owns any of the above tasks, so if you want to work as a team (preferably communicating in our Matrix server rather than your own silos) to accomplish it, I would love that!

JoshStrobl avatar Jan 06 '22 17:01 JoshStrobl

I would imagine that Raven widget (plugin? applet? what are we calling these?) ordering could be accomplished the same way that it's currently done for panel applets.

EbonJaeger avatar Jan 06 '22 17:01 EbonJaeger

I would imagine that Raven widget (plugin? applet? what are we calling these?) ordering could be accomplished the same way that it's currently done for panel applets.

Exactly. (And they'd be called Widgets, which is actually the intended terminology to Budgie panel bits too, them being panel widgets rather than applets, which is a more approachable and broadly understood term across desktop and mobile).

JoshStrobl avatar Jan 06 '22 17:01 JoshStrobl

I've pushed a branch for the Notifications refactor to get more eyes and experience on it. Should discussion related to that go here, or in another issue?

EbonJaeger avatar Jan 07 '22 01:01 EbonJaeger