Posted by George Wright
Tue, 11 Sep 2007 13:44:00 GMT
In my previous blog I mentioned that Seb James had taken my nxclientlib code and improved it substantially, and that it would be committed soon.
Well, the code’s been cleaned up since I first saw it and it’s now available from the FreeNX SVN repository. Personally I’m very glad this has happened - it’s brought nxclientlib to the sort of level of functionality I always wanted it to have.
New features include NX server version 3 support, NX “shadowing” support (for VNC-like connections), D-Bus API to communicate with the library and many overall improvements across the library. For developers; the code is a lot cleaner now, there’s an autotools-based buildsystem, the Qt dependency has been removed and I’m told it now links to a 110kb library with no major dynamic dependencies - how’s that for compactness?
Hopefully soon we can have a first class NX client which can be packaged and distributed without much trouble!
Posted in KDE | 6 comments
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:
WebKit showing The Dot at a scale factor of 2.0 in both directions
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!
1 comment