I wasn't looking to create a specific work flow, per se, other than "type something in, get some results, pick one". Other projects try and create a very specific work flow (quicksilver being the grand daddy of them all), I opted for the Google-ish "a search line with results". There are strengths and challenges to both approaches, but I like the choice made in KRunner for general consumption purposes. Once can switch to a more work-flow defining mode in the configuration, however, by selecting the "Task oriented" user interface.
Since it's debut in the KDE SC4.0, KRunner has gotten a lot prettier, a lot faster, a lot more featureful and a lot more stable. It's a fairly healthy project in that regard. It's a multithreaded app that favours responsiveness, best seen in the as-you-type results, over CPU cycles (so there can be plugins running old queries that are no longer useful; KRunner just moves on instead of waiting for the to finish). The result is still very usable on low powered machines.
In KDE SC 4.4, the Runners (as KRunner's plugins are known) also power Kickoff's search and Plasma Netbook's Search and Launch activity page. Other apps can just as easily use them by linking to libplasma and using Plasma::RunnerManager.
Also new in 4.4 are support for actions-on-results in the default interface (the task oriented interface already had support for them in 4.3). They appear as little buttons attached to the respective entry, just like the configure button does. This feature uses the base work done by Ryan with Jacopo doing the UI integration into the default interace.
Jocopo's done a lot of other nice work for the 4.4 release as well, including "single runner mode" which allows a Runner to advertise that it's useful "all on its own". When it does so, with X-Plasma-SingleRunnerQueryMode in the .desktop file, one can launch KRunner with just that one runner active and an empty query box becomes synonymous with the default syntax the runner registers. Queries then get passed to just that one Runner, it's icon and name is shown in the user inteface to make this clear, and you can even set a global keyboard shortcut to bring up KRunner with a specific Runner in single runner mode. This is a really nice usage of the RunnerSyntax feature introduced in 4.3 for online help; in the apidox it is noted that RunnerSyntax might be used in the future to enable features that require knowing what a Runner is capable of, and with 4.4 we have the first application of that. Very cool.
There's also the new visual positioning of the KRunner window. While you can configure it to go back to the traditional "window floating in the middle of the screen" it now appears "glued" to the top of the screen. It plays well with top edge panels as well as applications like Yakuake (there's one top edge panel issue I still need to address before 4.4.0 is released, but there are a few months left for that to happen :), and you can move it by clicking and dragging inside the window or resize by clicking and dragging on an edge. When it's pushed into a corner, it removes the appropriate border of the window so it looks nice in such cases. The size and position are also stored and retrieved between sessions, and if you want to get it back to the center after messing around with it there's a "snap zone" in the center.
I have to admit it took me a day or two to get used to it popping out of the top of my screen after years of Alt+F2 causing a dialog to show up in the middle of my screen. With the adjustment period over (and it was quicker than I thought it might be), it feels so much more natural and is much more convenient when using KRunner to do things like unit conversions when reading a document, for instance, as the KRunner window now is now out of the way of the window. Pressing Alt-F2 a second time makes the window disappear when it is edge mounted, as well, which supports this kind of quick "check something" workflow nicely.
What isn't there is the ability to drag it to screen edges other than the top; that's probably something for 4.5. In fact, I'd like to get rid of the configuration option altogether for 4.5 and make it so that if you click-and-drag to move it and go more than X pixels from the screen edge it just pops off, and if you push it back up against a screen edge it just pops onto it. I just didn't have time to do this for 4.4; I was more concerned about getting the edge docking working nicely first. Next we can get fancy. :)
Speaking of fancy, the configuration is now embedded into the KRunner window. Dialogs-on-dialogs just sucks from a visual design perspective. There's one visual annoyance there right now, however, which I will fix for 4.4.0: the KRunner window should grow when the configuration is shown to give more room for it. The default size needed by it and a reasonable size for results is rather different. Separate windows sizes for each already works, I just need to make it automatically do this.
Of course, all this is nice and all but the real usefulness comes from what the Runner plugins themselves can offer. In addition to the usual stability, performance and feature improvements in KRunner itself, we've added some new Runners and improved on some of the existing ones. In the KDE Software Compilation v4.4 we will be shipping the following plugins for KRunner:
- KDE Workspace
- Bookmarks: supports both KDE's and Firefox's bookmarks in 4.4, depending on the default browser setting
- Calculator: still not as strong as I'd like; there were efforts to make it use libqalculate optionally (falling back to QtScript as the evaluator as it currently does), but nobody was able to confirm the thread safety of libqalculate
- Kill: kill -9 from KRunner! New in 4.4.
- Locations: network addresses, with some nice frills like automatically adding ftp or http depending on the domain name if a protocol wasn't provided
- Nepomuk Search: aka "Desktop Search" in the user interface, does what you'd expect
- Places - the places model known from Dolphin, the file dialog and kickoff, among other places (excuse the pun)
- Powerdevil: desktop style power management from a command line! :) This includes the ability to hibernate or sleep.
- Recent Documents
- Services: aka "Applications" in the user interface, it's what launches applications and plugins like control panels that are registered with the system using a .desktop file (same thing that populates the app launcher menus)
- Sessions: start new sessions, switch to existing ones, logout, shutdown and reboot
- Shell: launch shell commands, including the ability to do things like "run as different user" or "launch in a terminal window"
- Solid: Another new addition for 4.4, it lists storage devices allowing one to do what they might from the device notifier plasmoid in KRunner. What's really cool is that it uses the same Plasma::DataEngines as the widget, so code duplication is virtually non-existent.
- Web Shortcuts: access all those funky "gg:", "qt:", etc. shortcuts you know and love from Konqueror; as an added bonus, it opens the URL in your default web browser .. which means they now work in Aurora, Rekonq, Firefox, whatever as long as you type it into KRunner
- Windows: New in 4.4, this lets you switch between and manages virtual desktops and windows from KRunner's windows.
- Plasma Desktop
- Plasma Desktop Control: New in 4.4, it's the easy way to open the scripting console in plasma-desktop: desktop console
- Plasma Addons
- Audio Player Control: control any MPRIS enabled media player, which is most of the F/OSS ones. Defaults to looking for Amarok but can be configured to use different players. New in 4.4; it would be nice to see the need to configure it for the non-Amarok case removed or at least mitigated, though.
- Browser History: Return to where you've been in your browser history; speaking of which, I heard that rekonq has been using runenrs as well? If so, neat.
- Contacts: Search through your contacts and email them. Once Akonadi is in greater use (looks like contacts are there for 4.4) this should really be transitioned to use Akonadi; that will make this one a lot less of a performance hog.
- Converter: Convert units and currencies. Did you know that one carat is 0.0002 killograms? :) This uses libkunitconversion which joins KDE's Development Platform in kdelibs for 4.4
- Kate Sessions: Launch Kate sessions
- Konqueror Sessions: Launch Konqueror sessions
- Konsole Sessions: Launch Konsole sessions (a bit anti-climactic by now ;)
- Kopete: Control Kopete if it is running; go online and offline, set status messages, etc. It has code to do contact interaction, but right now Kopete's D-Bus interface isn't very amenable to this as it requires sending all the information over the wire to KRunner; so this support isn't compiled in by default for 4.4. When Kopete 2.0 comes out, we should be able to provide access to individual contact interaction features without penalty.
- Mediawiki: New in 4.4, Query mediawiki wikis. Adding a new wiki is just a .desktop file away, and we whip ones for Wikipedia, Wiki Travel, Techbase and Userbase, each appearing as a separate plugin in the configuration dialog even though they use the same plugin. That neat feature is available to any runner that would wish to do the same thanks to a clever little patch by Sebas.
- Spell Checker: Check your spelling quickly: alt+f2, spell <word>
If you'd like to write one, be sure to visit the Creating Runners (C++) tutorial and find us on email@example.com.