KRunner sorting in KF6
This is a collection of ideas for the sorting that I discussed with Natalie on the Plasma sprint.
One very often requested feature is to allow users to overwrite the sorting of KRunner. For this, we agreed on letting users decide fixed positions for favorite runners. Those runners can be a separate category in the PluginSelector of the KCM. Sorting the favorites should be done using drag/drop.
Also, we want the automatic sorting adjustments to be smarter. For example, we store could launch counts for each category and show more often launched categories first. Same for the relevance, which is responsible for the order within a category. Though runners should have the possibility to opt out of this, because some runners only have one match (webshortcuts) or have sorting based on the recently used state resources (https://github.com/alex1701c/JetBrainsRunner/blob/0cb73b87baefa51274661b09538c061729022a5e/src/jetbrainsrunner.cpp#L156 or https://github.com/naraesk/krunner-translator/blob/73cab3576b9e4337092b93b79adf9a94c6ae7f66/src/provider/youdao.cpp#L96).
Because categories are user-visible strings, we should internally store the plugin IDs. However, this should not affect how users perceive this feature.
To make the sorting adjustments work properly from a sorting POV, we decided on refactoring the matchType to only be relevant for the category sorting. The relevance will be used for sorting within one category. This way, one does not accidentally rearrange categories when one just wants to tweak the order of results within one category.