Although the previous release, using
GTK3, came quite recently this release has some new things.
I dumped the “keyfile” solution for the application settings in favour to GSettings. So the settings is no longer stored in a file in the application directory but rather in the system’s application settings backend. GSettings is part of GIO – the GNOME networking library – and since RAL depends on GIO no new dependency is needed. The upside is that I could put a file of source code in the bin! Plus, it’s fun learning new stuff!
Editors and content types
Previously I have kept an editor – name and command line – for every content type. Anders at Roxen thought it’d be better if editors and content types were separated. I’ve thought about that before but never bothered to do anything about it.
But now, along with GTK3, there’s a new (I think)
AppInfo class and the new
AppChooserDialog widgets so I thought it’d be cool to use those. So selecting an editor for a new content type is way more simple now, and it also looks nicer. Plus we get the icon for the editor in the content type list under the “Applications” tab
I also implemented some simple logging which can be viewed under the new “Logging” tab. This will be worked upon and at the moment not very useful information is written to the log, but at least it’s a start.
The icons in the notification popup – which only are three to the number – is now fetched from the user’s default icon theme. They we’re bundled before.
SOUP all the way
Previously I have used a little hack for saving downloaded files to disk. The problem was that the Vapi bindings for
libsoup casted the data to a string which totally scrambled binary content like images and such. My solution was to write a simple C-function which took a
SoupMessageBody struct as argument and then wrote that to diskt always keeping the
uint8 type of the content.
I bug reported this way back and it’s now fixed in Vala so I dumped my solution and am now using Vala all the way. Gone is one C and one Vapi file.
While at it I changed from using blocking functions in
libsoup to the async ones. You never really noticed blocking calls was used before, but right is right. Right?
And that’s that for this time I think!
Sources is available at the Roxen Application Launcher Github repository