Archive for July, 2009

Little remote widget magic screencast.

July 20, 2009

Since the last time I blogged about my GSoC project, now not only Plasma::Service and Plasma::DataEngine can work remotely, but I’ve implemented a service that allows a remote machine to obtain a plasmoid. I also implemented support for blue tooth like pin pairing authorization as a quick way to connect two machines. As cherry on top, some massive refactoring work made both code and API a lot nicer. The refactoring made me discover a bug in QCA (a lovely Qt like framework for crypto stuff), and it took me a day or two to realize that the problem had to be in QCA and not in my own code, but QCA’s maintainer Justin Karneges was very responsive and within a couple of hours after my first email he had identified and fixed the bug in QCA: great work! 🙂

At you can see this process. (note that allows you to download the original Ogg/Theora file for people like me who don’t like flash)

As you can see I start plasmoidviewer in a Virtual Machine pointing to the url under which the plasmoid is published. The plasmoidviewer I’m using there is slightly modified to allow connecting to remote plasmoid. The published plasmoid is a slightly modified version of “Now Playing Controls“. The only thing that I modified though was the addition of a label showing artist + title to show remote dataengines are working, you don’t need to change anything in a plasmoid to allow it being remoted. At the moment remote widgets only work with scripted plasmoids (and we definately need more of those… scripted plasmoids are awesome! :)), and I would have loved to show a really fancy plasmoid here, but I couldn’t get the python script engine built, so I couldn’t use for example the quite fancy now rocking plasmoid.
Anyway, what follows is that I need to enter the password to unlock my kwallet (that’s where the private key is stored that is used for signing messages so the receiving side can be sure of the other machine’s identity. anybody knows if there’s a way nowadays to have kdm unlock your wallet?). Then I enter the same password on both machines. It’s identity verified, the virtual machine then receives the plasmoid package. This package is automatically changed to indicate that dataengine should be obtained from a remote location as well, and the result is that the plasmoid in the virtual machine can be used to control amarok on my other machine. Nice right?
What will follow is the ability to also authorize remote machines that have some gpg key in a trusted key ring, the possibility to have this also work with c++ plasmoids (only if both machines have that plasmoid installed of course), some better error handling, and, of course, zeroconf support. Stay tuned!

Remote dataengines working.

July 1, 2009

My SoC project is now at the point where not only remote Plasma::Services are working, but remote dataengines too. Which means I’m now actually running a nowplaying applet in my virtual machine which shows what I play using Amarok on my other machine. This applet can also be used to control that remote amarok, just like it would when run locally. And all this didn’t require any change to the nowplaying applet or dataengine, only an entry in the nowplaying applet’s configuration instructing it where the nowplaying dataengine should point to. Pretty neat right? Here a screenshot, because people like pictures:

Remote dataengine in action.

Next step is supporting blue tooth like passkey pairing: when an untrusted machine connects, both sides can input a password, and if both passwords match, access is granted. Stay tuned!