LinuxConf Europe, WebKit and NX
Posted by George Wright Wed, 05 Sep 2007 16:05:00 GMT
The last few days played host to LinuxConf Europe 2007 in Cambridge. All of us at the Collabora Cambridge office went along and Rob and Alp both gaves talks about Telepathy and WebKit respectively.
Alp’s talk was the more interesting one for me as I’ve been working with him on WebKit/GTK+ for the past month or so. My current project is getting full context zooming support into WebKit/GTK+; that is, an implementation of zooming akin to Apple’s Safari capabilities on the iPhone.
These days we’d rather scale the entire page, including graphics and tables, in a unified fashion rather than resize the text and then try to fit the CSS/images around it. So far the implementation has proved troublesome, due to my lack of familiarity with the WebKit codebase, but I’ve managed to get an implementation working. It now nicely scales the entire graphics context properly using Cairo’s context scaling methods, which means that vector graphics are scaled vectorially (including fonts), and raster graphics are scaled with bilinear filtering. The end result is something like this:
The zooming implementation is pretty much complete except for a couple of bugs which need to be ironed out before I can mark the patch for review, but if you’re interested, keep an eye on this bug at the WebKit Bugzilla.
Work to be done now will be to improve the performance of the rendering as our current implementation doesn’t use a backing store so we’re re-rendering the entire viewport every time something happens, such as a scroll event, which is clearly not optimal.
And now back to the world of NX. I met a chap at LinuxConf who was hacking on my NX client library for a series of thin clients his company was developing. The thing I’m most excited about, though, is that he’s working on a GTK frontend, and so has fulfilled my original objective for my client library to be used cross-toolkit.
In doing so, he has done many things I have had on my TODO list for a while, including removing the QtCore code and replacing with STL C++ - something which is probably better in the long run for everyone. It seems to also connect to NoMachine NX version 3 servers, which I haven’t tested, but is a nice feature. He has also worked on exporting the client library through a D-Bus API, which is fantastic as it means it is now truly compatible with many different languages and toolkits. There is still some ironing out to do but once that’s done it will be available in FreeNX’s subversion repository. His version also has a buildsystem which wasn’t cobbled together in five minutes, which I’m sure a lot of packagers will be very glad to hear!

Just committed nxcl to the freenx repo. I managed to remove boost signals, so it is now a more respectable 180k of sources which builds into a 100k library and a 40k executable.