Category Archives: Software

Dropping in, dropping out

Software

I love when an idea starts to taking form and suddenly starts to make sense in an unexpected way… some days ago Aaron blogged about dropping remote contents inside Plasma: now is possible to drop in several types of content, even from the network and the proper plasmoid capable of doing a little preview of that content will pop up, like the picture frame for an image or the web browser for an html page.

The idea of Plasma as a canvas for some kind of smart bookmarks with live preview of your content and work is taking shape, now what was the logical step was to ask.. what about the other way around?

We now have a quite simple way in the plasma api to associate an application, or an url (with the proper application detected from the mime type) to a Plasma widget. A new button will appear in the applet handle (and a new entry in the context menu) and that application will be launched. The idea is to have a full view of what you have in the widget, as a tiny preview.


OGG version

Netbook shell after Tokamak 3

Software

Here we go with the long promised screencast about the progress of the Plasma Netbook shell after Tokamak. This time I’ve tried to record an audio track as well: the process is still not very well streamlined so the quality is still so so (composite+screencast still seems a big nono these days) and yeah, bear with my english, it’s what it is, like a certain Nintendo character :p

Aaanyways the stuff I talk about in this video is:

  • How to try it if you have a svn trunk build
  • Keyboard and touch screen navigation
  • New background dialog
  • Integration with the new widgets explorer

Where the last two are true for the Plasma desktop in general, thanks to the work of Davide and Ana respectively at Tokamak 3.


OGG version

Progress on the netbook ui

Software

A while since last blog, so it seems nice to give some updates on the progress on the Plasma netbook shell, since in the past weeks i did some visual changes.

Netbook newspaper

Now the widgets in the newspaper activity shows their background, to achieve more opacity (and readability), and the scroll area have a neat shadow effect to make the clipped edges to look better. The widget in the newspaper containment now should also keep their aspect ratio in a better way.

Netbook newspaper

Also the search and launch interface has some fixes in its layout, and when no query is entered in the search field it spots some icons that do default queries, like all programs of a given category, all contacts and all bookmarks.

To maximize the space given to applications in those tiny screen resolutions now the panel is auto-hide, with the same sliding animation present in the main plasma desktop autohide panels (from KDE 4.4 done by my first Kwin effect, yay :D)

Here comes the usual video (the flickering of the panel is just a problem of the screencast), in the usual YouTube or OGG-o-vision, enjoy 😀

Update on this netbook thinghie

Software

At GCDS we did several shiny things, and talked about even more shiny still to come stuff, like the better integration with kwin and new crazy ideas on the ZUI.

A thing that received a good amount of work is the Plasma on netbook project, in the form of several little components. What is really good about plasma is exactly that is done by many little components, quite easy to code, mantain and reuse.

So what we have now is in playground and can be tried right now on http://websvn.kde.org/trunk/playground/base/plasma/netbook. Here is a video of the current progress of the project, as appeared on the dot.

It’s also a little experiment on the html5 video tag, it should use an ogg file on things like new webkit based stuff (in qtwebkit it works, yay!) or firefox 3.5 and fall back to youtube otherwise, anyways the ogg file is there.

  • A plasma shell (the actual executable), if you were using it previously pay attention that now has been renamed from plasma-mid to plasma-netbook, that’s the form factor it’s targetted in the near future anyways 🙂
  • A panel, simpler than the one in the desktop, that contains several widgets a “current window control”, an activity bar, a systray usual clock and a search widget (more on that later).
  • the two main activities: newspaper and Sal

So, the “current window control” is a thing that shows the title and the icon of the current open window, plus a close button, this because there won’t be a titlebar for windows, just fullscreen stuff, and clicking on it it triggers the present windows effect, because there won’t be a taskbar either.

newspaper

The newspaper activity now looks like tthis, and compared to the state of te previous post is now possible to scroll, adding applets (yes, it needs a brand new add widgets dialog, but that’s coming from a gsoc, yay!) and rearrange them by drag and drop.

newspaperThe thinghie that is called SAL, meand Search and Launch, and will basically an interface for krunner: in the desktop the alt+f2 dialog is something that is not very prominent so is not really used by the mythical creature called “joe user”, but when you show the thing to them, they love it

So in the netbook, a thing like a menu is not really up to the job (in fact most of previous projects starting from the original eeepc shell to ubuntu netbook remix to moblin all have some different idea about how a small screen proof menu should look like). We have instead opted for a full screen prominent krunner interface, driven by the search box that pops up by clicking on the top right icon on the panel. Compared to the “normal” krunner there is a group of bookmarks in the top area and there will probably be some way to access saved searches (since the first time one uses it it won’t be so obvious what to search for)

Aaand, for really putting the “net” in the netbook, there will be web based runners too, like the wikipedia runner that is already in playground (sebas and rich, you’re great :p), the idea is giving access to network resources like that via runners, plasma widgets and libraries, even without always the need a browser, that is a great thing but not always the best ui possible.

Stay tuned for the next updates 😀

A system tray even more Plasma

Software

In KDE 4.3 there is the beginning of the support of the new systemtray protcol with some applications that supports it already, and as said, we hope to get a good percentage of our apps supporting it for 4.4.

But there will be an even more crazy thing, as seen in this picture.

I'm going to gcds

Plasma widgets can now be embedded into the system tray (here the battery icon), there is no config ui at the moment (soon to come, i think will be possible to put here only a tiny subset of them anyways)

If you have trunk and want to try it right now you can do the following. Open ~/.kde4/share/config/plasma-desktop-appletrc, look for the systray entry and if for instance its entry is [Containments][3][Applets][63] add a new entry that looks like:

[Containments][3][Applets][63][Configuration][Applets][137]
geometry=24,2,22,22
immutability=1
plugin=battery
zvalue=0

Oh, and by the way: I'm going to gcds

Plasmanetbook breaths

Software

With the usual disclaimer that is a very early barely working prototype that will be probably massively different from anything final, it’s nice to show the screenshot of the other day in action.

So now I did some arrangements in the playground netbook stuff to give a thing that mostly works without too much hassle in the initial configuration and that it’s kinda possible to use it as the main shell instead of the desktop.


Ogg version.

Here is possible to see the newspaper activity used for weather and to read feeds (will be able to scroll its contents in the future) and the one used to launch applications, in this video that is nothing else than a folderview, but the final launcher interface will be more like a crossover between a menu and something like krunner

In this video is also possible to see some things that strongly suggest the departure from the “desktop” concept, because when those kinds of devices are treated just like small notebooks they are just not up to the job, since te way desktop guis are designed simply don’t work at those screen resolutions (and inches of screen). Of course we can’t rewrite all of KDE applications (neither would be so smart to do so), but i’m pretty confident that KDE and Qt apps in genereal are quite easy to adapt to smaller screens 🙂

Anyways back on track, here can be seen that the thing usually called desktop is not a desktop for two reasons: we don’t have that free layout for icons and widgets that we’re accustomed to see, and it’s not something to be seen as a background: is a window like the others (that by the are always maximized and borderless) that can be chosen and switchd to, so available in the “taskbar” (that here is the kwin present-windows effect, since netbooks harware appears to be a bit more standardized than regular systems, we can more realistically relay on desktop effects being on)

Also clicking anywhere in the panel brings the main plasma interface to front, since is the main interface between the user and the system and it’s here where the user starts the apps, switches between apps and sees the quick updates of the favourite internet places, via the newspaper activity.

Systray finally in action

Software

As Aaron noted, the client library for the new system tray specification has finally landed in kdelibs, as “experimental” (i.e. it will probably still see some refactoring for 4.4, assuring is as good as possible)

And is important also from the user perspective because another cool thing happened: some applications that will be shipped alongside KDE 4.3 have already been ported to the new protocol (thanks to Davide and Aaron for that :). They are: Kmix, Krandrtray (quick screen resolution changer),Kwallet (save the passwords) and korgac (appointments reminder for Korganizer)

Of course the quickest way to show what is the difference between the old and the new is with a quick video:


Ogg version

It shows the main charateristics: the pretty plasma tooltips and mouseover effects (you would get and those things even with say a gtk app that is using this protocol). Also the ability to show an icon in more than one system tray (think about multiple monitors) or having multiple system trays that shows different categories (or to hide some of them if you don’t care about them)

Dissecting a tray

Software

This is another pretty long post on the new system tray. Since the last post things have cleared up a bit (and i hope the api it’s a liiiittle bit more stable too) so i think times are ready for a slightly more technical description of all the machinery there is in place.

So, what are the parts of the system tray spec and more important how to use it and port existing applications?

First of all, the protocol is totally based upon dbus, so examining what are the registered services let’s see what are the (three) actors involved (yes, eventually some day those org.kde.* will become org.freedesktop.* :D):

org.kde.NotificationItem

every application that wants to use the systray has to expose this service, that will be called org.kde.NotificationItem-pid-index, where pid is the application pid and index is an unique thing that ensures no duplicate names, so an application can even register more item it it wants.

This thing is what defines everything that a system tray icon was and a bit of information more: it exposes the icon, a tool tip, the category of the item (status of a generic application, communication related, system service or hardware info) and the status: is it idle? is important that is visible? or is it really important to require user intervention?

It offers also some actions to interact with: activate, secondary activate, context menu and scroll. Notice how it doesn’t talk about left or right buttons, because right now we are providing a thing that looks like a system tray, to have a smooth transition, but we are not anymore forced to use that, we can have for instance some of the items embedded in the taskbar or have different representations, maybe interacted with the keyboard or who knows…

org.kde.NotificationItemWatcher

A system tray can come and go, for instance in Plasma the applet can be added or remove or the plasma process can be restarted, moreover the application can run in an environment that doesn’t (still:) support the protocol, so it’s needed something that keeps track of registered items and registered hosts for items (there can be more), all the system tray instances will register themselves here and take from here the list of items registered (NotificationItem implementations must register here too)

When the org.kde.NotificationItemWatcher is not up and running or it does not have instances of org.kde.NotificationHost registered all the items must automatically fall back to the traditional xembed type of icons

org.kde.NotificationHost

This service is registered by the system tray itself, it doesn’t offer properties or functions, it’s just used by the system tray (or whatever thing that can display an org.kde.NotificationItem) to announce its existence to the watcher to make possible to be automatically unregistered when the systray is closed (even if it crashes)

There can be an arbitrary number of hosts registered, to make possible both more simple things like having a system tray for each monitor in a multi monitor setup or more interesting stuff, like offering a different representation for different items category, for instance:

  • Putting the hardware status items and system services in a traditional tray, and we will be sure only that low level stuff will be displayed here
  • Integrating the application status items with the taskbar, we could perhaps display the minimized tasks without text in this case, or collapsing them in a popup menu, or whatever a brilliant idea will come 🙂
  • Collapsing all communications related items in a single item into the panel, that would be a “messaging center”, where i don’t care if messages are arriving from kopete, kmail or konversation, i only want to know what people are saying to me…

Those are just abstract ideas for now, it’s not said that they will be implemented in this way or that this description is necessarily the best way to go, it’s just a little scenario to provoke some thinking on what is the best way to go and to not take as a given that the current way is indeed the current one, time will tell, what counts for now is that we are no more forced to display this stuff in a pre determined way.

Last but not least, where is the code?

System tray plasmoid and kded

The system tray plasmoid is basically the org.kde.NotificationHost part that does all the interaction with org.kde.NotificationItem and includes full support to the spec for KDE 4.3, it can also be configured to show only certain categories of items, giving a first implementation of the ideas i talked before (i.e. one systray for hardware info, one for application status etc.)

The plasmoid ships also a kded that implements the org.kde.NotificationItemWatcher part, if the daemon goes down, or all systray plasmoids go away, all the items becomes traditional system tray icons on the fly.

KNotificationItem library

This is the client library to be used in place of KSystemtrayIcon (with a very similar api) it takes care of all the dbus talking and is quite simple to use, it just offers some functions to set properties like icons and tooltips and some signals to notify about the various types of activation from the user.

This will go into extragear on the next few days, so applications can start to experiment with it, keeping in mind that is still experimental. After 4.3, it will head into kdelibs for KDE 4.4, at that date and time it will be completely api stable.

Make some space

Software

Sometimes little details gives a way greater feeling of power and customizability, without actually adding much and more importnant without adding tons of new buttons and configuration options.

Plasma panel can arrange widgets in an ordered linear layout, one after another, but what about if you have a panel where you want to distinguish between different groups of applets and want to put a space between them to make the look more clear?
Since a couple of days in the plasma configuration dialog a new single button appeared: “Add spacer”:

panel spacer

Clicking on it it adds that little widget at the end of the panel, it’s just a space and you can drag it around as with every other widget or resize it as you wish by dragging the borders of it (that in this screenshot are a little darker) just like any window or resizable stuff in general.

panel spacer

Of course a space is not something that you should see: it’s empty right?
So you close the panel edit mode and the empty space ecomes well, empty, until you open again the panel configuration mode.

panel spacer

Dashboards, activities and desktops

Software

That’s a tiny feature that apparently makes several people happy:
Now the plasma dashboard is a way to quick access your desktop widgets whente desktop is covered by windows, and i really like this feature as it works.

But since KDE 4.2 it’s possible too with a little bit of digging trigh the config files to set a different activity for the dashboard, that is a similar behaviour to what some other operating system i can exactly remember the name does (it has something to do with fruit and groceries iirc :p)

But this was sooo well hidden that people kept asking if some day that feature will be available, so here we go:

dashboard config

In KDE 4.3, just zoom out and you will see a new controls box that has the actions that don’t belong to single activities (yeah, no more silly add activity on each activity:) and two options: click on “use a separate dashboard” and then you’ll have an activity just for the dashboard (not visible in the zoom out view) so here you have different plasmoids on desktop and dashboard:

dashboard config

Oh, and there is also the other checkbox, “use a different activity for each desktop” this was availale in 4.2 as an hidden config option too, if you check it it’s what you get:

dashboard config