Introducing Milou

Vishesh Handa me at vhanda.in
Wed Sep 4 20:03:04 UTC 2013


Hey everyone

I've been working on a dedicated search client for Nepomuk. It was originally 
called finder. We have now settled on the name "Milou". It is currently in 
the playground - kde:milou

Here is a simple screenshot: http://vhanda.in/milou.png

Advantages -
1. Groups results based on the type
2. Allows the user to enable/disable groups and give them different priorities
3. Has much better Nepomuk support than KRunner or Dolphin

It currently supports searching through Applications, System Settings, Audio, 
Videos, Images, Documents, Folders, Emails, Bookmarks and a handy 
calculator (which doesn't exactly fit the concept of search)

Initially, I was planning on this just being a wrapper over Nepomuk. However, 
as I began to use it more and more, it became annoying to have 2 places to 
type things in - krunner and Milou.

Differences with KRunner
---------------------------------------

Milou is mostly just has a different UI and has a slightly different concept of 
sources/runners -

* Each source returns a returns a set of types which it supports. For eg the 
nepomuk source returns - Documents/Images/Audio/Video/etc, whereas the 
Application Source returns Applications and KCModules.

These types can be enabled/disabled. A source typically should check if a 
type is enabled, but even if it doesn't then the results will be discarded.

* Each match is given a respective type which is then used to group them 
together.

Because of these 2 differences, I couldn't use Plasma Runners, so currently 
I've adapted the services runner since I had to differentiate between 
"Applications" and "KCModules". For bookmarks I'm using the single runner 
mode. For the calculator, I've temporarily copied the code, because I could 
not figure out how to run two different Plasma::RunnerManagers in the same 
application in single source mode.

KRunner is obviously still far superior in terms of its architecture. It 
automatically threads each of its runners. Also, it's very extensible, whereas 
Milou is not.

Ideally, it would be nice to merge the two code bases together so that these 
extra features can be supported in Plasma. However, given my future plans, I 
think that is going to be slightly harder.

Future Plans
--------------------

- Need "People" support. KPeople still isn't quite there yet, but it'll be 
quite simple incorporating it once it is released.

- Needs better Event support - The data is kinda there in Nepomuk, but it 
needs more work on both the Nepomuk and Akonadi side.

- Add the concept of previews - Each source will be asked to display a short 
preview on the result. In the case of the Nepomuk runner it's going to be 
slightly complex as images/documents/emails/others will need to be handled.

In the case of people support, we can just show an image of that person 
along with certain actions such as "Call/Chat/Email". These actions can be the 
same as the Plasma Runners provide.

In the case of Audio, it might be nice to show some audio metadata (author, 
title, album) along with a mini player, and maybe even display the album art. 

I think it's going to be the source's role to provide an appropriate 
QDeclarativeItem which does so. I'm still working out this concept of 
previews, and how I'm going to implement it.

- A dedicated application for searching which can be connected to this 
plasmoid for showing more search results, and to allow the user to filter them 
better.

----

Any comments are most welcome.
 
-- 
Vishesh Handa


More information about the Plasma-devel mailing list