Right to Left Systemsettings

It has been a while since my last blog post, but I hope to blog more regularly from now on. I have been looking at my todo list at KDE, and I have some necessary things to do, and others that are just ideas and need to be developed.

For now, I have been hacking today on the Right to Left support on the categorized view. It was on my todo since the big refactor that I made long time ago. It is indeed very well structured in the inside, but was missing this important piece for Right to Left users.

So, I have fixed this bug on master and backported it to the 4.6 branch. I have also adapted in this case the category drawer of Systemsettings, which was kind of special because of the neat gradients. So, here is the mandatory screenshot:

Left to Right:

Right to Left:

Next stop: keyboard navigation.

Bluedevil v1.0 is out !

We, at UFO Coders are really glad to release version 1.0 of Bluedevil, the new KDE bluetooth stack. It has been kind of long way, but finally is all ours !

We have focused on stability for this v1.0 release. Some highlights:

  • Albert gave a hand in order to fix about data information on all helpers, thus, making the application more i18n-ish.
  • Pino fixed some i18n() calls.
  • Now when a device is paired using the wizard, it is automatically set to trusted.
  • We are happily running on the brand new projects.kde.org instance now.

So from now on, our main target will be to improve user experience (and keep stabilizing on errors that may pop out) where we believe it can be done, so if you have great ideas, don’t hesitate to report your feature requests !; right now we have a set of improvements for the post v1.0 upcoming release:

  • The monolithic application has a slightly different face, that we consider is more usable. Usability experts needed !

I also have some plans for libbluedevil for the near future:

  • Fix includes, they are unnecessarily repetitive. For this I have to release a major version, since we are following the Qt/KDE way.
  • Add services, so we can really remove some repeated code in BlueDevil itself.

Now, I have taken some photographs in order to show some features:

Monolithic Application

The monolithic application allows you to access the known devices, and connect to the services they provide. For post v1.0 versions we have redesigned this menu in order to be easier to access and less cluttered.

Devices KCM

Our KCM’s have been thought to be really easy to use, concise and functional. Three KCM exist: Devices, Adapters and File transfer.

  • The Devices KCM allows you to perform operations on already known devices. This includes: trust, untrust, rename (you can give an alias for a certain device) or disconnect. It also allows you to add new devices that are still unknown to your system. On the future, we will add also the ability to connect or disconnect from certain services of devices. Also, some other extended information like the hardware address and such.

Adapters KCM

  • The Adapters KCM allows you to perform all possible operations over your adapters. Usually, you will have only one adapter, but you may have more. This KCM allows you to rename your adapter (that is how others bluetooth devices know and find you), (un)power it, or perform changes on the visibility of the device.

Transfer KCM

  • The file transfer KCM allows you to completely enable or disable incoming transfer operations, and provide a default folder where this incoming transfers will be saved.

Another important bit is the KIO, that directly allows you to discover devices that are next to you, and browse their contents. I have taken some snapshots:

Bluetooth KIO (listing devices)

Bluetooth KIO (listing services)

Bluetooth KIO (listing contents)

Since this is our first official release, we’d like to thank all those who packaged our v1.0-rc4, giving us valuable feedback from the users (in no special order): Kubuntu, OpenSuSE, Arch Linux AUR, Chakra, and probably some others that I am missing.

Obviously, we also want to thank all users that reported us all kind of valuable info like error reports or feature requests. We will fix them all (in case of bugs) and take them seriously into consideration (in case of feature requests).



Spokify – v0.9

After some quite time pretty busy at work I had the time to hack with some relax. Yesterday I wanted to give one of the final touches to Spokify before it gets to a v1.0 release. To sum up:

  • Now when the track ends it changes to the next track. Not before. This is a historical problem with the libspotify library which doesn’t provide the exact length of the track.
  • Some spotted bugs fixed, specially regarding clicking on the cover to highlight the current track and filtering combo.
  • Previous and Next on the system tray icon.
  • Removed slider handle.
  • Slider now can be clicked to seek on the current track.
  • Creating playlists implemented.
  • Renaming playlists implemented.
  • Deleting playlists implemented.
  • Repeat finally implemented. It was always an enabled thing, now you can choose.
  • Add songs to playlists by drag & drop.

Still to do for release v1.0:

  • Allow to star tracks and list them.
  • Show playlists owners on the playlists view (trivial one).
  • Implement shuffle. Probably trivial, but want to do it right from the start. Still to decide if previous and next should take unordered list into account.
  • Implement cool track switching. Some kind of new widget. Note we never had next and previous buttons on the GUI, this is because of this plan.
  • Allow to set playlists as collaborative (trivial one).

As usual, I have recorded a video in order to show old and new features:

So, if you are using Spokify and have feedback, please let me know. Arch Linux users have a package ready to be installed: `yaourt -S spokify-git’.

An amazing weekend…

I really needed this.

  • Social

On thursday, Sebas and me went to Medialab Prado to answer some questions Agustín asked us about how the KDE community works and how we develop, design and handle such a great software. The colloquium was streamed so we reached much more people than those that came in person. I personally don’t like the answers I gave in general, and that could be in part because I was quite nervous, don’t know why. Actually I did pretty bad, but there was Sebas to fix the mess I was creating in almost every answer.

Working with the solid team has been a really great experience: Sebas, Kevin, Lamarque, Dario, Will and Alex. Also joined the party Agustín, Albert and Javier. Thanks to this sprint I met Dario, Lamarque and Javier, and I had the opportunity to see again the rest of the people.

Also I just can say Will’s daughter Anna is sooo cute and so tiny 🙂

  • Technical

I basically took the UDev backend coding responsability, being helped by Kevin almost all the time. I took my time to find out how the solid internals work, since it has been my first time with this API, and so far it looks really good to me. I wasn’t really productive this weekend for some reason I just don’t know, but I have all that voices inside that I need to code crazily like I did some quite time ago 🙂

  • Political

The day the sprint began, Sebas and I had an agenda programmed by Agustín which opens new opportunities for the KDE community. I want to thank Agustín for the hard work he does in order to keep our presence everywhere. We basically first met with Fernando Herrero, who is the technological cooperation service boss at the Madrid council, and he told us that we can have the Madrid on Rails place for whenever we want* (obviously it depends if it was already taken or not :P) for doing knowledge sharing events and whatever we feel like, which is great. He also offered us a slot on the SIMO Network so we can show what we can offer to SMEs.

We later went to met with Miguel Jaque, who is the director of cenatic and he was very impressed when he was told our numbers in bug fixing, for example.

I just love how everything went. This community is just amazing… thanks, to everyone. Really.

libbluedevil 1.8 released

Hi all,

libbluedevil v1.8 has been tagged and released. You can find a tarball here.

This version includes couple bug fixes and some tweaking. The plan for v1.9 is basically to fix all known D-Bus problems and make it rock solid. Support for this major version 1.x is planned to be continued for a long time.

However, and when nobody sees me in my dark cave I am planning some refactor on it. First, starting by the headers name. They aren’t as good as they could be. Second, I think including services to the library would be such a great thing that it’d rock. So I expect those to happen for v2.0. No dates (sorry), but I can tell you: don’t expect it for 2011. Hopefully for that time it’ll be alive and rocking !

So, if you plan to use Bluetooth services I’d suggest you to have a look at libbluedevil, since it has a really straight-forward and simple API. That way, you will also help me when reporting new issues and we can have a better library, from which we all benefit.

Sad thing… I was pretty used to post always a picture of what I was working on, but this one is pretty hard…


libbluedevil is a stable Qt-based library written in C++ to handle all Bluetooth functionality. Here is the man that you want to blame when something isn’t working properly on this library. It consists of a very easy and straight-forward API, featuring:

  • Manager

The entry point for the library. The Manager will tell you whether the Bluetooth system is operational, will signal you when adapters have been connected or disconnected, or when the default adapter has changed.

  • Adapter

The Adapter class has everything you can imagine to handle Bluetooth adapters. It can retrieve and set all kind of settings for the physical adapter. Summing up: start and stop discovering, visibility, timeout for visibility, retrieve known devices, register or unregister an agent, retrieve device by its hardware address (MAC) or its UBI… It will also signal you when discovering devices, and a remote device has been found.

  • Device

It represents a remote device. It basically retrieves information, but it can also set certain properties such as whether the remote device is trusted, block it, or set an alias for the device. Regarding what it can retrieve… all kind of information: its name, hardware address (MAC), icon, device class, supported services (UUIDs)…

The library is currently at its v1.7 version, and the idea is to keep API/ABI between minor releases as we are used to. The version 2.0 will be released at some point with more handy includes (currently “#include <bluedevil/bluedevilmanager.h>”, what will be renamed to “#include <bluedevil/manager.h>”).

Since BlueDevil will be moved to KDE upstream soon, eventually libbluedevil will also be placed at kdesupport, since the BlueDevil system has a hard-dependency on this library.

Bug tracking exclusively for library users will be tracked here. The official repository can be cloned by running:

However, as some of you may know, a completely-always-updated mirror lives at gitorious:

As always, feedback is very important, so I am open to suggestions, patches… Actually the gitorious mirror is a very nice place to propose merge requests in the case that you want to contribute any patch.

This library is in production since v1.0 and it is stable, being used by BlueDevil as well as other applications KDE-unrelated.

It has been very fun to develop this library, and there is more fun waiting… I have some more ideas on how to make it even more complete, but those news will come incrementally…

Blue smile

Yeah ! It is now for real ! We have an integrated Bluetooth system with our desktop. BlueDevil (the new bluetooth stack for KDE) consists of several key features:

  • libbluedevil: a Qt-only based library to handle almost everything Bluetooth related. It contains lots of functionality. It deserves a post for itself 🙂
  • 2 KIOs: bluetooth and obexftp. Former for discovering devices and services. Latter for browsing and doing typical operations over a remote device.
  • 3 KCMs: Devices, Adapters and File Transfer. First one will allow you to configure everything related to your known remote devices. Second one for configuring your adapters (usually you will only have one, but having several adapters is supported here). Third one for configuring where the files being sent over bluetooth will be saved, and to globally enable/disable file transfer.
  • Monolithic application: ala KBluetooth.

It has been a pretty intense work, but it has been fun, and I am really glad of having contributed heavily to this technology. Working in UFO Coders is being a pretty great experience and while being fun and letting me develop for KDE it is also helping out in the task of finishing the University as a grant holder. Spare time now really reduced to -24 hours.

We expect bugs, and that is pretty much the point of the RC1. We want to fix ’em all !

Missing you…

I’m missing you guys. So much…

Looking forward to meet you at other event rather sooner than later 😉

Hoping you guys have a great time at Akademy, and that cool stuff happens for our community and desktop 😉

EDIT: I somehow wrote YOUR, I obviously meant OUR

No limits

KDE SC has improved a lot. It was already a really good piece of software, but it is getting a real boost lately and things are progressing exponentially. Good times.

As a wise teacher once told us: limits exist only in our imagination. So, now is time to break limits. All of them. To sum up my work on free software, this is what will receive lots of love from now on:

  • KDE SC: some fixes that I have to introduce. For example: support for RTL layouts in KCategorizedView that was missing because of the hard refactor done there. Also, KPluginSelector will need a review on that endless loop. Big bluetooth support, and lots, lots of things to come.
  • Qt: spare ideas on spare places. QList is on the aim. Something performance related. Can’t tell much yet though.
  • Spokify: finish what I started here. Make it feature complete (allowing drag and drop). Will need to revisit libraries to implement all kind of goodies they introduced on social networks and all that.
  • BugBuster: a distributed bug tracking system. I started this project with lots of hopes of it being really useful, and it needs to be completed to the point of being usable as a real bug tracking system. Basically my aim is to make it as feature complete as BugZilla. High goals. Possibly a script to convert BugZilla databases to BugBuster.
  • Ideal Library: in my little spare time of all the previous: the library of my dreams. Something similar to Qt, but with advantages provided by nowadays compilers. Basics are there: it now needs to grow.

Every project is in the plan with the full-hearted hope of making this world a bit better on what I really love. Sometimes I think that most people first study and later finds the reason to move their minds in a determinated direction (or not), something they really love. Probably most of us on this community found this love much before starting studying. Studies took me a bit longer for loving so much this science and the could-not-stop working on unrelated stuff (or what university understands as unrelated). However I feel confident and really happy I found something that moves my heart that fast and makes me feel that good. Good times.

Let’s forget limits. Let’s work together. Let’s make KDE SC rock, thus, helping this world to be a better place for every person living here.

I’m back !!

This year has been amazingly busy. I had some subjects (9, to say) that required lots, and I mean lots of laboratory time to get done, and finally I got over them pretty successfully. The good thing: they didn’t had exam. The bad thing: until the end they take your time out to study subjects that have final exams.

So after last exams this week (still one to go, next week), I’m really glad to be back with this maravelous community. I am strength-full to work like never before.

I am now working on Artesanos del Software, and I am really glad I have been given green-light to work on Qt/KDE SC. This is also great since I’ll be working as a scholar for almost three months in order to get lots of hours done and get them recognized by the University as working hours.

So my really full-hearted wish is to work hard in KDE SC and do everything that is possible from my side.

PS: I am really sad I won’t be able to attend Akademy this year. I have to defend my “final project” career (which takes one year) in july, and guess what, there is no concrete date set: between 5th – 10th july, so that is a huge window time to book tickets / accommodation.