KRunner metadata format
Universal Properties
These include user-visible keys like Name
, Icon
, and Description
, which will be shown in several places, like the list of Runners available under System Settings > Search > Plasma Search.
EnabledByDefault
should be set to true
, otherwise the plugin must be enabled manually by ticking its checkbox.
Authors
, License
, Email
, and Website
are displayed in the config module's About dialog for the Runner.
You can find a more extensive list of keys/values in KPluginMetaData.
Deduplication: KRunner is able to deduplicate matches based on their ID. However, this behavior is not enabled by default to avoid unwanted side effects for plugins that do not define their IDs explicitly. The ID, which in the previous example was defined using setId(), should look like a URL, for example file:///home/user/foo
or exec:///bin/konsole
.
To tell KRunner that results from your plugin should be deduplicated, the X-Plasma-Runner-Unique-Results
property should be set to true
.
When deduplicating entries, KRunner must decide which of the matches should be displayed to the user and which ones should be removed. To give KRunner a hint that your matches are less relevant than matches from other runners, you can set the X-Plasma-Runner-Weak-Results
property to true
. A possible use case for X-Plasma-Runner-Weak-Results
would be if your plugin does a file search and sets the file URL as the match's ID. If the user enters a full file path like /home/user/foo
, both your plugin and KDE's Locations runner could produce a match for opening the same URL. By using this property, the Locations runner will take preference over yours. This is desirable, because the Locations runner only provides exact matches.
DBus Runner Properties
For DBus runners, the metadata is written in a .desktop
file. At runtime, KRunner parses this and converts it to a JSON representation to simplify the internals.
The most important key for DBus runners is X-Plasma-API
, which is used to internally identify DBus runners and determine their supported API. This can have the value DBus
or DBus2
. With DBus2
, the Config
method of the DBus interface will be called, which allows for runtime configuration. When only DBus
is set, all explained features of DBus runners will be supported, except the Config
-method. In addition to that, X-Plasma-DBusRunner-Service
must be defined. This tells KRunner what DBus service name it should query. In case there are multiple service names, the value for X-Plasma-DBusRunner-Service
can end with a *
at the end, for example org.kde.testrunner.*
. Also, KRunner needs to know under which path in the service the runner is registered. This is defined using X-Plasma-DBusRunner-Path
.
Providing Usage Help: Since DBus runners can not directly use the RunnerSyntax, it is possible to define a list of supported syntaxes in the metadata. These syntaxes will be displayed by KDE's Help Runner. To utilize this, you can define X-Plasma-Runner-Syntaxes
and X-Plasma-Runner-Syntax-Descriptions
, both of which are comma separated lists. Those lists must be of the same size and each syntax description is mapped to the syntax of the corresponding list index. :q:
serves as a placeholder that will get expanded to "search term" or the translation. The expanded text will be put in angle brackets. This way you do not need to duplicate the "<search term>" string and also do not need to take care of translating it. If you want a more precise description than "search term", you should put the text in angle brackets too. For example myrunner <files to search for>
.
Syntax overview of the example file below:
KRunner input field when the last syntax is selected:
Reduce unneeded querying and DBus activation: Normally, your runner would get queried for each typed letter, and in case it is DBus activated, it would be activated when the first letter is typed. However, many runners have a prefix or pattern that must match. A minimal length is common too, because some runners cannot provide meaningful results for very short queries. To allow DBus runners to utilize the existing KRunner API, X-Plasma-Runner-Min-Letter-Count
and X-Plasma-Runner-Match-Regex
can be defined. These properties are equivalent to minLetterCount or matchRegex and thus prevent unnecessary queries.
Another useful property is X-Plasma-Request-Actions-Once
, which causes KRunner to only query the actions once before the runner is queried. This is prevents lots of unneeded DBus calls and object creations, if the actions stay the same during the lifetime of your runner.
Last updated