Audacious CSS Desktop Programming

Take a look at this video, here I show an awesome new technology for using Clutter/Gtk with Cascading Style Sheets.

Audacious Video

You can test this out for yourself with Ubuntu 12.04 (Beta) using the following:

sudo apt-get install gir1.2-gtk-3.0 gir1.2-clutter-1.0 gir1.2-gtkclutter-1.0 gir1.2-gconf-2.0
bzr branch lp:csslavie
cd csslavie

Note: default clutter/cogl has a bug which prevents the background’s opacity setting, so you won’t get as cool an effect. But a fixed version of those libraries should be available eventually.

Please comment below what you think.

Lab Session Manager, New Release 1.2

I’m pleased to release a new version of the lab session manager.

The Lab Session Manager is a indicator which times how long you can be on the computer for, notifies you when you’re running out of time and then logs you off when your time is over. It replaces the old and unmaintained timed functionality with a modern, gtk based system tray icon and logging functionality for generating reports about who is using the computer for how long. See previous blog post here.

This version includes a successful upgrade of the code to python modualisation which will help future bug fixing. plus a big upgrade to the logging functionality to allow logs to be read back and sorted and reported on. New reporting mechanisms are in the works for the next version too.

You can find this release’s ppa here or the source packages in the above link. Please give the PPA time to build everything.

The next release should also include more fixes and some custom icons, so we can guarentee the style and design of the dialogs no matter what theme you’re using.

If you find any bugs, please report them in launchpad here.

Registration Form, Gtk Forms

The GtkMe python lib provides a form window which allows me to construct a multi-page form with data validation. I’m pleased with the results I’ve committed today that allow a new user to register themselves within the login screen.

class RegisterWindow(TranslatableFormWindow):
"""Display a create user window"""
name = 'register'
primary = False
fields = [ 'postcode', 'age', 'gender', 'passphrase', 'computeruse' ]
def __init__(self, *args, **kwargs):
self.realname = kwargs.pop('real_name')
TranslatableFormWindow.__init__(self, *args, **kwargs)
intro = self.widget('label').get_label()
self.widget('label').set_label(intro % self.realname)
def cancel(self, widget, event=None):
if isinstance(widget, Gtk.Button) or (event and \
event.key.keyval == Gdk.KEY_Escape):
def get_data(self):
"""Return all the user entered data"""
result = self.field_data()
result['name'] = self.realname
return result
def pre_exit(self):

While I’m not finished debugging it all, the idea is to be able to make Gtk apps which have a wizard style layout with minimum effort. Each page has validation checks (if you want) and standard signals which you can stick into glade and have next, back, cancel and destroy handled for you.

This code controls a 5 page registration window as so:


Launchpad and Gtk weaving

I’ve making a generic gtk class which will allow me to set up threading for a nautilus python extension, the idea is to set off a new gtk main loop with a window (using gtk builder) and set off a thread. To bind them together I’m using gobject timers with stacks of calls which cross the boundaries.

So far it works and has improved the load speed and usability of the ground control project. The generic classes mean I can expand it and reduce code complexity.

What are your thoughts on this problem? Is this the right pattern to use?

Gnome Summit (@MIT)

For this year’s gnome summit I decided to attend. I wanted to see what was going on and keep in touch with various people in the FOSS community. While I’m not a gnome hacker myself, I have made gnome apps, plugins and know some of the people working on new things.

So interesting things I learned at this summit, firstly I’d like to appologise because my sleeping pattern went wrong this weekend so I didn’t attend as many of the summit sessions as I wanted. But the session about Gnome Shell was interesting and it’s good to see people working on things that scratch their itches.

Gnome Shell, looks very cool but need more time to finish, it does require GLX so older computers without 3DFX will probably not be able to use Gnome Shell at all. Hopefully when Ubuntu M comes out we’ll have figured out a way to keep the support for older P4 computers that we use for refurbishing here.

Miguel de Icaza was there on Saturday and while I didn’t at first recognise him, I think he may have recognised me. So while we got into an argument about the relevance of mono’s moonlight implementation without the Microsoft PlaySure DRM components (i.e. Netflix), he did at least give me a hug and appologise for calling me a douche later. So we can all have ideologically different perspectives and still be human beings.

Fedora, there were some people from Fredora/Red Hat there and there was some very interesting casual conversations about the perspective that the Hat communities have on the Ubuntu community. They are disappointed with the level of respect that upstreams get from Canonical and by extension the Ubuntu community.

Communities seem to be a really strong theme for a few people. I think the Ubuntu LoCo community is showing up the more programmer centric communities as we’re not able to program but we are able to interact with none technical people, organise events and advocate for Free and Open Source Software in a much bigger way than Gnome, Fedora or others. I think some of these projects may spawn community projects of their own, and when they do I will look forward to working with those groups in my area.

Ubuntu had a showing at the Gnome Summit, there was a handful of people from Canonical Desktop Experience team there (2 or 3) and there was me from the community, but other than that it was a fairly anti-Ubuntu crowd. I got criticised for being naive that I was spending my time working for Canonical for free (Ubuntu and Canonical are the same thing apparently) and that the Red Hat guys couldn’t understand why anyone would want to work on Ubuntu at all, since Canonical is playing silly bastards with upstreams.

I think this backlash is coming from the notify-osd interaction, the fact that patches are not welcome downstream and that Canonical folks have been rumoured to have been instructed by Mark Shuttleworth to not engaged in upstreams at all. There is a deep mistrust of Mark and Canonical, their motives and their methods, some warranted, others based on hearsay and political culture (pure capitalists don’t like companies to not have shares apparently).

The gnome fear is that Ubuntu will completely fork Gnome, or will have to because of all the modifications which are being either hidden from upstreams or are diverging from any sort of consensus. The perception of arrogance of both emerging camps and how they’re moving forwards is interesting.

There was an interesting argument that went along the lines of “There is a finite number of developers, if all the really good ubuntu developers are all hired by Canonical and Canonical starts to go in a direction that the community doesn’t want to follow in, even if it’s possible to fork, where will the talent come from to maintain it?”. It was an interesting hypothetical situation.

Now I’m not totally convinced of everything I’ve reported here, so don’t comment to me about how wrong I am to listen to obviously biased sources. I’m reporting it because it’s interesting and like all human conflict can be put out of perspective very easily. Take these casual observations with a grain or two of salt, because I don’t think the FOSS world is about to break apart in any major way.