Saturday, 24 November 2007

Wires sticking out

So earlier this week, a mixture of migraine, sickness and deep pain in the right side of the chest sent me to the doctors. Doctors messed around for a while then sent me on the hospital for emergency surgery.

The excellent surgical (& nursing) staff found and (sort of) fixed the problem, and now i'm in recovery with a hole at the side of my chest.

Unfortunately, i don't have much movement in my right arm at the moment, so anyone expecting emails etc, please be patient, i haven't been ignoring you :-).

ps. This is brought to you in association with painkillers, heavy antibiotics & a nokia e65...please excuse if it doesn't make sense!

Tuesday, 6 November 2007

I think I just found another dimention

So, I've had some spare time at work today, and thought I might as well tackle an idea that has been floating around OH towers since before Guadec, which was to use the Gtk offscreen rendering patch to embed Gtk widgets within the Clutter stage.

Now, I only go this working today, and it's pretty hacky, but heres where I am so far:

Clutter + Gtk offscreen rendering patch from Neil Patel on Vimeo (if you can't see the video, click through).

Thats a GtkWindow which has been told to also draw to a GdkDrawable, which is then being pushed into a ClutterTexture (did I mention it was hacky?).

However, thanks to Emmanuele (and by proxy Alex), I have an idea of where to go with this, so hopefully we'll able to have some sort of canvas based on Clutter, where you can manipulate real widgets.

Anyway, that's it for Bling Tuesday, some more updates coming soon :-).

Update: The video doesn't seem to work with some flash players, so here is a link to the original ogg. That's what I get for trying out a new video service

Sunday, 7 October 2007

0.1 + 0.1 = ?

Well there you have it, Awn 0.2 has been released!

With over six months since the last release, you'd think we were working on something as complicated as Gnome, but I think there are enough new features to show where the time has gone ;-).

I'd like to highlight a few of the main features that have landed into trunk over the recent weeks, and others that I maybe haven't mentioned before.

Icon Effects

You can have user-selectable colours and a 3d-look bar, but the ability to choose whether your icons bounce like cartoon characters, spin like a coin, or have a spotlight cast on them has to be the best blingy feature :-D!

(you may need to click the blog title to see the video)

Awn Manager

After having to endure my simple preferences dialog (and my lack of updating it to reflect new features), a few brave souls from the forums decided to create a proper configuration dialog for Awn:

Together with wrapping all the gconf options, the ability to load/save and share your Awn theme was also included, which is a very cool feature. Themes have already started popping up in!


I've been over applets before, but we've been working very hard to make sure there is a continuous look and feel across applets and the main launcher/task bar. As of now, 99% of the applets behave the same on the bar (including animations & reflections).

I'll be making a stable release of applets in the next few days, but you can get to them via launchpad if you can't wait!


In addition to new features, Awn has grown more and more stable. Many 'hacks' that were put in place in January have either been swapped for newly available APIs, or have been replaced with standard Gtk widgets (although you can't tell ;-).


From now on, I hope to make more regular releases of Awn, especially as there are many more people involved now, and a lot of code is being written. Also, I may take some time off from writing code for Awn myself, as I'd really like to spend some time on Affinity and Arena, plus help out on some other projects.


I'd just like to say a huge thanks to everyone who has been on the forums, wiki and launchpad trawling through questions/bugs etc, and all the tranlsators (43 languauges!). I'd also like to say special thanks to Jeff Fortin, Mike Jones, haytjes, Miika-Petteri Matikainen, Anthony Arobone, Ryan Rushton, Michal Hruby, Julien Lavergne, who have all picked up the slack when I couldn't work on Awn as much as I wanted to.

Thursday, 13 September 2007

How'd you like me now!

So in my tradition of one post per month (which, I know, needs to change), I present you with some updates from the world of Awn:


There have been lots of cool applets popping up, especially since the python bindings were committed a week or so ago.

Stacks player

Main menu


The move to launchpad has also created some very cool branches of Awn by other people which focus on new ideas, or new ways to implement existing ones. Below are two examples, the first being the libawn-effects branch, which migrates a lot of effects code from Awn to libawn, wraps a nice api around them, and adds a few more fancy effects:

The second branch concentrated on providing another approach to the usual linear arrangement of icons on the dock. Awn-curves puts icons on a slight curve which increases the feeling of depth:

Both are quite stable and are in line for a merge :-)

*Update* As usual, the videos have been stripped out, so if you want to see them you'll have to click on the post title above.

Monday, 30 July 2007

We are sailing...

...across the shore from to!


Don't get me wrong, Google Code is great, and I still use it for Affinity and other projects, but Awn is getting larger and larger, in community and developers, and this needs some proper structure. Launchpad provides that structure incredibly well, with excellent road-mapping/bug reporting/feature requests/translation infrastructure, and we hope to make the most of it!

Show me the source!
is the new home of Awn. Over the past few days, those belonging to the awn-core team have helped me move everything over to launchpad.

Development of Awn will be in Launchpad from now on, bug reports, feature requests (blueprints) and translations should be directed there too. The Awn page in launchpad has instructions on how to download the development version.

I am working on transferring the existing bugs from to launchpad. If you have previously opened/commentated on a bug, and would like to help me out, you can create the corresponding bug in launchpad, and just leave a comment in the original bug report that you have done so :-D.

What now?

Well, there's been a burst of activity on the Awn forum, with patches coming at me left, right and center. Consequently, Awn has gained some new developers and bug-people, and we are working towards a 0.2 release, with a ton of ideas for 0.3! I'll make an other post outlining the new devels and their contributions soon.

Also, Awn currently has an universal applet menu-system, a brand new preferences application, mac-stacks applet and many more applets in development in the forum, with updates everyday! I am currently working on a way to get everyone working in the same place, so we can have a awn-applets release along side the main Awn release, but more on that later.

I think that's it for now :-).

Tuesday, 24 July 2007

Clutter Foo

So Guadec went really well, for both me and everyone at OH. I got to meet lots of people, see all the cool things people have been working on, and everyone got a chance to see all the different things we have been working on at OH towers :-).

One of the coolest things was that everyone seemed to love the work we've been doing on Clutter, a lot of people spent time at our stand playing with the apps we have written, and generally asking questions on how to start developing with Clutter. Matthews presentation also went very well, and the audience seemed to enjoy seeing all the demos on the big screen.

So, for all those who missed the presentation, and those who just like to watch pretty videos, I'll do a quick recap of some of the example apps that we have in svn (

These should be a great place to start to get an idea of how clutter works, and how the animation framework works. If you are comfortable with Gtk, then it should be quite easy for you to get started with Clutter.


I'll start with this because it's probably the one I play around with the most :-D. It's basically a Surface-type app, written by Tomas. You point it to a directory, and it'll crawl it, putting all the pictures and videos it finds onto the screen for you to manipulate:


This is Matthew's really funky, stupendously cool, hotter than a hot cup of tea, movie player!It has a 'slider' menu for filtering your video collection, plus it'll do something clever with all those TV shows you've recorded (legally ;-) from the BBC, so you can easily see the episode number and season:

Hint: Press 'e' during playback for some fun during a boring video


Yay, my turn :-). This didn't work during the presentation as there wasn't an active internet connection, but its by far the coolest :-p! Coming back down to earth, it's a slideshow program, which has two backends, a directory one (which needs some work), and a Flickr one. The Flickr one is quite cool, you just provide a bunch of tag names when you start it, and its pull all photos matching the tags from Flickr, and continuously update the slideshow. It'll also show the title of the image and the authors name:

Hint: Press left and right arrows to rotate the entire stream of photos. Press up to flip them.


Last but not least, we have the flowers demo, which shows how you can use your cairo skills with clutter. It is a very simple app, but everyone likes it, so I thought I'd post a video anyway :-).

This really needs to be made into a screensaver...

Points To Note

These are in 'toys' for a reason :-). They are still rough around the edges, but they should provide a nice demo of what's possible, and where to start when you decide to create your 3-d masterpiece! All the demos require Clutter 0.3 (some may need clutter-trunk).

Also, please bare in mind that the performance is much better in real life. Capturing the screencast uses a lot of resources, and the conversion from the resulting video file to google video looses a lot of clarity!

Finally, the python bindings for 0.3 are coming, if you would like to help with them you can let someone know in #clutter on, or contact Rob, who is in charge of the python bindings (sorry Rob ;-).

Saturday, 14 July 2007

So now that we have some depth...

Apparently, if you don't pay attention to your projects forums for more than a week, something beautiful will happen...

Yes, that's Awn svn, in all its 3D and reflective glory :-). I'd like to say a huge thanks to haytjes & nablaa from the forums, who managed to make their patches work together to create this effect. There are also a buch of other fixes in svn, so its well worth the upgrade.

As we all like videos, here's one of the reflection in action:

I've recently got a bunch of help from people for different things regarding Awn (thank you to you all), this should see development become quicker, and bug fixes faster. It'll also mean that I can make a proper roadmap, now that I have some help in achieving it!

In other news

There's a bunch of cool stuff I need to blog about, and as soon as I get some time, I will :-). I'm off to Guadec tomorrow, so there won't be much stuff happening code wise, but I do have an Awn-related surprise for you all when I get back this weekend ;-).


As pointed out, it may help if I told you how to actually get Awn looking like this :-/. You need to change two gconf keys (UI coming soon). For the perspective, navigate to /apps/avant-window-navigator/bar/bar_angle, and set it to 45. For reflection, navigate to /apps/avant-window-navigator/bar/icon_offset, and set it to 18. Restart Awn and enjoy!

Tuesday, 19 June 2007

Flickr + Clutter = Fluttr

Hey, I did say your gonna get sick of me :-).

So, what this post about? Well, a little while ago, Matthew and I were talking about what could we do with Clutter which would be quite different and cool, and he had the idea of something involving the internet. So with a little help from our resident flickr master, I embarked on a mission to bring Clutter and Flickr together, in a great union of animations and pixels.


Fluttr is a Clutter based Flickr photo viewer. Once you have authorized with Flickr, you can browse and view your photo sets, together with viewing your photos individually.

A video makes much more sense than I ever could, so:

As you can see, it has cool things like the sets will show the photos within them, photos are downloaded as necessary (and cached locally). It also has a fullscreen option, so it works quite nicely when you want to show off your pictures on your laptop/TV.

You can grab Fluttr from svn by running:

svn co fluttr

Be sure to read the README, as it contains valuable info on how to authorise with Flickr. There are some things that still need to be added, but it works really well, and I hope you guys like it!

And the others thought they had caught up...

hate to depress you again boys, but Awn just keeps getting better and better :-p.

No long time no blog, eh? Don't worry though, that's unlikely to happen again, in fact, I'm sure you'll be sick of me always taking up precious space on PGO with my transparent this and three-dimensional that!

a) how has Awn got better and
b) why am I so happy about it?

Many people already know the answer to (a), latest Awn has full applets support! Yes, that means you can have a trash applet, workspace switcher, and all those other things which you missed from your bottom gnome-panel. I have included a Workspace switcher applet, a Trash applet and a Separator applet in Awn. More to come from me, plus I know of others working on some cool stuff (more on that below).

So, whats the best way to describe this 'applets' malarkey? Well, with a screenshot, of course:


Oh, the main Launcher/Window manager is also an 'applet' (albeit an internal one). So you can position other applets around it.

Okay, moving on, the reason why I am so happy about this feature (over anything else), is that I believe we will now see some really cool stuff for Awn. There have been so many ideas floating around for months, which go from simple applets, to the extravagant (which is pretty easy to do with the excellent Empathy.

I would also love to see some cross-over happening with Gimmie, especially embedding its panel-applet into Awn (blinged up, of course :-).

Anyway, before we get there, I still need to make the applets system a bit more robust, and try and move as much as I can into libawn, so other applets can use colour settings etc, but this is a great start!

P.S. Can I just say thanks to everyone on the forums, bug reporters, and those who leave comments here, they have been really patient, plus they have been invaluable in giving feedback.

Wednesday, 4 April 2007

Look lively boy!

Okay, so I haven't really been doing as much blogging/coding as I probably should have...sorry! The past few weeks have been crazy for me, a *lot* of personal/family stuff was going on, however, this week started very nicely, as I began working for OpenedHand!

This is a dream come true for me, so you can imagine how happy i am ATM :). I'll mostly be working on/with Clutter, which means hopefully you will able to see some cool integration work (for OH and personal projects), especially as I get better at OpenGL & Clutter.

Although I've been away, I have been doing work on Awn & Affinty, heres an account:

  • Beryl window thumbnailer support.
  • Support for international fonts (Varun Ratnakar)
  • Better launcher to window matching code
  • Heavily debugged auto-hide, which should not crash anymore.
  • Better auto-hide animation
  • Bar resizes if it gets larger than the screen width
  • Translation works
  • Some improvements in the DBus backend
I know there is some more info, but I can't remember it right now, and I really need to dedicate Awn its own entry some time over the weekend.


Thanks for all the testers! I have been working on getting all the features in. Svn has a panel applet, so you can have super-quick searching any-time :).

I have been busy pulling out the search & app code into libaffinty, as I have been working on the following two apps (which are part of affinity):

Application Browser

This is an app browser, which is required for the panel applet. This is the main reason for libaffinity, as once you've loaded Affinity, the app-browser loads super-quick. Heres a few mockups I am working off :

As per usual, suggestions are welcome. I hope to commit this over easter.

Desktop Search Frontend

Affinity works fine when you know exactly what you are looking for, but not so well, when you either need to browse everything containing a certain search term, or when you need finer tuning. To this end, Affinity 0.2 will also ship with a search-tool which provides a unified search interface for Beagle & Tracker. Its easy to tell what app it is based on, but I think it looks unique enough not to cause me a problem :). Heres the current mockups I am working towards (about 70% done):

Yes, those fancy reflection effects are in the real one :). This is a much more complicated app, so I hope to commit by the end of next week, but can't promise.

Anyway, I hope that stops the 'are you alive' emails ;). I will back in #awn & forums from tonight.

Friday, 16 March 2007

Arrfinity ;)

What a week! Its weird how so many things come up at once! I won't bore you with the details, but lets just say that 5 days without a net connection wasn't the worst thing that happended!

Anyway, being without the internet gave me some much-needed time with Awn, the fruits of which you'll see over the coming days! However, it did also push me back a few days with some important stuff, so with out further ado:

Yep, thats really Affinity, no mockups, just real code, which you can get here!

Now, as this is a 0.1 release, I ask you to be gentle ;). Here's a break down of some basic features:

* Front-end to both the Beagle & Tracker desktop search engines.
* Has actions (configurable through Desktop files), which should help to speed up common tasks.
* Has in-built, user-configurable, filters which work in the the entry box, so typing 'pics:london' will only bring up pictures.
* Super-fast application searching through an in-built list of applications.
* Colours can be customised to your taste.
* Lives in the system-tray, but can be called by a global key stroke. Default is Ctrl+Alt+a, but you can change it to anything you like!
* Written in C for minimal impact on your system, but maximum speed!

More info is available on the project page. I have removed 'Favourites' for now as it was a bit unstable, but it should be back in over the weekend.

Please bear in mind that Affinity currently only works on gtk+-2.0 >= 2.10, I am working on 2.8 support. Also, Affinity should work without RGBA (i.e. without Beryl or Compiz), but this has not been extensively tested.

OTH, it shouldn't take down your system or anything ;p. One bug that I do know about is that scrolling up & down fast on the treeview widget will cause artifacts to appear, which disappear when you move your mouse over them or press a key. I'm sure that this is just some teething pains between Gtk + RGBA, but I'll try and fix this ASAP.

Also, an I probably should have blogged about this sooner, shortly after I published the Affinity mockups, I got an email from a person who wanted to make something similar for OS X! Lol...who'da thunk it? The application is called Loro, and is free software. He is working on some really cool ideas, such as Google maps integration, check out his blog for more info.

Anyway, better get to bed, I'll leave you with some more screenshots:

Friday, 9 March 2007

Awn Updates

I've been spending all of my free time on Awn recently, cleaning up the code, adding some missing features, and merging some excellant patches, here's a breakdown:
  • Merged a patch by Chirstian Kirbach which cleans up a lot of warning during compilation
  • Fixed a mem leak caused by applications which change their icon many times (ie. Gimp). Also, on my system, g-s-m reports Awn using only 2.6Mb after several hours usage :).
  • Separator will position itself correctly when adding new launchers
  • Fixed bug when closing lots of windows at once, and Awn getting 'stuck'
  • Merged a patch from James Willcox which makes the icons actually 'bounce' on hover, rather than go up & down. I blame him for wasting the next 30 mins of mine as I sat there watching the icons bouncing ;)!
  • When in auto-hide mode, the bar will pop-up when you are dragging a file
  • Launcher icons will change when you change your theme (GNOME/Gtk)

Last week I was talking about having the ability to add menu items to the popup menu of a task through D-Bus, well, now its here!

I have added another Rhythmbox plugin under the plugins/Rhythmbox directory. It's called awn-menus, and you have to move the awn-menus.rb-plugin & awn-menus folder to your ~/.gnome2/rhythmbox/plugins. Heres a preview:

AddTaskMenuItemByName ("rhythmbox", "gtk-media-previous", " "):
where arg1 is the name of the task, arg2 is optionally a gtk-stock-id, and arg3 is a normal name (if you can't use a stock id).

AddTaskCheckItemByName("rhythmbox", "P_lay", False):
where arg1 is the name of the task, arg2 is a mnemonic name for the item, and arg3 is a bool, as to whether it is 'checked' or not.

Both return an ID integer. You then listen for "MenuItemClicked" & "CheckItemClicked" signals on The "MenuItemClicked" will come with one arg, which is the ID, so if it matches your ID, you should do something. "CheckItemClicked" will come with two args, the ID, and a bool telling you whether the check is active or not.

You can also use AddTaskCheckItemByName ( name, ID, bool) to set the check from your plugin after you've created it. The rhythmbox plugin is the best example, so have a look at it ;). At the moment, I have put a limit of 5 extra items per task, as I think more than that looks a bit over-the-top. I still need to add the code for removing an item, and disabling an item.

Okay, thats it for now, expect lots more bug fixes over the weekend, and some brand new auto-hide code!

Sunday, 4 March 2007

I'm not even supposed to be here today

I have had practically no time for hacking this weekend. I am somewhat behind on Awn, but I have been bug-fixing in my personal copy, so expect an update tomorrow, when I get the last little problems sorted out, then on to 0.2 :).

In what little time I had, I brought together some ideas which were floating around in my head, and started some preliminary work on them:

Introducing Arena...

...which you could best describe as a tracker-based media browser/player. It will look like this:

At the moment, I have no code to show, as I am constructing the bits and pieces which make up a program of this type, for instance, the all-important tree-based menu structure. What I can tell you is the following few facts:
  • It is more Front Row than MS Media Center, and therefore has no intended support for TV cards and such (at this time). More likely, however, is a built in Internet TV browsing/viewing.
  • I is written in C, using the rock-tastic Clutter.
  • Pictures don't do it justice. I have had a past life as a Flash designer (shock! horror!), and I have been getting to grips with Clutters effect-code, and its hard to describe the feeling of seeing album covers flying around on screen :). I will try and do a screen cast of some of my example code soon.
  • It will be GNOME-based, as is mostly everything that I do, I'll give you no excuses, it just makes my life easier :).
  • I'd like to add support for more media-providers ie. Avahi (zeroconf).
  • It will do its darn-best to honor different layouts of media & the corresponding cover-art stuff, such as cover.jpg, album.jpg etc.
  • UI is not final, but pretty darn close, unless something drastic happens :). I still need to add some more info in places, but on the whole, I want it as simple as possible.
  • I like the look because I don't think its a blind rip-off of any current app, if it is, let me know :).
I think that's it for now, I can hopefully link to some code in the next week. Okay, now I have that out of my system, my head feels lighter! I promise, no more projects, I am all maxed out on time now :).

If you have suggestions/criticisms, leave comments as per usual, and I'll try my best to get back to you. I'll leave you with another mockup (more here):

Friday, 2 March 2007

Hi pgo!

Hi Planet GNOME'ers!

Firstly, let me say thanks to Jeff for adding me so fast :)! My name is Neil J. Patel, I am 23 years old, and am a Pharmacologist (yes, you read correctly) who lives in London, England. I love GNOME and spend my spare time working on a few projects:

Avant Window Navigator
Avant window navigator (Awn) was my first project, it is a Gnome-based dock which, as taken from the website, "sits on the bottom of your desktop in all its composited glory" and handles the launching of applications & active windows. It also has a D-Bus backend which allows applications to control their icons. Some examples are Rhythmbox setting the album art ask its icon, Evolution displaying the number of unread emails on its icon, Firefox showing its progress on its icons, and Gaim showing your status as your icon. A picture says a thousand words, so :

Awn also has a wiki & forum, and you can also catch me on #awn on

Metadata & Desktop Search
Tracker is where the rest of my free time goes! I work on several projects surrounding GNOME regarding metadata & search:
  1. Nautilus & Metadata Integration : I am working with John Stowers on a proposal for including metadata & tagging/emblem support in Nautilus, where by Nautilus can use Beagle/Tracker to pull info regarding a file + display it in a metadata tile, and it can use the FreeDesktop emblem spec for emblems, so you have a uniform experience across the desktop:
  2. libtracker-gtk : This is another effort by John and myself to have a more integrated experience across the desktop, by having a set of reusable widgets which can be easily added to any application. Therefore, you now have a library which will consist of many cool and useful widgets such as a model-view-controller based list of results, a metadata-tile, a GtkEntry with automatic keyword-completion, a tag cloud etc.
  3. A new blingy search tool/media browser/viewer: based somewhat on these mockups, and using a Tracker backend, but more on that later :).
Er, what else? I think that's it for now, I have lots of mockups for different UI ideas which can be found here, I can't bring all of them into reality, but if you want to, let me know if you need help with some of the more extravagant looking Gtk stuff :).


I've been quite busy recently, but have still managed to do some hacking, so heres some updates:

  • Awn svn compiles on < gtk+-2.10 :).
  • Lots of small fixes, most should be committed tomorrow.
  • Working on support for notifications above the task.
  • Working on support for adding menu items to a tasks pop-up menu.
Also, I'd just like to point you to a whole bunch of plugins using the DBus backend on our wiki. I have also just used the Gaim plugin which on the wiki, and I have to say, its amazing. Speaking to the author, I know that he is determined to get rid of the need for the gaim-systray plugin, so expect some cool stuff!

libtracker-gtk has now committed into tracker svn :), so if you want to include tracker support in your application, be sure to let John Stowers or myself know if there is anything you'd like to see in there to make your life easier!
I have been working on polishing up the metadata-tile & tag bar, and while I was at it, I made this:

Hopefully, if I can fix the little problems that it has, it will be in libtracker-gtk before the next release + it can be the default view when you start tracker-search-tool. Speaking of tracker-search-tool, I added support for D&D-ing emails to the desktop and nautilus. They are basically desktop files which will open evolution viewer :
Anyway, that's it for now, if everything goes to plan, expect some cool stuff tomorrow ;)!

Saturday, 24 February 2007

To Quote Destinys Child...

..."Get on the bus", which, as of revision 125, Awn is on :).

Awn now has a DBus backend! Which brings to life one of my main features for Awn, which was the ability for applications to control their Icons on Awn!

It is *very* new, and I haven't added all of my ideas, but Imy top 3 are now working:

Ability To Change Task Icon
This is especially important for media applications, so they can set the icon to whatever cover-art they have:

Yes, its FutureSex/LoveSounds, and that says alot for my music taste, but leaving that aside for the minute, you'll be happy to know that Mr. Timberlakes cover art is actually the Rhythmbox launcher :).

I basically have hacked the standard artdisplay plugin for Rhythmbox and added support for the cover to be shown on Awn. If there is no cover, it reverts back to the standard icon. I have included it in svn, under the new 'plugins' folder. Installation instructions are also included.

Little Information Bubbles
These would be important for applications such as Evolution, which could show how many unread emails you have:This is not a real-life plugin, its just a demo of what can be done. If I have time, I will make this into a proper plugin.

Progress Information
This is probably my favourite! In-built progress reports into the task icon:

*Update* An example video showing Firefox downloading a file:

This, again, is not a real plugin for Firefox, but demonstrates whats possible.

There is still a lot of work to do, regarding drawing, alignment, etc etc. However, now the basic boilerplate stuff is in, this should be easy to do.

Here are some things that I am going to add over the weekend:
  • Ability to have a small icon composited on the main task icon. Think Epiphany settinging the current favicon onto its task icon.
  • Ability to add menu items over dbus, and listen to their signals if clicked by the user. For instance, menu item for evolution to add a contact, Totem to pause a movie etc.
  • Predefined 'types' of apps, with special buttons, i.e. a MEDIA_TYPE that shows buttons for reverse, play/pause, and forward.
  • Some more styles to display the progress 'bar'.
  • Option to attach a larger pixbuf to the 'tile' which shows on hover. So, Rhythmbox can attach a 400x400px sized album art, which would show with the window title.
Making Your Own
If you want to write a plugin for your favourite app, heres some info that you'll need, the code is in Python, but should be easy to adopt for other languages.

bus = dbus.SessionBus()
obj = bus.get_object("", "/com/google/code/Awn")
awn = dbus.Interface(obj, "")

Gets you the basic awn object.

There are two main ways to get at your task,
  1. By the name of the application (string). This works best for single-instance applications.
  2. By the xid (long), which is best for multi-instance apps , as it will only effect the icon for that window. One way to get the xid is by calling GDK_WINDOW_XID(window->window).
  3. I am adding support for using the pid to reference your application.
Setting Icons
To set the icon for a task, you need to call either SetTaskIconByName or SetTaskIconByXid. In python, it would be :

awn.SetTaskIconByName ("rhythmbox", "/tmp/rhythmbox-album-art.png")


awn.SetTaskIconByXid (long(xid), "/tmp/rhythmbox-album-art.png")

Yes, the second argument has to be a /local/path/to/the/image/file. Using /tmp is the best idea, as it will get wiped when you restart.
You have to call awn.SetTaskIconByName/Xid every time you want to update, even you are using the same file name (recommended as to avoid unneccessary junk in /tmp).
If you need to unset the icon, use :

awn.UnsetTaskIconByName ("rhythmbox")


awn.UnsetTaskIconByXid (xid)

The name may not always match, I am working on this, so be patient if your fav app does not work :).

Setting Information
Setting information is easy:
awn.SetInfoByName ("evolution", "23")


awn.SetInfoByXid (xid, "23")

Unset using:
awn.UnsetInfoByName ("evolution")


awn.UnsetInfoByXid (xid)

Setting Progress
This is very easy:
awn.SetProgressByName ("firefox", 60)


awn.SetProgressByXid (xid, 60)

There is no 'unset' function, just set the progress to 100 to clear the icon of the progress meter.

If you need any help, or need better API, just drop me a line. Also, we have a forum, thanks to Mike Jones (searayman), so if you do make anything based on the DBus backend, post it there so we can all have a look! I'll probably include some plugins with the main tarball, so let me know if you make something.

*Update* The forum seems to be down at the moment, so I recommend using the wiki to upload your creations. Just add a page under the 'DBus Plugins' page, you can also attach files to the pages you create. I have added the Rhythmbox plugin as an example.

*Update 2* Just to annoy me, the forum is actually back up again. So its up to you where you want to post your plugins, forum or wiki, whichever suits you best.

And Finally
I am going to do mass amounts of bug fixing over the next few days, and therefore expect svn to be in a bit of a flux as I sort some things out.

Tuesday, 20 February 2007

Where'd You Go...

...not that far actually, just been very busy at home!

I have, however, had time to straighten up some cool tracker stuff!

Nautilus Metadata Tile
After speaking to Alex in #nautilus, it seems that we could really make something very cool, utilizing nautilus & tracker/beagle. He has given me direction regarding what would be accepted into Nautilus. He had some sweet ideas regarding file previews etc. As far as I know, no other OS has these capabilities. I am going to dedicate a whole entry to it later on in the week, with mockups etc.

Tracker Search Tool (TST)
I have been adding the code from Nautilus Metadata Tile into TST recently, trying to get it in before the 0.6 release of tracker (at the time of writing I still don't know whether it will make it) :(. However, to whet your appetite, I can show you some early screenshots :

As you can see, it works quite well :). The tags bit is my favourite, because it is really simple to add/remove tags:
  • Clicking the "add" button shows you a GtkEntry, where you type in tags separated by spaces, then click "apply" to apply or "cancel" to, er, cancel.
  • The tags themselves are clickable, so they will launch a new TST, and set it to search for the tag.
  • Right clicking the tag gives you a popup, letting you search for the tag, or delete it.
I am going to send the patch tomorrow, and hopefully, Jamie can add it to tracker svn ASAP (if I, you know, haven't broken every single coding rule known to man).

Avant Window Navigator
I have been a bit short of time regarding Awn, but I am dedicating tomorrow to it, so expect some cool stuff (as per usual), and thanks to everyone who has been bug reporting, sending translations and sending patches! Translations and patches will be merged tomorrow. Also, I have a little ace up my sleeve...only thing I can say is that it concerns setting up an array of pixbufs at incremental sizes for the launchers & tasks ;).

Friday, 16 February 2007

Nautilus Love

I've spent some time on the Nautilus Metadata Tile, as I had a few ideas regarding the UI. I can't go over the top with the colours and effects, as I hope one day this can be accepted into Nauitlus main. However, I have messed around with GtkStyle & Cairo, and have come up with this so far:

As you can see, I have just done a simple gradient between the base[GTK_STATE_NORMAL] and bg[GTK_STATE_SELECTED] from the active theme. I think it works quite well in practice, and doesn't 'steal' the focus away from the main icon/list view.

I have also added a GTK_STOCK_EDIT button in the bottom right, clicking this will swap the tags GtkLabel, to a GtkEntry, so you can edit the tags.

I also got round to adding some of the other tiles, and some icon/thumbnail support. Below are some screenshots (with different colour schemes to show how well behaved the gradient is ;).

As you can see in the Image tile, if an image has data about the camera/camera model, the title will reflect this (don't laugh at my camera model ;), exactly like what happens with a music file.

I still need to add the document tile, but I have left that till last because it will have a snippet of the contents, and I need to decide on how to present this!

I am still making code changes, so if you have any more ideas, or want to add anything to the tiles, let me know in the usual ways.

Wednesday, 14 February 2007

Bubbles & more

I have actually been doing some Awn hacking today, and here are some updates:

  • "Text Bubbles" feature is now implemented. You can choose the colour and alpha.
  • "The dock" style arrows have also been implemented.
  • Arrow colour and alpha can be changed.
  • Updated avant-preferences to handle the new options.
*Update* forgot to mention that these features are in SVN, so feel free to test them!!

Heres a clip of the text bubbles (google video page):

No auto-hide just yet, still trying to get rid of the bugs, but hopefully I can commit this soon!

I wanted to know if you guys would be interested in a 'tile' instead of just a text label when you hover over a icon. So this would be like:

| | | Application Name |
| | icon | Launcher details/Window Name |
| | | Some other useful info |

This would be constrained to a certain width and height, But I think it would look quite sweet. It will also be useful when I get round to adding the DBus backend for apps to control their icons.

Let me know if your interested in this feature, and I'll code it.

Tuesday, 13 February 2007

Nautilus & Metadata, love at first sight

Last week, John Stowers and I spoke about Tracker and Nautilus integration. After looking at Affinity and some of my mockups, he pointed me to some excellent work he, and others, had been doing to get Tracker more integrated with the GNOME Desktop.

This gave me some ideas, so I agreed to try and see what I could do to help the effort, and after some pointers from John's current work on emblem support, Jamie's help on #tracker, and a Alex's help in #nautilus, I can bring you this:

What you see there is a 'metadata tile', which goes and fetches metadata from Tracker about the currently selected file in Nautilus. It is all done asynchronously, so you do not feel a difference while browsing, even when you frantically click folder after folder looking for a file (which I still manage to do, even with Beagle & Tracker installed :-s ). Also, if it cannot find any metadata, it will hide itself, letting you have more viewing space.

This is extremely alpha software ATM, so no released code yet, expect some by Sunday/Monday. It doesn't crash Nautilus or anything that sinister, but I need to clean up the code, and also complete support for Documents, Videos, & Images.

You may also notice the little 'Tags' label at the bottom. Well, this works exactly like on all those web 2.0 sites. Clicking the label with allow you to edit the tags in an GtkEntry. You just type in all the relevant tags, separated by spaces, and it will update them for you. This, together with planned better support for tags around GNOME, will have you tagging anything & everything.

Regarding the UI, please bear in mind that this is alpha software ATM, I need to make the edit ting capabilities more apparent for the user, plus the font weights & sizes need to be sorted out. Also, I haven't touched this with cairo yet ;), so expect some 'eye-candy' stuff soon.

The tile also supports folder.jpg/png files, as most of my Music collection & Video collection is organised like this!

Here are some ideas which I am aiming for:
* Beagle support (if possible).
* Let the user specify which fields to show.
* Editing of Tags & Comments (and maybe some other fields also).
* Document tile which shows a snippet of the document (together with the usual Author, Word Count etc).
* Video tile which shows various video metadata.
* Picture tile which shows EXIF metadata, and failing that, basic picture metadata.
* Proper thumbnailing support for PDFs, Videos, Pictures etc.
* Be able to read the album art from the file directly.
* Allow it to be disabled from the menu.

There are more ideas, but I cannot think of them right now! If you have ideas, express them here, or mail me, I am especially open to UI ideas right now, as I want to decide on a set UI scheme soon. I am also intrested to hear what you want to see in the tile for different mimetypes.

That's about it for now, I am going to hack Awn for the rest of the evening, as I have been neglecting it, so expect a blog post for new Awn features sometime soon!

Friday, 9 February 2007

Awn Updates

I've been working hard to make the general usage of Awn a bit better, so here's the newest stuff:

1. Awn itself now has a popup menu, access able from the left or right edge. It has two options for now, Preferences (which I totally missed for some reason, until it was pointed out to me!), and Close, which will close Awn properly, and not kill your tasks that you have launched with the launchers ;).

2. You can D&D to the bar as well now, so basically the two edges are D&D hot spots for launchers.

3. Due to popular demand, the launchers and tasks are now separate. Therefore even if you D&D a application, it will popup on the launchers side, rather than at the end of the bar.

4. Continuing from 3, you can have a visible separator between the two. avant-preferences has been updated to reflect this. You can also choose the colour of the separator. Its only a 1px line for now, but I will make it look better soon. *UPDATE* Not any more, now its much sexier, take a look at the second screenshot!

Also, Awn now has a wiki, which was kindly put together by MikeJones3. So it should be easier for you to discuss ideas and such.

I would also like to say a big thanks to everyone who has commented on my ideas over the past two days! I got Dugg again, I've been twice on Planet GNOME (Jeff Waugh linked to my blog, and just now, Ross Burton has linked to Awn!). Its really cool to be able to read everyones thoughts and see everyones reaction! I promise to make this stuff a reality as soon as I can!

P.S: Maybe its time to put some resize code into Awn:

Wednesday, 7 February 2007

While I have your attention

I've been promising this for a while, below is an account of ideas regarding Awn, the GNOME Desktop, and also some information on future projects.

Awn and the desktop
I have been thinking about Awn for a very long time. Although it is young in terms of releases, its been rattling inside my head for ages, questions like What more can it do with task icons? How else can it fit into the desktop? What else does it need to complete the effect?

Now, below I have included some mock-ups of my ideas. You will notice a little search window in there, well that my friends, is the continuation of Awn, Affinity.

The best way to describe affinity is to say that it will be a front-end to all the information on your desktop, imagine it as 'Planet' to different feeds on your desktop, such as beagle/tracker, recent documents, bookmarks, tags, contacts, etc. It can be called from either a key-stroke or from the gnome-panel. Some features :
* It has search-as-you-type.
* Actions (like typing "" will present you with an option to open it).
* Written in C, its extremely fast, even on a old system.

I haven't released any code yet, but expect some in the next few weeks, once I have cleaned it up. It, like Awn, is in early stages of development, and just like Awn, everyone's views count!

Speaking of Awn, you may have noticed the bar on those mock ups...looks familiar doesn't it? Those are the mock ups I used to make Awn. As you can see, the bar has a mock up for startup notification (the spinner), yes it looks a bit simple now...just wait till I'm done ;).

Below is also a mockup of whats coming in 0.3 for the 'I have a wide screen, cater for me!' guys!

As you can see from the previous mock ups, there are some funky themes in there! That leads me to my next point, which is this: I love having a composited desktop, Awn doing its thing, Beryl throwing windows all around the screen, cairo-clok ticking away, however, in my day-to-day tasks, I am left a bit disenchanted, therefore, as a side project for me to show my cairo/gtk prowess(:p), I am also going to start work on a gtk theme that takes advantage of the composited environment. Now, please bear in mind that a theme has to be used all around your desktop, and I am guessing that any theme that uses extensive cairo drawing + transparency is going to have an effect on your cpu, but I still think its worth it as a proof-of-concept.

Regarding the actual theme, I will have a separate post on that later, but until then, click here to see some of my mock ups (going from pretty standard to extreme). If anyone has ideas, please let me know in the usual ways.

That's enough for now! I have SO many other ideas for desktop linux its not even funny, but I will document them as/and when I have time to implement them. Some are desktop-orientated, but don't worry, most revolve around eye-candy like this:

Anyway, I better get back to Awn...still a lot of features/fixes to write ;).

Please Ignore

Pressing 'Ctrl+S' will publish the post, after 4 years, I still have the windows habit :(.

Tuesday, 6 February 2007

Some updates

People who have been having problems with Awn regarding artifacts appearing on the icons, this has been fixed in SVN. Its an wonder what properly clearing the cairo_context_t will make ;).

Also, I have been working on improving the D&D code, and you can now drop URI's to a launcher and it will start the program with that file. It works quite well around the desktop, i.e. dragging a movie file to the Totem launcher starts Totem!

Also, this works for multiple selections aswell, i.e. high-lighting more than one picture in Nautilus, and dragging it to the GThumb launcher will start GThumb with all the selected files displayed!

You can continue to D&D to a launcher even after it has become associated with another window!

Please bear in mind that not all of the desktop works the same ie. dragging the URL from Firefox to the Epiphany launcher does nothing, however it works if you drag a URL from Epiphany to Firefox! Its up to the application as to how well-behaved it is in a D&D situation. However, I am working to support more targets if I can.

Also, please remember that the launched application is still under the control of Awn, therefore if Awn dies, the application goes with it! If anyone can shed some light how I can launch an application in a way that it survives if Awn closes, I would be most grateful!

I have changed the gconf code , so you should not be getting anymore segfaults after the make install. Some people have commented that it is hard to keep track of SVN changes, so whenever there is a new feature implemented, I am going to add it into the README file, so its easier everyone to know whats new. (I also update the Changelog file, but I can be more descriptive in the README).

Sunday, 4 February 2007

Oh, thats smooth

Well, its finally done! I just committed the smart launcher code to svn! After the rework of the internals (not entirely without its problems), the move to cairo for drawing, and much smoother operations, Awn now has launcher support!

The fine-tuning has yet to be done, but heres the jist of it:

* Drag and drop an Application file (a .desktop file) to any part of the bar (including another task/launcher).
* The launcher will now pop-up at the end of the bar. Ready for you to use it. To show that it is a launcher, it has a little upwards facing arrow at the bottom.
* Right clicking on the launcher gives you an option to remove it.
* Left clicking launches the program. The icon will bounce until the window opens, and suddenly the little arrow is gone, the launcher just like any other task on the bar.
* Right clicking now presents you with the normal window menu.
* Upon closing the application, the launcher will revert to its previous state, and the little arrow pops back to tell you its a launcher again!

A demo (click to go to download site):
Bear the usual in mind when watching the video (ie. jerkyness is not apparent in real-world use).

Now as this is new, here are a few facts/known issues:

* Your launchers data is automatically kept in a gconf uri list, but yuo cannot modify it outside the program (in the sense Awn will not read the modified code until it restarts, not that it will blow up your computer, I waiting for svn revision 88 to do that)
* ATM, the code that associates a launcher with a launched application works about 90% of the time, but some applications have a special way of spawning, which confuses Awn. A good example is Realplayer, which you will execute as 'realplayer' but will run as 'realplayer.bin'. If this occurs, you'll just get another task on the bar.
* ATM launched applications are connected to Awn, so if you exit Awn, say bye bye to the applications which you lauched using Awn (its a new idea I had to keep people using Awn).

Also, apart from lots of small fixes, I have added support for _NET_WM_ICON_GEOMETRY XProperty (thanks to Quinn of Beryl Project). This is basically what tells the window manager where the windows icon is on screen, so the WM can do its effects (such as Beryl's Magic Lamp effect). This should also allow some of the new Beryl plugins, like the live-thumbnailer, to work, although I need feedback on this.

A quick vid (click to go to download site):

Well, thats it for now, its 02:38, and i'm off to bed!

Friday, 2 February 2007

New code

Since changing to GObject based code for the task-manager (what keeps track of open windows) & task (a representation of on window on the bar), I can say that Awn feels much more resilient! Especially when opening and closing lots of windows. I am experimenting with the idea of the bar knowing when you have opened lots of windows, and therefore skipping the effects, to make it feel slightly faster.

Each 'Task' is actually a GtkDrawingArea, which is then made transparent, and the Task's icon is drawn onto it, using with necessary padding for the effects. Speaking of effects, moving to Cairo for the rendering is allowing much more freedom regarding what effects you can do. I will be demoing some ideas later on, but for now:

This is the current open and close effects, the idea being that the icon 'pops' in at the bottom of the screen, and then 'evaporates' away when you close the window.

P.S. Excuse the jerkiness and the redrawing you can see of Gtk, lets just say I am not developing on the fastest of machines, just be sure that it is not as jerky in real life!

Thursday, 1 February 2007

Sweet mother of all that is holy!

756 Diggs and counting for Awn!
I now feel I should have tried harder with the website ;)

Anyway, I feel this is a good a time as any to clear some things up:

1) I don't work for Google (I wish I did :), but do use their excellent project-hosting services.

2) This differs from previous docks in that it is firstly a task switcher, just like the task list in GNOME, and therefore it will keep track of all open windows on the desktop.

3) Although this look like the MAC OS X dock, it does not try to imitate it. Awn is fully configurable, it has planned features not available elsewhere, such as the ability for applications to control their icons through dbus, and allow progress indicators on the icon.

4) Launching applications from Awn and tracking the application windows (like 'The Dock') is planned, and is being implemented as we speak.

5) The dependency on a patched libwnck is not required in svn.

6) I you are getting a segfault, this is a problem with schema installation, and can be overcome by entering the 'data' directory (after make install), and executing:
$  gconftool-2 --install-schema-file=avant-window-navigator.schemas
Also, if you are using svn, be sure to try the new task-manger launching Awn like this:
$ avant-window-navigator -x

Tuesday, 30 January 2007

awn - update

Just updated svn with new code which drops the need for a patched libwnck, as it talks directly to X (thanks to some copy-and-paste from the libwnck source ;). It, however, does need testers to make sure it is all working properly.

Now, on to the smart launchers!

Monday, 29 January 2007

avant-window-navigator fc6 rpms available

Added FC6 rpms, including the updated libwnck, to make all you Fedora users lifes a bit easier!!
I have included the debuginfo rpms, which I suggest you install as well so if there is a problem, you get useful output!

*Update* New rpms available here. They should fix the gconf problem, please let me know if they work, either by leaving a quick comment here, or emailing me : njpatel_AT_gmail_DOT_com.

avant-window-navigator initial release!

Finally! avant-window-navigator-0.1.1 is out the door, and after some teething pains, all seems well.

To help people grasp the idea a little better, I have posted some screenshots here.
Also, I have made a screencast (download awn-demo.ogg) which gives you an idea of how Awn works/looks when you are using it (it was my first ever screencast, so forgive the lack of direction :).

If you are using Awn, and hopefully enjoying it, I would love to here from you regarding what features you'd like to see, and/or any ideas regarding the visuals.

Tuesday, 2 January 2007

Hello World...

...and welcome to my blog. I hope for this to primarily be a place for me to share information about the software that I write for, and my experiences with, Linux. I may also sprinkle in some posts about myself, my life, and my personal experiences, but I promise not to make them too boring!