In addition to my various long term and continuing projects, I’ve picked up a few new things this week…

Epiphany. Seed extensions.
After the Seed 0.3 release there was a bit of interest in developing a Seed based extension system for Epiphany WebKit, for (I think) obvious reasons. I threw together a prototype loader and fixed a few other things, and Tim helped by helping port extensions (So far we have an Undo tab close extension, and a confirm closing of multiple tabs extension).

The early results are at:
git clone

The interface could still use a bit of work, and in the repository is a patch to gir-repository to build a gir for the Epiphany functions, however this not crashing requires a patch to introspection which I’m still working on upstreaming (also in the git tree if anyone is desperate to try it. gir.patch and gi.patch).

Will put some more work in to this later in the week.

Clutter 0.9 Fun. Tetris and Same.
Tim and I are working on a project making…gratuitous use of Clutter, and so stemming from a desire to both learn the new 0.9 API, and write some Seed examples for it, so we wrote a few small games as examples last night.

Same Gnome Clone – In Seed! from Tim Horton on Vimeo.

Tetris from Robert Carr on Vimeo.

The funny part about the Tetris game is it’s actually built in Seed around a libtetris written in Vala, the client itself is only about 120 lines of Seed script. The new Clutter implicit animation API made it easy to write.

Both of these are in Seed SVN in examples/, but either working on anyone else’s machine is dependent on a Clutter patch which I’ll post to Clutter bugzilla later today. In the meantime check out the videos. Clutter is fun

After seeing the “Do-ifying” GTK post, I decided to make a GTK module (which I am calling “Magic”) that exposes the GTKUImanager hierarchies for an application over DBus. This has been interesting to work on as I’ve been using eggdbus which has in general been a pretty good experience.

I got a basic outline working (list actions, activate action by group/name), but I want to work on the interface a bit more before I post anything.

Hopefully with some extra application tracking, this could allow you to use Do to interact with your current application (with actions like “Save as”, “New tab”, or maybe your five most recent documents names, all being available as Do actions depending on your context).

I’ve been warned that I may be creating AppleScript for GTK. Oops?

12 Responses to “Projects for the last few days.”

  1. […] just posted a bit about what we’ve been working on recently… I won’t talk about everything, but I […]

  2. Mark Doffman Says:

    If you are re-creating AppleScript then you have the wrong solution. There is already an interface that exposes the UI hierarchy to remote processes, its called AT-SPI and its part of the Linux Accessibility infrastructure.

    Currently AT-SPI works over ORBit, but I’m in the process of translating it to D-Bus. Take a look at the pyatspi library and see if it may suit your needs. There are already many testing applications using it (LDTP, Accerciser, Dogtail, Strongwind) so its not just useful for Accessibility but automation too.

    In the specific case of ‘Doifying’ Gtk I’m not sure how useful exposing the UI hierarchy is. I think each application will have to declare its ‘Do’ commands, although there may be a few basic ones such as ‘Save’ that could be implicit in the UI that are easily discovered.

  3. grigio Says:

    Very nice effects!

  4. The level of awesomeness here is astounding. Keep up the good work!

  5. Vadim P. Says:

    Sounds like really neat technologies, but how well are they documented?

  6. Mark Doffman Says:

    To get an idea of how things may go using AT-SPI / pyatspi I have created a script that locates everything on the desktop that has a keybinding. It then prints out all the keybindings, along with the name of the widget, and the name of the application they are in.

    The script is at

    Let me know how things go. the more I think about ‘Doifying’ general applications the more exiting it seems.

  7. Marcus Says:

    This is dead of Do/Ubiquity/Quicksilver-ifying GTK is the most brilliant think I have heard coming out of the GTK/GNOME camp in ages (the KDE camp for that matter).

    While people may claim that GUIs are more discoverable, I think there is great potential for a search bar for actions (like in OSX in some cases, like in System Preferences), or even just word completion when the command is being typed (like Do/Ubiquity/Quicksilver/Smartbar).

    A feature like this would get me a lot closer to switching back from OSX to GNOME.

  8. Marcus Says:

    If all this can be done with AT-SPI + DBUS … this will be the most awesome thing ever.

    You guys are starting to rock really hard, and the ball hasn’t even started rolling.

  9. Dylan McCall Says:

    I have been looking forward to someone taking this on :)

    It would PARTICULARLY please me if Metacity was tweaked to support application extensions on its window decorations, and then a fancy search box added for every window with a GTK toplevel as its client. Could be stupendously awesome. (And with some visual effects, it would again beat the pesky competition).

  10. Milan Says:

    @Dylan: You really expect to put a text entry in the title bar? See how thin it is! Though, if you find a nice solution, I guess you could still implement this as a Metacity module rather than in a separate process – anyway you’ll be using D-Bus to get your data. See what gnome-shell aims at by merging the panel and the window manager.

  11. waizenank Says:

    Hello, I can’t understand how to add your blog ( ) in my rss reader

Comments are closed.