NaNoWriMo continues. My novel is now flagging slightly behind the 60,000 word pace. It’s difficult to keep up the momentum once work starts to take over, and my sudden urge to restart hacking on Towel doesn’t help very much. For the uninitiated, Towel is a fairly simple audio player for GNU/Linux and FreeBSD. It started off as little more than a pretty GTK+ frontend to GStreamer, but now it’s a little more complicated than that, as the playlist system is rapidly becoming more and more complex. I think it may have reached its natural limit now, and is gradually getting filled out with missing functionality.
Recently I’ve been working on getting it to compile on my native 64bit Linux system, which wasn’t too hard because it was fairly intelligently coded the first time around (actually the most serious problem was with printf format strings generating warnings about variable sizes). The nastiest work was porting to GStreamer 0.8, which should have been done a long time ago but is done now and works quite nicely.
Currently I’m implementing properties dialogs for groups and tracks, which will help people figure out what the checkboxes in the groups and tracks views are for as they can be set from the properties dialogs as well — this is until GtkTreeView gains proper tooltip support, but I suspect that might take a while and may even be a GTK+ 3.0 feature. Also on the list are metadata caching, so Towel doesn’t have to probe every file in the library for its title/artist/length data every time it starts up, better handling of file read errors (there are going to be some holes exposed by the metadata caching system, as previously we relied heavily on all the files being read at startup), and general UI love for the library window.
Moving onward, there’ll be a release, then I’ll port to gtkmm 2.5 to take advantage of some useful new features, such as ellipsizing labels and stock icons for play, pause, stop and so forth. For now I intend to keep the project at SourceForge, but it’s going to have to move into a Subversion repository somewhere at some point; I just can’t be doing with CVS anymore.
And many thanks to Bryan Forbes, who says he’ll do some testing and offer assistance with the UI design.
Now I just need to get hold of Jonathan again…