Monday, 23 August 2010

Nodoka GTK Engine 0.7.5 Released, Status Update on 1.x

A few moments ago I released gtk-nodoka-engine-0.7.5 tarball, built it for fedora and submitted as updates. There are more changes and not all of them are bugfixes, hence the jump from 0.7.2 straight to 0.7.5. For Fedora users the changes are smaller as the bug fixes were already present in the packages. Here's the changelog:
  • I did some improvements to build system, one of which fixes upstream bug 39 (people from BSD cannot use GNU extensions to 'install')
  • I fixed greying out of checkboxes in tree-view (red hat bugzilla #513454)
  • This version adds support for GtkScale trough-side-details and fill-level (red hat bugzilla #477941) and support for selection and hilight coloring for separator (red hat bugzilla #478443)
  • It honors GtkEntry::transparent-bg-hint (red hat bugzilla #489111) which means you'll get transparent entries in firefox.
  • I also implemented support for 'entry-progress' detail which means you'll have e.g. page loading progress in epiphany or midori, when shown in location bar, looking finally nice.
  • Finally, I ported the engine to GTK3 and to keep same tarball for GTK2 as well, it was needed to drop support for GTK+ < 2.18.

Please test the fedora packages for possible bugs and give feedback in bodhi, thanks:

I've been also slowly updating the 1.x branch, more specifically the initial widget design for MODERN style and mostly finished it. Here and there some finishing touches would be needed (like I'm not 100 % satisfied with the horizontal versions of the progress bars and scales and notebooks other than with tabs on top), but that's for later phases. When I'll have some more time, I'll start working in initial widget design for GLOSSY style (or maybe I shall call it GLASSY) which should appeal to people who like glass. Of course, comments are welcome and direct help even more so, source SVG for the MODERN style is in git and is always current. Finally, here's a PNG preview (click to show in original size):

Note for people who don't like the blue – I picked my favourite shade of blue, which is incidentally from echo icon color palette, and used it in the design as SELECTED color. It does not necessarily mean I'll end up using this particular colour in the final theme, and it also will be configurable via the Appearance Preferences->Customize Theme->Colors->Selected items. I'm not sure where (and if) this will be in Gnome 3…

And a note about used font: for some reason, I don't recall exactly which, I started using the SVG preview of the font I sketched the other day. The main problem is that it has only one size, no bold, and nothing other than letters of English alphabet and number 1 :-D But surprisingly it looks pretty decent (even though the bold is faked by adding borders to the letters in inkscape…), IMHO.

Thursday, 19 August 2010

The WebM Problem

Well, lots of people are hyped about the WebM format (which is basically some kind of matroska based [btw. can be (de)muxed properly with new matroska tools] container, VP8 video codec [which was recently opensourced by google and thus is available in fedora] and Vorbis audio codec) which is understandable as it brings open standards to the web and you can play it even with a fresh install of fedora (well, since it was introduced only recently, this is true since the now-soon-to-be-released F14 Alpha).

And to lead the way, youtube is supporting it. But there's a huge but. On youtube it's available only if you enable html5 beta testing, by far not all videos on youtube can be played without flash and out of this subset only even a smaller number of them have been transcoded to WebM, so as a result if you are lucky, you'll play almost anything, and if you're unlucky, you'll either keep getting messages about missing flashplayer or missing h264 codec :( And to add to that, google is being ass and instead of querying the browsers for support, it uses user agent sniffing and thus effectivelly bans all other browsers than opera/firefox/chrome/safari/internet explorer from html5.

Someone should tell the web developers that there are zillion browsers out there that have support for advanced web features comparable to that in opera/firefox/chrome and that user agent spoofing is broken by design (unless you target it the otherway round &ndash send some quirks to browsers that are known to be broken). It's not a hard thing to masquerade my midori as firefox or safari, but I would prefer if I hadn't have to do that…

Wednesday, 18 August 2010

The Awesome New Features of Midori 0.2.7

After a rather longish time a new release of midori is out and among other things it has a feature I never expected it would have implemented this early. Unless I'm mistaken, midori is the first browser that supports delayed tab loading on startup out of box (I'm aware of some extension for firefox which does something like this). You just need to set it in your preferences. Yay, this speeds up browser startup about zillion times as I keep a lot of tabs open. Well, it could use some improvement – currently you need to hit reload to load a tab, it would be nice if they loaded when selected.

Next, long awaited feature, are improvements to location bar. It can now search through bookmarks and it supports multiword search. Another bunch of useful improvements.

There are also two new Vala extensions – history list and external applications. The first one is an interesting feature that adds behaviour similar to how alt-tab works for windows to ctrl-tab for tabs. Since I usually have many tabs open, but frequently switch only between few of them, this looks like a huge usability improvement.

The other one is another long awaited thing – since webkitgtk does not support ftp protocol, we'd just got error messages instead of ftp listings, now midori fires up gftp. Unfortunately, without passing it the uri. So I looked into the code, quickly get acquainted with Vala language (really easy if you know some object oriented programming language and C), switched gftp for nautilus (gftp is a bit overkill to me) and fixed it to actually open the location. It's like two lines change:

diff -up midori-0.2.7/extensions/external-applications.vala.nautilus midori-0.2.7/extensions/external-applications.vala
--- midori-0.2.7/extensions/external-applications.vala.nautilus 2010-08-16 21:31:14.000000000 +0200
+++ midori-0.2.7/extensions/external-applications.vala 2010-08-18 01:34:04.000000000 +0200
@@ -17,7 +17,7 @@ public class ExternalApplications : Mido
Dialog? dialog;
bool launch (string command, string uri) {
try {
- var info = GLib.AppInfo.create_from_commandline (command, "", 0);
+ var info = GLib.AppInfo.create_from_commandline (command, "", GLib.AppInfoCreateFlags.SUPPORTS_URIS);
var uris = new List();
uris.prepend (uri);
info.launch_uris (uris, new GLib.AppLaunchContext ());
@@ -38,7 +38,7 @@ public class ExternalApplications : Mido
WebNavigationAction action, WebPolicyDecision decision) {
string uri = request.get_uri ();
if (uri.has_prefix ("ftp://")) {
- if (launch ("gftp", uri)) {
+ if (launch ("nautilus", uri)) {
decision.ignore ();
return true;

Hopefully this will be configurable in the next release (so that I won't have to patch the source code :D).

These new things also have the flip side though – occasional crashes. I haven't got time yet to inspect them, but I suspect the new vala extensions or changes to location bar to be at fault.

Sunday, 15 August 2010

Some progress on Nodoka

So, lately when I need to rest a bit from more technical work I usually do a bit of designing. And today I completely rethought how I shell approach the nodoka gtk-engine rewrite. First I decided that because it's rewrite and will be a really big change, I'll use 1.0 version for the final product. Next I've done some initial project planning which differs a bit from what I've been doing until now (design a widget, implement a widget, design a widget, implement a widget, …). You can see it on 1.x Brainstorm Page. During the past few days I also progressed a little with the initial widget design for MODERN style. Here's a preview (click on it to see it in original resolution):

You can grab the SVG from git.

Note that the actual coding is still far from here and might take a while. I also have some hopes for gtk3 widget-draw and I'll probably wait with actually writing the engine till I know what the new gtk3 API for drawing widgets will be. But comments/improvements on the style, submitting of new styles, … are more than welcome.

Saturday, 7 August 2010

Nodoka ported to GTK+ 3

Yes, I've finally updated gtk-nodoka-engine so that it supports GTK+ 3. It was rather time consuming (because of that I went to sleep at 3:30 AM) but easier than I initially thought it would be. Plus I was able to maintain support for GTK+ 2.18 and newer (which is in Fedora 12). Today I went a little more further, added the entry-progress rendering, I had in my TODO list since this was introduced, and uploaded the resultant packages (for F12 only gtk2 version, for F14 both, I don't have F13 to build packages for that) on my fedorapeople space. Here're quick tables of the packages (all the packages are either i686 or noarch):

Fedora 12

gtk-nodoka-engine GTK+ 2.0 Nodoka Engine + default theme
gtk-nodoka-engine-extras More themes for GTK+ 2.0 Nodoka Engine

Fedora 14

gtk2-nodoka-engine GTK+ 2.0 Nodoka Engine + default theme
gtk2-nodoka-engine-extras More themes for GTK+ 2.0 Nodoka Engine
gtk3-nodoka-engine GTK+ 3.0 Nodoka Engine + default theme
gtk3-nodoka-engine-extras More themes for GTK+ 3.0 Nodoka Engine
gtk-nodoka-engine Metapackage, pulls in both gtk{2,3}-nodoka-engine packages
gtk-nodoka-engine-extras Metapackage, pulls in both gtk{2,3}-nodoka-engine-extras packages

I'm planing on testing these packages on my laptop for some time and if I don't discover any regressions I'll officially release 0.7.5, submit the gtk3 version into fedora as well as update the gtk2 version.

Any testing is welcome, the packages are easilly rebuildable from the srpms (which you can easilly find on my fedora people space) for any fedora starting F12 and any architecture. If you encounter any problems, be it build issues or bugs in the engine, feel free to nag me in comments section :-)