Friday, July 17, 2009

Universal Applets support merged

The code supporting Universal Applets in Avant Window Navigator has been merged into the rewrite branch (A thank you goes to mhr3 for taking time to cleanup the dbus implementation today). I must say that gilir has been plugging away trying to get some headway on this project for a while, and it probably would never have gotten done if he hadn't taken the time to get the UA side of things, plus dbus interfaces all setup, so when us C types had the inclination, things were nicely primed.

What this merge means is that with the 0.4 release we have basic support (AwnApplet level more or less) functionality for most universal applets in the panel. Now certain screenlets obviously are not good candidates (some are meant to be much larger than the bar) for this, but a fair number are. And I have some thoughts for those other screenlets for the post 0.4 code :-)

Now a few notes:
  • AwnApplet level functionality... means no effects and no reflections. I'm hoping reflections will eventually show up for AwnApplet applets (probably 0.6) at which time UA/Screenlets should get them also. Effects, I would not be expecting anytime soon.
  • The UA/Screenlets code to support this is not yet in the main UA branches. They reside in some of gilir's branches. Hopefully this will show up in the UA trunks real soon. There is also a possibility that the necessary code to support this may show up in Screenlets proper (as opposed to the UA fork) at some point, though I really have no idea on what the timeline for that might be or even that it's a 100% certainty.
  • This is the an initial implementation. I think it's fair to say that various aspects can be improved over time... but the it seems the basics are fairly solid.
  • There is at least one awn side issue that I am aware of... that being curved style. I'm sure that a few others will rear their heads up.
  • Ultimately this should be regarded as just another option. Especially useful if you're missing one or two items in your suite of awn applets that just happen to be covered by a screenlet or two.
  • There are some outstanding bugs/issues on the UA side of things. I have made sure that aantn is well aware that they need to be fixed :-) The most pressing issues in order of importance:
  1. Periodic issues with mouse events. This has been around for a while AFAIK. I looked through the UA bugs and didn't find it... but I'm sure it's lurking in there somewhere. To sum up, periodically some screenlets top receiving mouse events. I'll also note that I have not seen this happen yet with one that is currently embedded in the awn. I have a sneaking suspicion that this one is proving difficult to resolve. So the bug is not connected with awn per se... but it is a rather significant usability problem.
  2. UA Screenlets that were previously embedded in awn do not remember to reattach after they are restarted. This code is only present in Gilir's branch at the moment but obviously needs to be resolved. I expect this can be fixed quite easily.
  3. A dbus api to allow awn to inform a screenlet that it should not reattach itself to awn (probably reverting back to the default behaviour of connecting to melange). This will allow screenlets to be "permanently" removed through awn-manager. Till this is done it will be necessary to configure screenlets to not reattach (after (2) is fixed) using the standard UA interfaces. My guess is that it's not a huge problem, just a matter of defining the api, implementing it on the UA side of things after which we can plug it into awn without too much difficulty.
  4. I believe that there are also a few concerns about the making the dbus api a little more flexible in terms of it's design that mhr3 has voiced. These issues are something that are relevant but not vital in the near term.