The problem with the current uiserver is that it was not really visible from the user perspective, hidden in a Konqueror configuration dialog, and that it wasn't as usable or good looking as users would generally like it to be. Since Qt 4 hit the streets, we came up with a very powerful tool: Model/View programming. The uiserver (kio_uiserver) could strongly benefit from it, by centralising all jobs that are currently running on the computer.
The uiserver works perfectly with current applications, and it is very easy to add support for new features. When creating a KIO::Job, there is usually a parameter that lets you notify the uiserver or not (maybe you want to do some work that the user need not overtly know about). So, because the uiserver is very well integrated with the internal jobs framework, there is no additional work needed for current applications to fit into the renewed uiserver.
In the KDE 3 uiserver, there were only the typical actions (cancel, pause, etc.), so it was pretty limited in scope. I really wanted to change this, and to make a more flexible and powerful tool for developers. I had two ideas:
- The creation of "virtual" jobs should be possible: why only show KIO::Jobs ?
- The addition of new (and unknown) actions was needed, for improving the user experience.
The second came really as a need because of the first improvement. Different kind of jobs have different needs, and different actions from the user are possible depending on the kind of job being processed.
Now, the uiserver is not a must-have item for KDE 4 (I bet lots of people didn't even notice it was there in the KDE 3 series). The important thing for KDE 4 is that it gives the user a uniform way of looking at what's happening at any moment in the system.
There is a very similiar project for the GNOME desktop too, called Mathusalem. I think that when I have all this stuff working properly, and with all the extras coded and working well I will contact the Mathusalem team, to see if we can co-operate and co-ordinate, letting Mathusalem list KDE jobs, and then of course, enabling uiserver to list GNOME jobs. This is possible because Mathusalem (and GNOME) uses D-Bus too. This would be a great step forward toward the unified desktop.
Here are some crude screenshots that allow you to better visualise the concept and possible implemenation: