Sunday, July 13, 2008

icons, icons, icons

So I've been working on awn-icons recently. The goal to provide a standardized way to change the icons used by applets (and eventually tasks/launchers).

I'm feeling lazy so I'l just point to a couple pages.

  1. Sharkbaitbobby has made a nice little write up that is of most use to python devs but is definitely worth reading for others.
  2. There's also a blueprint.
Todo:
  • Clearing of configured icons.
  • Look into using this with the awn core taskmanager/launcher.
  • Convert more applets.
  • Hook up some signals so changes in icons get reflected in all awn-icons users immediately.

Monday, June 9, 2008

Testers Needed

Things have reached the point where I'd now like to get some testers for cairo-effects. If there are any issues/suggestions please post on the forum.

Sunday, June 8, 2008

awn-cairo-effects

So I've done some work on my awn-cairo-effects branch in the last few days.

This initial work more or less involves replacing all the pixbuf related code in awn-effects with pure cairo code - a task that is progressing. I've decided to take a somewhat iterative approach to this work. Instead trying to completely replace the whole awn-effects engine I'm trying to replace bits and pieces.... I guess we'll see how that turns out.

At the moment there's no real point in trying my branch unless you modify an applet to specifically access the code in question. However, I expect within a few days the old awn_draw_icons() will become a thin wrapper to awn_draw_icons_cairo() in which case it'll be time for testing... whether all current effects will be implement at that time is up in the air ( saturate being real PITA I'm thinking).

Sunday, May 25, 2008

Shinyswitcher and standalone-launcher

A lot of the work I've pushed recently has very little visible effect for most users. Yet. It's basically been a lot of reorganization with the goal of future, shiny, goodness.

However, in recent days, I've pushed a few commits that do have a visible effect:
  1. I've modified the default configuration of Shinyswitcher to be more pleasing in a wider range of Window Managers. By default it only grabs an image of the currently active window, this will more or less get rid of the black square issue that happens with a lot of configurations. The maximum time for updates has also been lowered from 30 seconds to 7, so corrupted grabs won't tend to linger as long. I've also defaulted the layout to 3x2, remember that this only applies to non-compiz configuration... if compiz is in use it will use whatever config compiz is configured with. I've also tweaked some of the scales and opacity values. As always the configuration values can be changed in the normal place. And yes I do know that a configuration utility is needed for shinyswitcher.
  2. Standalone-launcher will now bring the managed task to the foreground when a drag and drop motion occurs on the icon. So if you grab an icon from you desktop and drag it over a nautilus task it will activate the nautilus window. If the applet is managing multiple open windows it is possible to cycle through them by moving the pointer and and off the icon (this is a temporary behavior which will be replaced by opening up the task list dialog eventually).
A quick note on vala support. Currently we require version 0.1.7 or 0.2.0 of vala. Versions > 0.2.0 will not work. At this time the newest version is 0.3.2. We anticipate upgrading when vala 0.3.4 arrives, though this is not a firm decision... it could happen with 0.3.3 or even, though hopefully not, a later version.


Other (not necessarily an exhaustive list) news:
  1. aantn continues to make progress on Universal applets.
  2. Tehk has pushed his rewrite of arss into awn-extras.
  3. malept continues work on making the trash applet gvfs aware.

Sunday, May 18, 2008

Plumbing

Still keeping rather busy with non-awn related things. But I have managed to do a few things here and there :-)

Things I have been up to...

Some plumbing changes in awn core:
  1. Committed the refactor of the src/xutils* related code. This removed a large chunk of unused code from xutils.c and made some modifications so that FreeBSD builds (and potentially other) work. I was rather pleased to set #161028 to "fix committed". And yes... this has lead to a different default icon being used when awn is unable to find a match. Speak up now if you are unhappy with this.
  2. Pushed my reorganization of awn-effects.c code. I'm not done with it yet but it basically broke awn-effects.c into multiple source files and began work on chopping some of the larger functions into more manageable sizes.

A bunch of small fixes/changes in awn-extras:
  1. libawn-extras: Make it real simple to access shared key values... Several applets now used the shared key that specifies whether the applet dialog should close on loss of focus or not. The list of applets that are now using this include awnterm, awn-system-monitor, places, main-menu and (I believe) any applet using AWNLib.
  2. awn-notification-daemon: Basic toggling on/off of notification window display which is available if one configures it to display an icon. If anyone likes to design icons please read my request.
  3. standalone-launcher: Some initial support for specifying workspaces. An advanced edit option,
  4. awn-system-monitor: Some fixes for sorting of process that use more than 2G of memory.
  5. places: Now checks for XDG_DESKTOP_DIR.
  6. webapplet: malept and myself have also done some initial work on a simple webapplet. It's quite basic at the moment but the initial design seems fairly solid and I believe it will end up being useful. It is necessary to either use the awn-testing ppa to get it or to build with --with-webkit. Yes it is webkit based at the moment but the longterm plan is to allow the use of webkit and/or gtkmozembed.
Things others have been up to (probably not as complete)

What else has been happening in awn land...
  • pavpanchekha continues work on AWNlib. It really is a good idea to use it if you're starting a new python applet.
  • aantn continues his work on Universal Applets. This is really quite cool. And hopefully he'll push some support into awn for this some day soon :-)
  • malept continues to do numerous bits of magic with the build system and has done numerous conversions of applets to awn config client, various bug fixes and has been working on converting the trash applet to gvfs... meaning the problem with the Trash applet on Hardy will soon be fixed.
  • Yes the weather applet had an issue recently. It has been fixed in trunk. This affected a lot of weather applets out there and was due to changes made by weather.com. Mosburger quickly restored everything to working order.
  • gilir continues to make progress of insinuating awn into Debian and Ubuntu and has added a tomboy applet of his own creation to awn-extras.
  • Moses had committed several useful fixes/features to the comics applet.
  • Matt continues to work on the file-browser-launcher.
  • Andrewsomething's recent Remember the milk applet seems to be quite popular.
  • tehk has returned after a several month absence is beavering away on a new and improved arss. Showing up in trunk real soon.
  • There are also several new applets available only on the forums that will, hopefully, soon make there way into trunk.
I've almost certainly have forgotten some interesting things... if so just leave a comment.

Saturday, April 12, 2008

Yeah... I've been getting very little done in the AWN world.

I'm hopeful that I will be able to start getting some things done this week. First thing on the list is looking at the Vala 0.2 release vis a vis the vala applets. I'm not anticipating it being overly ugly (insert superstitious action here).

Beyond that I'd like to make a real life observation. If you ever fall in love with a full blown BPD sufferer then don't be ashamed to say enough is enough early on and get the Hell out.

Saturday, March 22, 2008

A Generic HTML Applet

Life has decided to sneak up and pound me over the head with a large, heavy object recently... consequently I haven't gotten a lot done in awn land. And don't necessarily expect to accomplish much in the the next couple weeks.

That being said I have started some work on a generic HTML applet. In a fit of originality I have called it webapplet. It is in awn-extras but it will not build unless you use the --with-webkit configuration option. You will need to have webkitgtk installed as it is a webkit only beast at the moment. I also don't believe the configure script is checking for webkitgtk at the moment... I'll need to nicely ask malept to look into that for me.

Anyway, it's not doing a lot at the moment but it does have some ambitions:
  • Try to stem the proliferation of hundreds and thousands of individualized web applets :-)
  • Option of webkitgtk and/or gtkmozembed renderer. I will not add the gtkmozembed until after I am happy with the webkitgtk implementation.
  • Support for as many of the web widget formats as possible. And yes there is an intent to support Apple Dashboard widgets if possible.
  • Ability to easily configure it for new pages/widgets.
  • A collection pre-configured pages/widgets. I'm thinking stored in a keyfile backend. The goal is for the user to start up the configuration and be able to either choose from a selection of pre-configured options or add their easily own.
Anyway, just something I've been working on a bit when I've been in a coding mood. I'll post more as it progresses.

PS njpatel has been making a few interesting commits this weekend.

Sunday, March 9, 2008

Why things are the way they are...

A rather constant theme recurs in many blog posts and forum threads. Often the statements in question are factually correct but, I think, miss the nuances of the cost involved with each choice. These themes are often framed along the lines of:
  • AWN is more stable than xyz.
  • Why doesn't awn have shiny feature like the parabolic zoom in abc?

Some might disagree with me but I actually think these two statements are two sides of the same coin. And it all comes down to how applets are handled in AWN versus some other docks.

There are fundamentally two approaches that can be take to applets.
  1. Everything, including the dock and all the applets, run in the same process space.
  2. Every applet runs in a separate process space and the dock itself runs in a process space of its own.

Now in reality it is possible to mix these two approaches. And at the moment AWN does just that; the core taskmanager/launcher applet and the separator applet are not really applets, instead when they are in the applet lists it activates code running in AWN core. This will be changing with the 0.6 release of awn when the launcher/taskmanager code will be officially moved out of AWN core into applets. (Yes I have been working on an experimental implementation of this already... but it is experimental). Obviously, some of the other docks choose a different path.


What are the tradeoffs:
  • If everything is running in the same process space it's much easier to do bling. It's possible to easily and efficiently toss cairo surfaces (for example) around in a nice and shiny manner:-) In AWN's situation each applet(process) has it's very own window which makes it far more difficult to perform certain types of magic (yes we know many of you want a parabolic zoom... but it's hard, though maybe not impossible, to do with this architecture). Basically, unless we implement some compiz style window based effect engine it is necessary for each applet to handle its own effects though coordination is possible through IPC (d-bus for example), and this is what we are doing. (yes there are plans to improve this.. we have not reached the limits of bling possible)
  • Separate processes mean more stability. If programmers were perfect this wouldn't be true. But programmers are not perfect. By separating each applet into it's own process space it makes it very unlikely that an error in one applet will bring down the whole house of cards. A shared process space situation tends to be a lot more dodgy. On the same note it makes it easier for applet devs to contribute. It's all about a low barrier of entry and there is a fairly low barrier for AWN applet developers... you don't need an indepth understanding of the internals of AWN to write an applet for it.
  • A single process uses less resources. Even though the additional resource usage of multiple processes might not be as great as one would think, it can still be a significant cost. In the case of AWN I would have to say you pay a cost of a bit over 1 megabyte for each C applet versus a situation where everything ran in the same process. And that is a best case number.
  • One process per applet lends itself to allowing a diverse environment for developing applets. Currently AWN supports C, Vala and Python applets and it lends itself well to the addition of others. This attracts applet devs. The more applet devs the more applets you get. And applets are good.
So, it really is a case of tradeoffs. I won't say with certainty which ones is the best choice... it ultimately depends on the user in question.

Monday, February 25, 2008

Simple launcher and other news

Been feeling kind of crappy recently but I've got a few things done.

  • Most notably is simple launcher which is basically just standalone-launcher with all the interesting bits ripped out of it. All it does is act as a launcher for a single item. So those of you who don't want a taskmanager and just want launchers you can removed the taskmanager and add these. Note it will probably cost you around 2 M of memory per launcher. Personally I would prefer using standalone-launcher in mult-launcher mode...
  • Added a config key /apps/avant-window-navigator/applets/shared/dialog_focus_loss_behaviour. The idea is that certain behaviors should be shared by applets. This one is to be checked by applets that use dialogs and it will control whether they should close the dialog on loss of focus. This is expected behavior in general but it messes up those who use focus follows mouse. I expect a noet about this should get pushed into the applet guidelines. Of course none of the applets have been taught about it yet.
  • Did some cleanup of the notification daemon and finally tracked down a somewhat long-standing bug.

Other news:
  • Bug fix releases of awn and awn-extras arrived on the heels of 0.2.4. So we now have 0.2.6 releases
  • There's also a new comics applet courtesy of Moses.
  • And some fixes went in for awn terminal.
  • Pavpanchekha also has been continuing work on his mail applet, AWNlib and a bunch of small cleanups all over the awn-extras.
  • More detailed summaries of what has been going on (including things I missed mentioning) can be found here and here.

Wednesday, February 20, 2008

Invisible icons

What is the best way to create an invisible applet/icon on the awn bar?

I've been playing around with a couple of approaches to see what gives the best results. There are three basic approaches I've been trying.

  1. Set the icon to a 1x1 transparent pixbuf. It works but you still have the awn-effects related padding around it taking up several more horizontal pixels.
  2. Use awn_draw_set_window_size() and set the dimensions to 0x0. If you do this you also need to combine with method 1. This seems to convince awn-effects to remove the buffer pixels... so the overall results are better. It seems to end up using 1 pixel.
  3. Just calling gtk_widget_hide() on the applet object itself seems to have similar results to 2. There is still a visible movement in the bar when the applet is completely removed, even when it is hidden.
Which method to use? I'm using all 3 when hiding the standalone-launcher applets. Though either 2 or 3 alone seems to give very similar results, using the two methods together appears to reduce the chance of a visual artifact appearing if it is removed (a brief appearance of the infamous white line). Please note this is extremely hard to confirm as it tends to be somewhat difficult to test.

If you don't feel like messing around with the awn-effects stuff my suggestion is that method 3 appears to work relatively well by itself.

I would still like to have the ability to hide an applet icon in such a way as to have no visible movement in the bar when the applet is removed. If anyone has thoughts on how to do this please leave a comment. thanks.

Tuesday, February 19, 2008

Things to do

Now that 0.2.4 has made it way out into the world I thought I'd give a woefully incomplete list of things I'd like to spend some time working on.

Awn Core
  • I'd really like core to build on freebsd without needing a patch. The existence of xutils.* in the awn source is, for me at least, troubling. Besides now that we're desktop agnostic (congratulations malept) it would be nice to have a bit of platform agnostic goodness.
  • Addition of a hide applet function in libawn. Currently when devs are hiding an awn applet we are resorting to a hackish approach, creating a 1 pixel wide transparent icon. In itself that's kind of ugly but there is also a several pixel buffer space around this pixbuf... so our invisible applet takes several pixels on the bar. Not good, and definitely something that needs to be done right.
  • Review some of libawn-extras and possible move some of that functionality into libawn. I'm thinking there are several good candidates.
  • Maybe spend some time on converting some existing source files to the new coding style when I'm feeling bored.
Awn Extras
  • Continue to work on my experimental, out of core, launcher/taskmanager implementation.
  • Notification Daemon needs some work. I'd like to put an option to have an icon displayed in the bar that would allow the display of notifications to be switched on and off. And maybe n mode where they're displayed but with a high level of transparency. Also, some general cleanups of the code need to take place including implementing Awn Config Client support, and trying to track down the odd bug.
  • Shinyswitcher calls out for an xrender option. 'nuff said. And a standalone mode... I think I'd like to try it parked in the bottom left unused real estate on my screen.
  • Cairo-menu and awn system monitor have a bunch of little bugs. And at some point system monitor really needs a rewrite. And I also have promised someone that there would be an xfce version of cairo-menu.
  • New Applet under consideration: a configuration applet that encapsulates the features of awn-manager that I use most often :-). Awn-manager is nice but I don't like leaving it open and it takes a while to load... and I do use it quite often (mostly for starting and stopping applets).
  • New Applet under consideration: I did say at one point in time that I'd sit down and write a SUSE style menu, however, with the appearance of a gimmie applet I think I may continue to delay this.
  • New Applet under consideration: a libjana based clock applet periodically calls, and maybe I shall write one unless someone or other beats me to it.
Far to many things... umm... so how about... patches are welcome?

Sunday, February 17, 2008

Hello world

After many years of resisting a blog I've decided to join web 2.0. Woohoo!

Anyway, my intent is to mostly post here regarding my work with avant window navigator and its associated applets. Ah... the ruminations of another open source developer.