» tagged pages
» logout
(or Cancel)

(Editing anonymously: to be credited for your changes, login or register a new account)

other page actions:

Tags Applied to this Topic

1 person has tagged this page:

avant-window-navigator Wiki Pages

Friday, May 09, 2008

Bits & Pieces

As usual, I'm leaving far too long between each blog post, but I thought I'd make a small update until I get a chance to write up everything that's been going on:

  • Canonical - The first couple of months have been awesome! Lots of cool things are happening here, everyone's very busy and there are some really exiting projects which will hopefully be in public very soon.
  • UDS Prague - I'll be attending UDS this year, so ping me if your attending and would like to discuss various bling on desktop/mobile environments! Extra points if you support Manchester United, and want to go watch the Champions League final on the wednesday that week :-).
  • Awn - Not much happening at the moment from my side. Hopefully this will change in a couple of weeks, at which point I hope to finish the remainder of non-composite support in trunk, and make a beta release for 0.4
  • Random Hacking - Since late last year, most of my spare hacking time has been spent on Awn, which is great, but it means some of my other ideas/projects got left behind. So, I've been trying to remedy this by picking up these projects and starting to work on them once again. The two I'm concentrating on at the moment are Nautilus and Affinity. I hope to get some code out soon, so stay tuned!

Monday, March 10, 2008

We don't discriminate baby

The awn-core team released Awn & Awn-Extras 0.2.6 couple of weeks ago!

These releases bring with them more stability, a lots of bugfixes, and some interesting new features which include Vala bindings, an updated UI for Awn Manager, new applets, more documentation and support for non-gnome desktop environments.

Desktop Agnostic

Mark Lees (malept) long-standing desktop-agnostic branch was finally merged into trunk. What it does is separate three 'desktop-specific' parts of Awn and provides multiple implementations of them, suiting your current desktop set-up:
  • Configuration: Either a GConf (default) or GKeyFile settings backend.
  • VFS: Three VFS backends, GnomeVFS (currently-default), ThunarVFS and GIO.
  • Desktop File Reading: Either libgnome-desktop (default) or EggDesktop.
As you can see, by default Awn uses Gnome libs, however, it's now possible to compile it specifically for Xfce4 or just Glib/GIO.

This abstraction also spreads to the applets in Awn-extras, and most of them have been ported to the new style, with the goal of porting all of them by the next release.

Roadmap

Speaking of the next release, there have been some changes to the Awn versioning system & the roadmap. The new roadmap looks like this:
  • 0.4 - Non-composited WM support; Better handling of multi-monitor setups; GtkTheme support; Awn-curves;
  • 0.6 - Rewrite the launcher/task-manager, adding support for window grouping, window sorting, window-thumbnails-as-icons, easier plugin writing, and a more extensive DBus backend.
  • 0.8 - Allow Awn to reside on any edge of the screen; TBD
  • 1.0 - Multiple Awn panels; TBD
More details available here.

As you can see, the 'major-rewrite' of Awn has been split-up into sizeable chucks, which allows for more releases and allows us to introduce the new code a bit at a time.

Misc

If you need help installing Awn, are having problems, or just want to chat about development & features, please check out the forums, wiki or stop by #awn on irc.freenode.net, where there's always someone willing to help!

I'd also like to welcome Julien Lavergne, Mark Lee and Rodney Cryderman to the core team. They have done a lot (most) of the work for this release, and have kept the Awn boat floating.

Finally, once you've installed the Awn and feel like trying out something new, set /apps/avant-window-navigator/bar/bar_angle t0 -1, and see what happens (this is courtesy of ;-).

Friday, February 22, 2008

To continue the trend

today was my last day with OpenedHand. I'd just like to take this opportunity to say "thank you" to everyone at OH. I've had a great time working there, and learnt so much while working with people like Matthew/Emmanuele/Ross/Thomas on some of the coolest projects around.

Looking forward, I'm excited to say that on Monday I'll be starting at Canonical as a "User Interface and Applications Engineer for Mobile Internet Devices". I'll be doing the same type of work as before, with continuing work with creating/adapting Gtk & Clutter applications for mobile systems & touch-based UIs. The goal being to make sure that Ubuntu Mobile is as usable & pretty as any other mobile platform out there :-).

Saturday, November 24, 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, November 06, 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, October 07, 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 gnome-look.org!

Applets

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!

Stability

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 ;-).

Future

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.

Thanks

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, September 13, 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:

Applets

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

stacks
Stacks

last.fm player
last.fm


Main menu

Launchpad

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.

Tuesday, July 31, 2007

We are sailing...

...across the shore from code.google.com to launchpad.net!

Why?

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!

http://www.launchpad.net/awn
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 code.google.com 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, July 24, 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 (http://svn.o-hand.com/repos/clutter/trunk/toys).

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.


Table

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:






Woohaa

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

Aaina

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.

Flowers

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 irc.gimp.net, or contact Rob, who is in charge of the python bindings (sorry Rob ;-).

Sunday, July 15, 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 ;-).

Update

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, June 19, 2007

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!

So,
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:

desktop-16-06-2007

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.

Tuesday, June 19, 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

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 http://svn.o-hand.com/repos/clutter/trunk/toys/fluttr 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!

Wednesday, April 04, 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:

Awn
  • 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.

Affinity

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.

Monday, March 19, 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, March 09, 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 com.google.code.Awn. 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, March 04, 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, March 02, 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 irc.gnome.org.

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 :).

Thursday, March 01, 2007

Updates

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

Awn
  • 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!

Tracker
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, February 24, 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", "/com/google/code/Awn")
awn = dbus.Interface(obj, "com.google.code.Awn")

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")

or

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")

or

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")

or

awn.SetInfoByXid (xid, "23")

Unset using:
awn.UnsetInfoByName ("evolution")

or

awn.UnsetInfoByXid (xid)

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

or

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.

Monday, February 19, 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 ;).
Page 1 | Next >>
Username:
Password:
(or Cancel)