Category Archives: Software

Brand new Widgets explorer

Software

The rewamp of the KDE Plasma Desktop is continuing: in the 4.8 release it got a completely new QML based device notifier (already quite improved for 4.9), now a new redesign has landed in master, scheduled for the 4.9 release of KDE Plasma Desktop.

The Plasma widget explorer and activity manager have been rewritten from scratch in QML, giving it s much smoother look and feel, new animations for free and what I love most, a way simpler code base.

By replacing the activity manager and widget explorer with the new implementation, over 4000 lines of C++ were removed (traded with around 1000 of much more readable and maintainable QML): this makes it easier to maintain, easier to spot possible problems, easier to modify and experiment new ideas.

With the rewrite of the various components of Plasma Desktop in QML I expect to slash away most of its C++ code base, making the entry level for contributors significantly lower (and being able to finally close long standing bugs 😉

How does it look now?

QML widgets explorer

And the Activity manager: designed to look as coherent as possible with the widgets explorer:

QML activity manager

Here showing the inline ui to configure and delete an activity

The overall design is almost the same, but the layout has been redesigned to overcome a problem of the old implementation: it looked quite crowded and dirty, because elements were too cramped together, not very well aligned and sizes were quite eterogeneous. Now we paid a lot of attention about the sizes and positioning of the elements, as shown below, everything is positioned along a quite precise grid, that makes the view look less crowded that it actually is.

QML widgets explorer alignment

I a good trend can be established here, for each release of the KDE Plasma Desktop having some element not only rewritten, but its UI becoming significantly more elegant with few but important improvements in the look or in the behaviour.

Plasma Active Two

Software

Today, Plasma Active Two has been released. It has been a pretty hectic 3 months, a very short period that produced anyways a couple of significant architectural enhancements. Plasma Active Two

Enhancements that are for both users, that will find more nice features and developers, that will find more nice tools for writing new applications and plugins. A way more complete feature tour can be found here. Here are just a couple of things that are quite importnant to me.

  • Recommendations: organizing items in activities is even easier: you worked for a while on a file or on a website? a simple button to add it to the activity will be present in the left side panel.
  • New Nepomuk QML bindings: write an application that does complex queries in the semantic database in jjust few lines of QML and JavaScript.
  • QtComponents: a new widget set to be used in QML applications, that makes very easy porting an application from Harmattan or Symbian.
  • Bugfixes: we want to make the user experience as smooth as possible 😉

Big props and thanks to everyone that helped out with this release, a group that is growing more and more, from individuals to companies.

Components towards a new plasma

Software

One of the biggest new features in Plasma that will be released together KDE Plasma Desktop 4.8 is the new shiny set of QML components, that over the next releases will gradually replace the old simple widgets like pushbuttons lineedits etc.

This is one important step towards a cleaner, easier to use and easier to write user interface, an important step towards Plasma2, where the UI will be completely done in QML, using a fast OpenGL driven scene graph, meaning prettier effects and most important always fast and smooth graphics using more what a modern gpu can actually do.

Here is a video of an example plasmoid (you can find it in the kdeexamples repository, is a good way to learn the api) that shows just a collection of what the available components are.

OGG version

This is one of the things that are starting to percolate from the work that is being done in Plasma Active and is starting to benefit the desktop as well.

Of course common UI components can’t be really common between the desktop and a mobile device, or between different mobile devices such as tablets and phones, so what about that?

We have a complete series of components targeted to be useful to build widgets for the desktop (as shown in the video above), designed to be as indistinguishable as possible from the old C++ based widgets, so it will mix perfectly in the rest of the desktop. The Device notifier widget is completely rewritten in QML using some of the components for 4.8 and even if it uses 100% new code (modulo the dataengines) it looks and feels exactly the same, there is just a “something” about its smoothness that comes out as a pleasant unexpected thing while it’s used, even if it’s difficult to exactly point the finger at.

So how does the very same widgets gallery plasmoid look when loaded in a Plasma Active two tablet?

OGG version

The touch specific set of components is used and the plasmoid itself besides using those touch components, adapts itself to the fact of being loaded as a fullscreen application on a tablet and changes its layout accordingly.

Some of those components are pretty universal, especially those without any graphics or input such as Page and PageStack, that manage the life cycle and transitions effect of dynamic pieces of the user interface.

Some components are a bit more specific, but not dramatically different: a button or a text field will look an behave in a very similar way, but for instance we don’t want mouseover effects on a touch screen, and maybe we want the touch area a bit bigger than the actually visible button area for a better grip, but here we still smell at least a partial code sharing.

There are then the ones that we want a flat out different implementation: for instance we want a desktop-themed, independent window for context menus (that is, a QMenu) on the desktop, while we want a more plasma-looking, finger friendly thing on a touchscreen, but still the very same exact api.

We have a series targeted to the current Plasma Active tablet profile uses the 90% of the same code as the desktop version, but everything that needs to be different is different, for instance there we have no mouse over highlight, bigger sizes and hit areas, scrollbars are read only scroll indicators visible only when actually scrolling.

Humanizing metal and electrons

Software

Let me talk briefly about one of the goals we have about Plasma Active, of which today’s release of Active One is just a little baby step in this yet important direction.

Orange?

We think that looking at different devices as isolated worlds, needing completely different “Apps” and UX stacks for each kind of device it’s pretty limiting, and it’s not the way who uses it (aka “humans”;) thinks.

What we believe in, is that computing devices (doesn’t matter if it’s the laptop, a tablet, or something running in a washing machine) should exist in function of helping the people accomplishing the task they want to do, no more, no less, devices shouldn’t be something complex, hard and therefore “harming”, but should just be extensions of the user harm, of the user mind, just tools, and in every situation, the best tool for the best job.

Activity screen

The line between the devices should be as blurred as possible, what we should target on is the task the user wants to accomplish, a task (or workflow, if we want to use a more trendy term;) a task is composed by many actions, many subtasks, and for each one the perfect tool may or may not be the same device, in the same way that may or may not be the same application.

If I take photos in a vacation I need a camera, when I get back I need a big desktop to view, organize and eventually edit the photos, if I want to quickly view them or show them to my friends, I need the device more appropriate compared to where I am: it could be a mobile phone as small as possible, a tablet if possible, or if we are in the living room, a big flat screen TV.

The need of applications that show a familiar, yet device optimized user interface everywhere becomes evident. why was never really done? just a technical detail missing, now we have it; if used well, QML does an amazing job at that kind of “gapeless” customization.

As evident becomes the needs of perfect synchronization, the need of sending not only files, but metadata and pieces of applications across devices, and the need to have interface as natural and “chromeless” as possible.

That’s one of the goals we’re pursuing with Plasma Active. The KDE community can be a leader in this small revolution, a ground that no one of the other mobile offerings ever adventured into, neither open or proprietary.

Share, Like and Connect

Software

An important part of the Plasma Active Contour user interface is the connection between the objects that i can view with my tablet, like images, webpages, and documents with the current activity, to help to organize your work and fun.

I already wrote here about the activity screen: the main Contour workspace will show everything that is related to the activity and is the natural evolution of the Plasma Desktop activities (that will evolve in this direction as well as the integration with applications becomes deeper;)

The screencast below shows the usage in practiche of the concept I’m going to explain in the next paragraphs: Share Like Connect (SLC).

It also shows towards the end the progress of the Active image viewer application, a touch friendly image viewer that deeply integrates with the Contour UI in terms of Look&feel and technology, since uses Nepomuk as metadata storage backend and supports SLC

OGG version

So we have an interesting UI problem: easily buildthis relationship between objects and activities with just one click (or so;) without having to navigate trough an over complicated user interface.

So, we have a simply search interface right into the workspace, it works well for many use cases and is really simple, but what if I’m browsing a website and want to add exactly that website in my activity? (or a photo I’m viewing, or a document I’m working on Calligra…)

Copy the url of the website, go to the workspace and paste it somewhere? a bit overkill, isn’t it?

Have some UI in the web browser that lets me add the current site to the activity? Definitely better, but we would end up with a different implementation, and a slightly different UI for each application.. can we avoid that?

We also noticed how similar this problem was to another one: is very common that while I’m viewing something i want to share it with someone in some way: I could want to upload on flickr a photo that I’ve just taken, or I may want to send via email to someone a PDF that I’m reading right now.

On the desktop the current workflow is to leave your current application, go to the web broser or email client, search the file again and upload/send it.

On mobile platforms things looks a bit more convenient: many applications have built in the possibility to share the currently open file to some services, but each application has its own implementation, often having a slightly different ui to do the same thing, or support to different web services, maybe because the developers of the application wanted to push their own services (a random example starting with G comes to mind 😉

So, get back to the problem of connecting the current open “thing” to the current activity (avoiding “file” by purpose, since could be something that is not a file at all, like an URL) is similar to wanting to share this same thing with someone, or rate it, or add a tag, tweet it, like on Facebook…

Since we already log what is the currently open object (for how long, how often etc..) to be able to log history and construct recommendations, the external workspace knows this information.

We can provide actions in a global menu in the top panel to perform those tasks, divided under 3 menus: Share (upload on web services, send by email), Like, (rating, bookmarks, “like” on web services), Connect (connect to the current activity, to an event in the calendar, etc).

Each action is implemented by a plugin, and plugins can be written in both C++ and Javascript, making it possible to download them on the fly from the Web

A first version of this global menu will be available with the first release of Plasma Active, and will eventually make its way to Plasma Desktop as well.

Activate your DS toy

Software

At Desktop summit a very nice thing happened: Intel handed out tablet devices to everyone, a pretty sweet (and fast!) Exopc. So, a very big thank you to Intel 🙂

Now happens that many people have a device that is well suited for running the Plasma Active project. that, together prices of those kind of devices coming down, makes very easy to test it.

next week, Tuesday August 16 at 14 UTC and Friday 19 at 12 UTC, join us in the #active channel on irc, for a little install fest session.

Instant apps

Software

Recently the Plasma library just got a new neat feature: the support for packages of files the are pretty generic, not bounded to being a “plasmoid”.

Is something, that even tough seemingly small, has some pretty interesting applications:

  • Shipping parts of bigger QML user interfaces as Packages, avoiding making most of it “public api” as the imports do
  • distributing applications plugins or extra sets such as graphics and sound via get hot new stuff or keep it updated via synchrotron
  • use the plasma package file loading mechanism to have qml files loaded only in a specific hardware profile, to be able to do a multi device package.
  • Ship the entire user interface of a mobile application in a single, well structured package

How those are used? for the main part of the Plasma active Contour UI home screen, besides from that i decided to give it a go for doing partly C++, partly QML stand alone applications.

The two examples below represent not more than 4-ish hours of work each and are a web browser and an image viewer. What is interesting is that they got almost for free some contour specific features, like:

  • The browser uses nepomuk for its bookmarks, so they are available system wide and they can be connected to an activity
  • The bookmarks are added with the system-wide SLC menu (more on that next post 😉
  • all the addresses visited with the browser will end up in the statistics used to generate the Contour recommendations
  • The image viewer completely ignores the concept of file system, it just uses nepomuk
  • Same considerations for bookmarks, SLC and recommendations hold for the image viewer too

Here we go with brief showcase videos:

OGG version

OGG version

Of course those are just at the beginning and at proof of concept level, but they show the potentiality of this framework to build QML based “active apps” very, very quickly.

Contouring resources

Software

Unfortunately I haven’t blogged since a llloong time, my fault 😉

But this doesn’t mean the things in Plasma land aren’t moving, au contraire! Last months I have been busy as hell with the Contour project, and the results are starting to became evident.

A quite big amount of progress has been made on several fronts: the user interface, the infrastructure of the Plasma mobile shell and what is even down in the stack from it, like Nepomuk and the KDE mobile profile

Also on the system integration front things have changed a lot. Admittedly trying out the KDE mobile software on an actual device has always been a bit of a voodoo operation, but now there are two ready to go booting pendrive images, for MeeGo and OpenSuse, together of course always updated package repositories (further information on the Plasma Active wiki).

I now want to show, as often as possible short videos of the User Interface of Contour, a little teaser for each notable feature.

OGG version.

First thing first, the screen the user sees when the tablet is turned on: an usual workspace with a wallpaper… it has icons.. (and eventually widgets)

but, interaction-wide you see that has some improvements for small/medium touch screens: icons are not individual, but categorized in boxes (documents, music, contacts…).

Second, everything is always aligned to a grid, making the composition always “look good” and impossible for those boxes to overlap, but still possible to drag them around to give a personal organization that helps your spatial memory.

And the last important characteristic is behind the scenes: that’s not a view on some folder as the desktops used to be: but it’s all data coming from Nepomuk, meaning that can be any type of what in Nepomuk is a “Resource”, so not only a file but also more abstract data like a contact, an email or a geographical location.

Everything that you see there are resources that have been connected to the activity, so each one will show a different list of resources (this could also make possible in the future for instance to show those activity resources as default in a file open dialog for instance)

How those resources can be connected to activities.. material for the next video 😉

If you are interested to have a more in depth look at the Contour UX and you will be at the Desktop summit in Berlin, you can stop by at this talk :p

Desktop summit