Little remote widget magic screencast.

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!


8 Responses to “Little remote widget magic screencast.”

  1. Edney Matias Says:


    amazing work you did! Congrats!

    Thank you!

  2. sickrandir Says:

    You definitely rock! Thank you

  3. David Taylor Says:

    “anybody knows if there’s a way nowadays to have kdm unlock your wallet?”

    Leave the KWallet password blank and encrypt the filesystem to compensate for the lost security.

  4. Socceroos Says:

    Awesome, I’ve been really looking forward to this!

    On a side note, what about dependency installation? For example, if you don’t have the necessary scripting language installed, the remote plasmoid promts you to install it with ?

  5. Johannol Says:

    Wonderfull job !

    1) Do you know when it will possible to access remote plasmoid as a real plasmoid. I mean, without the windows around.
    2) What is the release target? KDE4.4?

    Thanks a lot

  6. rscheepmaker Says:

    @David: well, that’s of course a possibility, but to encrypt my entire filesystem just so I can let the kwallet password blank…. there should be something a bit more elegant.

    @Socceroos: If you don’t have the right script engine installed, you’ll just get an error. Automatically installing binary stuff is not easy to do. The right packages need to be installed which depends of course on the distribution. So maybe some distro wants to do it (like ubuntu does automatic codec installation for example),.

    1) I use plasmoidviewer here, to make testing easier, but it’s very easy to make this work in plasma-desktop. Adding a remote plasmoid is only 4 lines of code. Providing the UI to do that is the most work. It should be nicely integrated in the add widget dialog, which is currently receiving a makeover as part of another GSoC project. So when? Not sure, other parts of remote widgets have a higher priority, but it should be fairly trivial to implement.
    2) the target is 4.4.

  7. jospoortvliet Says:

    hey peanut,

    Way cool stuff man. Is this in normal SVN or in a separate branch?

  8. rscheepmaker Says:

    @jos: So far I’ve been developing in my own branch which I have pushed to gitorous just now. See:
    still some preperations are needed before it’s ready to be merged in trunk: some of the dependencies (QCA, Jolie), need to be made optional, and QtJolie needs some stuff I’ve hacked into it in a branch.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: