← Back to team overview

unity-dev team mailing list archive

Re: RFC: syslets

 

On 02/22/2012 10:39 AM, Mikkel Kamstrup Erlandsen wrote:
Hi all,

We seem to have a recurring item that we can not cleanly address currently.

Consider these two bugs:
https://bugs.launchpad.net/ayatana-design/+bug/681348
https://bugs.launchpad.net/ayatana-design/+bug/868423

The common theme is that we want some sort of simple app-like-thing that
calls into some deeper system hooks.

Sure - this can all be done as full fledged apps with their own .desktop
files and packaging an all, having compiz or unity expose public api to
do this, but that just seems to me as the wrong solution. Exposing
semi-internal stuff as public api, extra packaing snafu etc, or new
config options, etc.

I am toying with the idea of having Unities dynamically export a set of
"syslets" available on the session bus, and exposed in the apps lens via
a special scope or something. This would be a Q feature of course, we'd
need s stop gap from P.

Since syslets would be dynamically exported and have some shared DBus
activation conventions (perhaps simply GActions and GMenuModel) it would
remove packaging overhead and the need to expose internal api or weird
config options.

This way different Unities and different setups could expose different
syslets, making sure we only show stuff that works.

Another huge benefit is that we can more easily accept "speculative" or
experimental features and expose them as syslets.


I just want to add a few more bits, having thought a bit more about this.

If we're careful in coming up with a powerful architecture for syslets we might be able to have all the "magic buttons" in the launcher become syslets. In particular I am thinking about the BFB and the Trash.

Having syslets for showing and instrumenting the dash state would also provide a completely natural solution for adding lens shortcuts directly to the launcher. A feature we haven't got around to in a while.

Furthermore this would provide a sort of API for the Trash icon (that is, just the syslet activation). I needed this recently for a gedanken experiement I did as a response to a request on unity-design.

The idea in question is about adding a "favorites lens" disjoint from the launcher faves. My idea would be to have a simple (real) app in the launcher that updates a gsettings list when you drag anything (apps or urls) onto it. To allow users removing favorite items from this lens they'd need to drag them to the trash (since we don't have - and shouldn't have - context menus in the dash). This is currently not possible because the Trash doesn't have an API[1].

Cheers,
Mikkel

[1]: A simple Trash(in s uri) DBus API living on the lens/scope service completely like our current Activate(in s uri) for lens results would do just fine. The Unity Trash syslet would then call back to Trash(uri) on the proper lens service.


References