You are using an obsolete web browser, or you have the page styles (CSS) disabled. You'll be able to access this site, but only a visually simplified version.

Start Active

Not for the weak-hearted

My blog has been rather empty lately. It’s not because I haven’t had anything to report, but due to the fact that many things have happened and all sorts of cool things in Plasma Active’s “Activity world” started appearing that I didn’t have the time to write about them.

Today, I’m going to write about one of the smallest things I’ve done lately that will change the world :)

startkde

startkde script had served us quite well for a long time now, and it is still the best way to start your Plasma session. But it has some downsides that we needed fixed in Plasma Active, and some features that Plasma Active doesn’t need.

So, this post is about an alternative approach to start Plasma, a new application called startactive. It is *NOT* a replacement of startkde, but an alternative. Meaning that it doesn’t do all the things startkde does, while it does some work that startkde doesn’t.

The design

The main goal of startactive’s design was to create a dependency-based system that starts various workspace components.

You can see the dependencies of various systems that startactive invokes in the following graph.

Dependency graph

The blue items are meta-modules – they don’t start anything but they make it possible to keep the organization manageable.

Waiting and starting

The system starts all the free modules (modules that don’t depend on anything) at the same time (makes a nice performance boost on both single and multi-core systems), and then waits for some of them to finish until a new module becomes free. When it does, it is automatically started.

There are two ways to see when a dependency has finished its job – 1st – the usual – wait for the process to finish; and 2nd – wait for the program to register its D-Bus service. (org.kde.nepomuk.services.nepomukqueryservice for Nepomuk, org.kde.plasma-desktop for regular Plasma etc.).

Splash screen

Now, when you’re making something that doesn’t need to provide any compatibility with existing systems, you have the freedom to do the things as you see fit. So, I felt free to abandon the old splash screen engines that KDE Workspace used, but to focus only on the QML one I blogged about some time ago. It is now run in-process avoiding dirty ways of communication via X-events and such.

The missing features

startkde does a lot of things, from the initialization of the user’s .kde directory, to fonts, mouse cursors etc.

startactive doesn’t for one simple reason – all of that should be already set up on your Plasma device. All environment variables, Qt plugin locations, directory infrastructure…

Don’t try it

The code is currently located in kde:scratch/ivan/startactive and you shouldn’t use it. Unless you are a really brave soul who doesn’t care if startactive jumps out of the system and start killing kittens in your neighbourhood.

For me, it killed only two older felines, and now it has returned and manages my system with only a few smaller issues. So, if you are brave enough, then continue reading.

To test, you’ll first need to compile it and install with the same prefix as the rest of your kde system, which in turn needs to be in your PATH. Otherwise it will not work.

Then, you’ll need to adapt the module files to fit your setup and finally start the application in an empty X session.

An ordinary startactive will do – it will, by default, start the plasma active module, but if you want to run a desktop session, and change the splash screen theme, you can do something like this:

startactive --modules desktop --splash somethemename

Missing modules

If you notice that something is not started while it should, ping me here or on IRC and tell me about it.

I’m bad

This is something I realised after reading some blogs on the intertubes – I’m bad

ZZ Top – I’m bad, I’m nationwide

I can’t wait to get my doctorate to become a Proper Villain (TM) like Dr Doom, Dr Evil …

Splash screens and QML

If you were to pass by Sebas’ house these last few days of Tokamak 5, you’d see a window full of post-its that contained tasks that we plan to do (can be seen on Kevin’s blog).

Tokamak5 Logo

One of the post-its was 1/8 in size compared to the normal ones and it only said TSP, an abbreviation for ‘The Secret Project’. I didn’t want to tell anyone what I was doing until I see what comes out of it.

So, after meddling with Xlib, strange code-paths in kde-workspace I’m proud to present a new splash screen engine that can do QML.

Why this? The main reason is that creating new splash screens currently sucks – everything is prerendered and the theme authors don’t really have any control over the process. That is probably the main reason we still have basically the same splash screen as we did in KDE (SC) 3.x.

Currently under a GIT branch of kde-workspace, KSplashQML allows the theme creator to define the animations in a more pleasant manner, to adapt the animation to the screen size…

The theme is rather simple – black/white KDE logo with rotating gear that fades into the logo that can be seen in the screenshot. If you are wondering why the text says ‘Friday’, it is because we are recognizing the fantastic song made popular by our idol Rebecca.

Tokamak 5 is approaching the end – only Marco and I still linger around (and Sebas, naturally) – and that is going to end tomorrow around noon.

Activity templates and security

Tokamak5 Logo

So, as you all should already know, Tokamak 5 (plasma developer sprint) is in progress. The main desktop-related thing I’ve been working on last two days was presenting a few chosen activity templates as if those were real.

What does this mean? That you’ll see a couple of activities in your activity bar that don’t really exist. This was done, along some other stuff, to promote the activities a bit more.

Activity template

Currently, as far as I know (as usual, I’m the backend guy and have no clue what will end up in the release for the user to see :) ) the only one /fake/ activity you’ll see is the ‘Photos activity’. It is meant for something that we all enjoy – managing our photo collections.

Before you start arguing that you don’t want to see a bunch of templates in your list of activities, this affects only the defaults – you can easily remove them like any other activity – click the red ‘x’ and you’re done.

Running applications

Apart from defining the widgets layout, templates are now able even to start applications. In the case of the ‘Photos’ activity, it will start Digikam and Gwenview.

Since the templates can be downloaded via GHNS (from kde-look and similar sites), automatic execution of apps is rather dangerous, so you’ll be asked for the confirmation on which programs to run.

You can see what it looks like in the screenshot above. Recognized desktop applications are presented with their names and icons, and are automatically selected. While other programs (like in this case ‘rm’) will have a warning icon in front and will be automatically deselected.

EDIT: I’ve just added a rather rigid test for the ‘safety’ of apps – the application is automatically selected only if it is a registered desktop application and it doesn’t have more than one argument specified. So, the things like konsole -e ‘something’ are not going to be selected by default.

As Notmart said “I have a dream!”. (I have no clue what this sentence has to do with the blog post, but I didn’t want to finish it with the usual ‘that’s all for now’ :) )

Telepathy – straight of the Shelf

Telepathy Shelf

I’ve been interested in Telepathy for some time now. And every time it was mentioned on PlanetKDE, I wanted to test it. Some things worked, some not. Now, that the important ones are functional – system settings module, contact list, chat window – I decided to start the preparations for Lancelot to switch from Kopete to Telepathy.

So far, I’ve managed to display the list of accounts, and it will soon show the contacts as well.

Plans for 4.7

AFAIK, Telepathy will not be replacing Kopete in 4.7, so Lancelot will still be using the old (current) contacts model.

With that said, there will be a possibility to use the Telepathy model in the Shelf applet – it will be available via the configuration dialogue.

For Lancelot, I’ll probably make a hidden (non-UI) option.

That’s all for now.

Activities in Switzerland (pun intended)

This is a short post about one of the interesting events that is going to happen in Randa this summer.

Usually, multiple developer sprints are not held in the same place at the same time, but now we’re gonna have four very important ones from June, 1st to June, 7th in Randa, Switzerland – Platform 11 (kdelibs and kde platform sprint), Nepomuk, Multimedia and KDevelop.

I’ll have to develop a split personality for this one since I’m planning to get involved in P11 and Nepomuk as well. My main purpose over there will be to finish the activities backends and to push a few things into kdelibs.

Join the evolution

Aaron and Sebastian have already blogged about Platform 11 and the Nepomuk sprint so I’m not going to repeat what they said.

I’m just going to add that if you are interested in smarter handling of recent/favourite documents/web pages etc. based on user’s usage statistics and not only on the last access timestamp, if you want to have the possibility to retrieve documents that are tied to a specific project/task youre working on … and other activity-related stuff, you should join us and get the opportunity to discuss these topics in-person.

You might have noticed that this is the first time activities are a part of a sprint that is not Tokamak (Plasma sprint) – it is due to the fact that we’re expanding :) – the activities are now nicely separated into the libs/data/backends (Platform 11 + Nepomuk sprint) and user interface (Tokamak 5 – soon to be held in Nederlands).

Small Blogilo review

I’ve been using Blogilo for the last few blog posts, so I decided to write a few lines about it.

The Good

Well, almost everything. The program really works and feels nice like most KDE apps. Kate-based editor for the code – nice syntax colouring, code completion etc.

The Bad

The generated html code is formatted badly. It wouldn’t be much of a problem if you edit things using the ‘Visual Editor’, but it also reformats your manually entered html code.

The code in the editor gets reformatted on Preview. And on ‘Submit’, althoughit doesn’t change the code in editor, the submitted code to the server isreformatted.

Reported as BUG:268552

The Missing

The main thing I’m missing is auto-completion or a tag-cloud of the post tags used before.

The Overall

Even with the above, it is very likely that Blogilo will become my replacement for the WP’s web interface :)

Back to code, back to the activities [code, openSUSE, Nepomuk, Zeitgeist]

I was (more than) a bit silent lately. The thing called ‘life’ happens and you get dragged away from your computer ;)

Striped SAL

The strange thing is that lately, I’ve been doing more artwork than coding, so the new openSUSE 11.4 is fully stripe-themed and (IMO) looks awesome.

I don’t use openSUSE, but that doesn’t mean I should avoid contributing to one of the best KDE experiences out there, right? :) (Ok, this ended up being a contribution even to Gnome installs which required quite a lot more work, but I don’t really mind)

Striped SAL

The additional thing that made my day was the openSUSE review on the Linux Action Show. Chris (one of the hosts) didn’t stick with the original theming, but chose to use the standard blue Stripes with the Slim Glow plasma theme. The only thing better than being the default is being a choice over the default. :)

Coding again

Well, after reaching the artwork stardom :), I decided it was the time to return to my true calling. The first thing in line were a few Lancelot bugs that needed attention, and that don’t depend on the future libplasma2 development. No new features yet – but stay tuned – there should be some soon.

Activities

The main reason I got involved in developing the activities system in the first place was to have different favourite applications, different usage statistics (files opened, browser history etc.) in different activities. It always seemed daft to have Inkscape, Gimp and similar in the appmenu when I’m doing some non-GUI C++ coding.

The thing that will be responsible for that kind of stuff is the kactivitymanagerd. It currently (4.6) only controls which activities exists (along with icons, names, running/stopped states…), and which one is currently selected.

The next big thing is making it track the user’s behaviour and things that are accessed on per-activity bases. At first the data was supposed to be stored in Nepomuk, but Sebastian raised concerns that it might slow down the database too much (needs to be tested) since it would require a vast amount of data to be stored.

The second option was to use Zeitgeist as proposed by Seif (the lead Z devel). Now that we have a usable Qt API for it, the second option became viable as well.

Since I’m not famous for betting all my money on one horse, I decided to refactor the current code to be able to handle different backends, and use the one(s) that is(are) available.

Features

Currently, the following is planned for the backends:

Nepomuk Zeitgeist
Top rated[1] files[2] per (app, activity) pair yes yes
Top rated files per application yes yes
Top rated files per activity yes yes
Files accessed on a specific date no[3] yes
  1. Rating will be automatically calculated based on usage
  2. Files, locations, web pages, contacts etc.
  3. If the tests show that Nepomuk doesn’t slow down when saving each event individually, this will be a ‘yes’

No-backend support

Naturally, if you don’t want to use Nepomuk nor Zeitgeist, you’ll not get the rating goodness. But that doesn’t mean you’ll be left out – per-activity recent documents, places etc. are still a possibility.

Ok, this was a bit longer than I expected, sorry for that :)

Small communication problems – Linux Mint and Lancelot

A few discussions regarding the communication between FLOSS projects are going on now. I’m not going to get involved in those for the time being (mostly because Aaron already said enough) – I’m just going to mention something that has no connection to Gnome, Canonical, or anything like that.

I’ve recently found out that Lancelot was the default menu in Linux Mint.

How did I found it out? Thanks to this bug report which states that it was a showstopper for Linux Mint 10 to use Lancelot as default. The good news is that the bug was fixed in a matter of minutes after reporting.

The bad news was that nobody from the Mint even tried to notify me of anything. How does anyone expect bugs to be fixed if those are not reported?

From my point of view, this should have followed the following algorithm:

  1. Mint: Noticed a bug and they decided it was a showstopper for Mint 10 release
  2. Mint: Report a bug (either by mail, IRC or BKO) stating that they would need it fixed for the release
  3. Ivan: Fix the issue, commit to SVN (now GIT) and send a patch directly to Mint peeps

Would this be too much to ask?

Mobile concepts

Ok, this sounded a bit fancier than it is. This post is not about what the future phones might look like, but rather about something related to touch-based UIs (or to use the fancy term UX :)) that has bothered me for a while now.

Preamble: To be honest, I haven’t had much opportunity to use various touch devices apart from my Symbian S60v5, and I’ve played a bit with Androids. With that said, I have really no clue whether the ideas presented here are implemented somewhere, but I haven’t seen them.

Current gestures

This part is a bit ranty, so feel free to jump down to the next section. :)

When touch-based devices went world-wide, the most touted thing was how natural the UI was. Palm WebOS closes the apps when (IIRC) you drag them down, iOS uses pinch zooming, etc.

While I have nothing against these concepts, they work quite well, let us consider how natural those actually are.

  • Get a pen and a notebook. When you finish writing, do you drag the notebook down from your desk? No, you close it, and put it away.
  • Open your photo album, and take one photo out of it. Put it on the table. Put your index finger in the centre and the thumb somewhere else on the photo. Try to zoom it by stretching.

So, please stop using the word natural and replace it with ‘intuitive’ (which, again, can be debatable, but can’t be considered as plain wrong).

Guided gestures

So, the gestures are useful to make some tasks quicker. The thing that I want to be able to do faster is to chose a contact and call it/send sms without the need to ‘click’ more than once. The gestures could be ‘drag contact up to call’, ‘drag contact down to send sms’. But that is not really intuitive.

Enter guides:

Mobile Concept 1 - Contact dashboard

The picture mostly says it all, but here’s a short synopsis – you have your favourite contacts placed on the dashboard of some sorts. Every contact gets a size proportional to how much you did contact him/her. Other contacts are automatically added if you have unanswered calls from them, or sms messages.

When you touch the screen, the guides appear – in this case you have 4 actions – call (up), sms (down), info (right), more (left). If you want to send an sms, just move your finger down and release it.

Mobile Concept 2 - Message List

Now, the same for the message list. Dragging up/down behaves as expected – list gets scrolled. But when you drag to left/right, you get two commonly used actions – ‘delete’ and ‘forward’ (replying is embedded in the bottom of the window – not shown in the picture).

When you touch one of the messages, you get the icon guides. When dragging the item to one of the sides, the icon for that action becomes less transparent, and so does the tooltip – as a visual indication of how much you need to drag the item to perform the desired action.

QML

Just to note that these are not mockups – all UI is implemented using QML – it is not yet connected to real data, but the widgets are as real as they get. :)

« Previous PageNext Page »