A new Clutter Widget Toolkit

November 18th, 2009

If you’ve been following Moblin development closely, you’ll know that we have been using a library called “Nbtk” (netbook toolkit) to implement the common user interface elements. People have been quite interested in this, since it is based on Clutter. However, Nbtk was developed with very short term goals, so that we could accomplish the Moblin 2.0 UI as quickly as possible. Now that Moblin 2.0 (and indeed, 2.1) is out, we have some time before 2.2 to start thinking about a more serious toolkit.

The Moblin Toolkit

The first goal was to rename the library to something less specific to the “netbook” platform. We chose ‘mx’ as the name space, because the goal of toolkit is to support the Moblin User Experience. Mx provides a set of standard user interface elements, including buttons, progress bars, tooltips, scroll bars and others. It also implements some standard layout managers, although some of these will be available in Clutter itself when Clutter 1.2 is available. One other interesting feature is the possibility of setting style properties from a css-like file.

What’s New

Followers of Nbtk will be interested to know what’s new compared to Nbtk. The latest additions include:

  • notebook – a multi-child container that shows only one child at a time (similar to a slide show). The notebook widget itself does not implement tabs, but these can easily be added by hooking it up to the new button-group widget.
  • button group – allows buttons to be grouped so that the toggle state can be mutually exclusive across the buttons in the group (e.g. such as a group of radio buttons might behave.). Also features a property to allow no buttons to be toggled if desired.
  • toggle widget – a widget that implements a boolean state and looks similar to a light switch or slider switch. This is a Clutter version of the MxGtkLightSwitch already available. The advantages of the Clutter version are that it provides better animated feedback on user interaction.

There have also been some behind the scenes clean ups, including:

  • re-written table layout algorithm – this had much better support for correct minimum and preferred sizes, especially related to columns spanning.
  • the stylable interface is now much simpler and has less dependencies
  • the Widget base class implements hover and active states (if the actor is reactive)
  • all constructors return ClutterActor, since this is the most useful base type.

Try It

Although the new project started as a branch in the Nbtk source code repository, it now has it’s own git repository at git.moblin.org. I am also making tarball releases on the brand new download.moblin.org. I have released a first version for testing purposes and it is important to note that the project is not API stable yet.

A lot of blog posts about Fedora 12 recently. It’s been a while since I last tried Fedora, so I thought I’d try it out and post some of my thoughts.

Likes

  • Sweet KMS enabled boot screen – very nice
  • Yum is fast enough to be usable (but maybe that’s because of my quad core now?)
  • Custom icons for Documents/Downloads/Music/Videos etc
  • Installer re-assigned ownership attributes for old home directory. Very handy.
  • Clearlooks is the default theme (not Nodoka)
  • Control Center (Preferences) menu is no longer grouped by categories

Dislikes

  • Notifications (what is that horrible massive black square on my screen)
  • Package manager UI (often just too confusing, too animated, or too awkward)
  • Bluetooth keyboard didn’t work in the final setup screens (setting up username etc…)
  • Every other folder in Nautilus tells me I can share it using Personal File Sharing (well, at least $HOME and $HOME/Downloads – why would I want to share $HOME and why do I have to see this notice all the time?)
  • Doesn’t remember my preferred language (en_GB)

All in all, looking good apart from the few niggles I’m sure will be fixed before release. If anyone knows whether there is a meta-package to install enough packages to allow GNOME development (e.g. including gcc, intltool, libtool, gtk-doc, etc), that would be awesome.

Update: I just found sudo yum install @gnome-devel @development-tools via the Jhbuild page. It’s a start, but doesn’t include everything needed to build GTK+ for example. Shame the package manager UI doesn’t make this more obvious.

Unfortunately, I’m not going to file bugs just yet, because these are just my first impressions, and I’m not yet a Fedora user!

GNOME Beers/London

October 5th, 2009

Luis Villa let us know he was in London this week and asked if anyone was up for a beer (a trick question perhaps?). More than happy to oblige, we’re going to meet up at our traditional haunt of Ye Olde Cheshire Cheese and then go on for pizza. I’ve put up the wiki page to let us know if you’re coming. All GNOME hackers/contributers/hangers-on welcome.

Toolbar Styles

July 29th, 2009

We’ve been discussing the future of the Interface tab in the Appearance capplet, and we’d like to “fix” the default toolbar style before we consider any changes. It seems not many people are aware of what these styles actually look like, so to help I’ve done some screenshots:

Text Beside Icons (the proposed new default)
text-beside-icons

Text Below Icons (the current default)
text-below-icons

Icons Only
icons-only

Text Only
text-only

A trial switch to the text-beside-icons style is underway, so that we can test applications to make sure they work properly with this style. Discussion on any issues can be reported in bug 590143.

Personally, I think there are several advantages to the text-beside-icons mode:

* Increased hit area (fitts law) for important buttons
* Reduced vertical space usage (compared to text-below-icons)
* Reduced horizontal space usage in some applications (as compared to text-below-icons in e.g. Nautilus, Evolution)
* Aesthetically nicer than having text for every item

Re: Adding fonts in GNOME

July 26th, 2009

Hylke wrote about installing fonts in GNOME and how there isn’t an easy way to do this at the moment. Since his suggestion was so simple, I got out my editor and spent this evening hacking. It’s feature freeze tomorrow, so I’ve pushed the changes into master and any testing would be greatly appreciated!

Font Viewer Revamp

There are probably a few tweaks to be made to padding, etc. Hopefully I can also work out how to get the word wrapping/scrolling they way it needs to be without resorting to fixed sizing (it’s not as simple as you might think).

London Beer V2.4

July 22nd, 2009

Just a quick note to say another social is being organised in London for this Friday. Open to any GNOME hackers/contributors/hangers on. Sign up and details on the wiki page: http://live.gnome.org/LondonBeer/Version2.4

Introducing Turbine

May 28th, 2009

applications-development
My gobject generator project I mentioned a while ago has been named “Turbine” (thanks to Charles for the suggestion). I’ve made a few more improvements and it’s now available in a GNOME git repository:

http://git.gnome.org/cgit/turbine/

git clone git://git.gnome.org/turbine

The new Moblin User Experience has been announced. Finally we can show people what we’ve been working on!
Moblin 2 UI

Check out the introduction video

GObject Generator

May 15th, 2009

There has been recent talk about GObject Generators, so I’m going to throw my own one into the mix. It’s based on Ross’ gobject.py, but given a fresh dose of GTK+ and auto completion love.

screenshot-gobject-generator

If you’d like to try it out, there is a git repository available:

git clone http://gnome.org/~thos/git/gobject-gen.git

I’d like to move it to GNOME git, but before I do it needs a decent project name. Does anyone have any suggestions? Something descriptive but unique, preferably with only 2 syllables.

Kudos to the Anjuta GObject generator for the auto completion idea. Also, before any one suggests it, I know about Vala but we’re not using it for this project, so it’s of no use.

Vim Command of the Day

April 23rd, 2009

vim-editor_logo_bigger In the office we have two white boards that where going rather underused. Last week I decided to rectify this by drawing FOSS propaganda on one of them. On the same day, Damien (of Shave fame) happened to show us all a new Vim command we hadn’t used before, so I suggested we start a Vim Command of the Day sheet on the other white board. We’ve taken this into the 21st century as well, so anyone can follow Damien’s encyclopedic knowledge on Vim through the magic of twitter: @vcotwdorso (short for, “vim command of the week day or so”, because Damien didn’t want to be restricted to updating it just once a day)