Media Explorer 0.2.0 and 0.3.2, Mx 1.4

A few weeks ago the Media Explorer team released the first “stable” preview branch of Media Explorer (0.2.x) and this week we’ve started a new unstable series (0.3.x). The new features since 0.1.x include:

  • Telepathy plugin from Collabora, which enables video chat within Media Explorer
  • Integration with Nautilus via the “Open With” menu
  • The usual round of bug fixes, performance improvements and enhancements

The 0.3 branch (master) has started with a lot of refactoring work. The dbus-glib dependency has been removed and all dbus functionality is now implemented with GDBus. There is also work going on to improve the plugin framework and greatly simplify the internal API. We also now have our own domain: media-explorer.org, which we are using as the basis of a revamped DBus API.

A screenshot of the new video chat experience, taken by Collabora developer Jeremy Whiting

Mx Toolkit

The stable 0.2 branch of Media Explorer also coincided with a new stable branch of the Mx toolkit, which is now at version 1.4 and includes many improvements, including support for clipped redraws which should be a boost to performance. There are also lots of new features in the kinectic scrolling widget from another Collabora developer, Tomeu Vizoso. Other new features include support for direct unicode character entry (using the ctrl-shift-u shortcut); better keyboard handling in comboboxes and popup menus; the implementation of the GAction interface on MxAction; and many other performance and memory optimisations.

Internship in London

In related news, the Intel team in London is looking for a student to join the developer team for a 13 month internship, starting in 2012. We’re really keen to have someone who is enthusiastic about open source technologies. If you’re currently studying at university and are looking for a placement, the full details are on Intel’s jobs page.

Media Explorer 0.1.6

We’ve just released a new update to Media Explorer, which includes some new features:

  • Support for playing optical media, such as DVDs
  • Audio track selection
  • Subtitle selection
  • French translation
  • Background plugins
  • Album grouping for music

There were also the usual round of performance improvements and bug fixes.

Subtitle and audio track selection
DVD support

More information is available on the website. There are also new versions of clutter-gst and the Mx toolkit to accompany this release, with bug fixes and new features added to both.

Media Explorer 0.1.4

Last Friday we released version 0.1.4 of Media Explorer. This version includes some exciting new features, such as support for connecting to gnome-dvb-daemon to watch live TV and plugins for justin.tv and blip.tv. There’s also been a considerable amount of effort to increase performance and neaten up the transitions between screens.

We also released versions 1.2.1 and 1.3.0 of the Mx Toolkit, a Clutter based widget set. Both versions contain performance enhancements and bug fixes. Version 1.3.0 is a development version including new API.

Some of the Media Explorer developers are giving a talk at the desktop summit tomorrow, where they will be talking about Clutter, including demonstrating Media Explorer.

Media Explorer

Media Explorer is a media centre application for Linux (including MeeGo) developed by the Intel Open Source Technology Centre. It uses Clutter, Grilo, GStreamer and Tracker to find, index and play local and remote media.

Chris introduced the project in April and since then we’ve added a few more features, including very simple music library support so that you can play music files and add them to the queue to create a playlist:

We also added some nice transitions to and from the video and slideshow that can be seen in our latest screencast, as well as animations when scaling pictures in the slide show. We’ve also been streamlining the performance, so animations are smoother and startup is quicker.

Checkout the new website for more information and instructions on building it. We’ve also created a Twitter news feed to keep people up to date with the latest developments.

MeeGo Zones

One thing everyone might not have noticed in the new MeeGo 1.0 for netbooks is the nice new zones panel, which I had the pleasure of working on. One of the neat things is that you can drag and drop windows between zones, and there are some nice animations as this all happens. I wrote about how I implemented the animations back in December last year, although I couldn’t mention what it was for at the time!

Unfortunately I didn’t get time to do a video yet, but here’s a screenshot showing the drag and drop in motion:

Meego™ and Mx 1.0

Meego™ 1.0 for Netbooks is now available, with a revamped user experience based on Clutter/Mx. The Mx toolkit now sports a number of widgets and classes, as I mentioned in my previous post. The API reference documentation is now also available online, or can be built from the source code using the –enable-gtk-doc configuration option. Source code is available from git or source tarballs.

Mx Widget Gallery

Mx Toolkit 1.0

The first stable release of the Mx widget toolkit was quietly released a few days ago. Mx is a traditional GUI toolkit, built upon Clutter technology. This enables smooth animations and special effects through hardware accelerated graphics (OpenGL).

The 1.0 release brings API and ABI stability to Mx and a good deal of bug fixes. The source code is available from gitorious.org/mx-toolkit, along with some of the other optional supporting packages such as clutter-gesture and clutter-imcontext. The 1.0 release is tagged and there is a branch that will carry bug fixes for this release. I’ve also made tarballs available in my personal directory on freedesktop.org. To build with minimal requirements, you may want to disable the optional dependencies from the configure script (–without-clutter-imcontext –without-clutter-gesture –without-startup-notification –without-dbus).

Here’s a list of some of the features that made it into 1.0:

  • Widgets: Window, Button, ComboBox, Entry, Frame, Icon, Label, Menu, ProgressBar, PathBar, ScrollBar, Slider, Toggle, Toolbar and Tooltip
  • Layout Containers: Grid, Table, Box, ScrollView, Viewport
  • Advanced Actors: Offscreen, DeformWaves, DeformBowTie, DeformPageTurn
  • Data views: ItemView, ListView
  • Utility objects: Application, Action, Clipboard, IconTheme, Style, TextureCache, ButtonGroup,
  • Other features: Drag and drop, keyboard navigation, CSS styling

As with any 1.0 release, there are bound to be bugs that haven’t been caught yet, so if you find any, please file them in the bugzilla located on bugs.meego.org (the Mx product can be found under “Meego Projects”).

Many thanks to all those involved in the making of Mx 1.0!

CSS Styling in Clutter

As CSS styling is becoming more and more popular in application design, I’ve been experimenting at work with applying this to Clutter. We already have an experimental widget set built on top of Clutter called Tidy. Using Robert Staudinger’s css selection engine and libcroco, I was able to apply style information from a stylesheet to Tidy widgets.

.
Images are also supported using the “background-image” property.

One big question for us was how many properties do we expose to CSS and how does it interact with the JSON functionality. For the moment, we are concentrating on using CSS to allow developers and designers to assign the same properties on many widgets. Internally, this is achieved using a “Stylable” interface and a Style object. The Style object is simply a data store that holds all the data associated with the CSS style sheet. The Sytable interface can be implemented by any GObject and used to install hooks for CSS properties. The Stylable object can query the Style and retrieve the values it needs.

An interesting aspect of this approach is that it doesn’t limit theming to just Widget derived classes. Any object can be made Stylable and obtain style data. This would be useful for other toolkits such as GTK+, where objects like CellRenderers currently cannot be styled in the theme because they do not derive from GtkWidget.