Posted by George Wright
Fri, 23 Nov 2007 00:32:00 GMT
Now that I have a KDE 4 environment that I’m willing to use, I thought I’d take a look at Trolltech’s WebKitKDE KPart for embedding WebKitQt into Konqueror (or any other application which supports KParts).
Unfortunately, it seems that the project has been stagnant for a while and had bitrotted to the extent that it no longer compiled. I have now committed a fairly trivial fix that lets it compile and load, but it’s still in a fairly broken position. Hopefully I’ll be able to find some time to look into it more closely and potentially sort a few things out.
Now for the gratuitous screenshot:
Posted in KDE, WebKit | 4 comments
Posted by George Wright
Thu, 22 Nov 2007 21:17:00 GMT
As I’ve heard so many great things about zsh I decided to give it a spin and I must say that I’m quite impressed on the whole. I especially like the less intrusive way it displays possible tab completion values, as well as the vi keybindings that come with it (although I’ve had to bind a few keys which I keep hitting out of habit, such as end/home and delete). The configuration system it brings up on first load is really spiffy as well, and I like the fact that there’s an option to append command history to the log file instead of replacing it - extremely useful given that I tend to have ~10 terminals open at any one time.
I also finally got round to building a more up to date copy of KDE 4 and I’m really impressed with the progress they’re making; it really is astounding how quickly it’s all coming together. I’m currently in the process of installing an SVN build on my X40 so that I can run it full time on there - I think it’s finally hit the stage where I can run it full time.
Posted in KDE, Misc | 3 comments
Posted by George Wright
Tue, 13 Nov 2007 20:19:00 GMT
With the recent announcement of the Google Android mobile phone and the subsequent release of their SDK, I couldn’t resist downloading it and giving it a play.
First thoughts are very positive; the user interface is clean, uncluttered and I think it makes good use of the screen space. One of my favourite gems is the iPhone-like scroll bar mechanism, which only appear when you’re actually scrolling and disappear, thus not wasting a valuable column of pixels on needless information!
As anticipated, there are still a few rough edges, but as it’s still very early on this isn’t surprising. Nonetheless, I’m very impressed with their SDK (which is only a 55MB download!) and I hope to have a look at the actual APIs soon. Hopefully some day I’ll be able to put this on the HTC Universal!
In unrelated news, a Google Summer of Code 2007 shirt arrived for me at home today; thanks Google!
Posted in Computing, Misc | 2 comments
Posted by George Wright
Sat, 10 Nov 2007 19:03:00 GMT
So in the spirit of Freedesktop.org I was added to Planet GNOME yesterday. Thanks Jeff!
This doesn’t mean I’ve converted to GNOME or relinquished KDE, but as the work that I’m doing these days involves both KDE (in the form of my NX stuff) and GNOME (WebKit/GTK+), I figured it was time I had myself added to Planet GNOME.
Here’s to exciting times ahead!
Posted in Computing, WebKit, NX | 1 comment
Posted by George Wright
Fri, 09 Nov 2007 11:23:00 GMT
Yesterday, Collabora finally put the WebKit EAL code that Alp and I worked on over the summer into a public git repository on git.collabora.co.uk! This is great, as our development is now done in the open instead of behind closed doors, which is the way it should be done in my opinion.
At some point I hope to put online a method of building and installing this EAL which doesn’t involve a ridiculous amount of pain, but we at Collabora are currently concentrating on working with upstream on implementing missing features in WebKit/GTK+.
Some exciting new stuff that has appeared upstream is Rodney Dawes’ work on implementing NPAPI support in WebKit/GTK+ as well as the platform independent new CSS transformation work by Apple. This effectively obsoletes my work on full page zooming as we should hopefully be able to reuse their scaling code for these transformations and create an API function which sets a scale factor on the <html> element.
Personally, I am now concentrating my efforts on implementing a backing store for WebKit/GTK+ which should hopefully substantially increase scrolling performance, as well as investigating and looking into writing this zooming wrapper around the new transformations code.
Posted in Computing, Misc | 5 comments
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
Posted by George Wright
Sun, 12 Aug 2007 01:06:00 GMT
Today I updated the WebKit checkout and rebuilt it. Had a few hiccups because recent commits depend on GTK+ 2.8, whereas the N800 only has GTK+ 2.6, but in the end I managed to get it to work. Now we have Google Maps (which was broken in the previous WebKit)!

WebKit displaying Google Maps
Thanks go to Holger Freyther for his work on WebKit which has made this possible.
Posted in Computing | 1 comment
Posted by George Wright
Fri, 10 Aug 2007 00:20:00 GMT
On Wednesday Collabora moved out of the old office which we had outgrown and into our new amazing 4-room office opposite King’s College, Cambridge and above the Fudge Kitchen on King’s Parade. The old office is a shoebox in comparison! We now have a large front office, a large back office, a smaller back office (which I think we’re letting out to Ept Computing) and a large conference room. This ought to improve productivity, and as an added bonus it’s situated right next to my college supreme convenience!
To respond to some of the comments I’ve seen about Alp’s and my WebKit work; yes, I will be trying to get it to work on the Nokia 770 as I personally own a 770 and not an N800 and we may well be making a public release when it’s more stable. Currently I’m investigating the upstream source code and hoping to start working on adding the features we need to WebKit itself and submitting patches which implement them. Alp already has commit access to WebKit and will be working upstream anyway.
Last week, Tobias Hunger blogged about my involvement with standardising Mission Control, which is the abstraction layer which sits between Telepathy’s Connection Managers and the client. To anyone who’s interested in the work, the preliminary specification is online. So far, we still need to work out a sensible API for the Channel Handlers and iron out a few problems with the current specification, but we’re getting pretty close to coming to an agreement about it all. I personally would be very happy at the idea of having a standard API for this which can be shared between KDE (Decibel) and GNOME (Nokia Mission Control).
Posted in KDE, Computing, Cambridge | no comments
Posted by George Wright
Tue, 07 Aug 2007 16:59:00 GMT
For the past few days Alp Toker and I at Collabora have been working on integrating WebKit with the abstract browser user interface on the Nokia N800. Thanks to Nokia’s Engine Abstraction Layer (EAL) we were able to compile (with much difficulty) WebKit for the N800 and create our own EAL which provided hooks for the Nokia browser interface to communicate with WebKit.
Some of you may wonder why we are even bothering with this project. Well, for a start, WebKit is significantly smaller than Gecko and renders pages significantly better than Opera does (in my opinion). It also has a built in SVG renderer and has an active community surrounding its development. And, of course, it has its roots in the KDE project. Additionally, it’s run as a serious open source project and they do things the right way for open source, which is fantastic.
So far the port has been fairly successful. After a little setback we were soon on the ball and managed to get a proof of concept EAL working with WebKit rendering Google’s homepage.
By now we’ve managed to implement a few more hooks thus making more browser functions work, such as changing URL, going forwards/backwards in history etc, but it still needs a bit of ironing out - although the basic implementation is there and surprisingly usable.
There’s still quite a lot of work to be done, such as improving the rendering performance (it’s pretty good, but it still feels a little slow), adding input focus signals to WebKit GTK (to let us know when to bring the on screen keyboard out), and context menu entries (for right clicking). There’s also a slight problem with the rendering such that native widget theming isn’t great due to Hildon’s use of non-scalable widgets but we’ll be working on that.
At the moment we’re still developing this on our own but Alp and I are hoping to make a public release when the port has stabilised a bit.
Posted in Computing | 5 comments