Where to put Solid device action macro expander?
Kai Uwe Broulik
kde at privat.broulik.de
Tue Jul 26 20:45:39 BST 2022
Hi everyone,
Plasma's Device Notifier applet offers actions for devices, such as
"open in file manager", "download images", "format partition" provided
through Solid actions. Those are basically special desktop files with a
predicate that Solid runs against your drives to determine whether the
action should be offered or not.
I want to add this functionality to places outside of Plasma, e.g.
Dolphin. Fetching those actions is just simple QStandardPaths finding
desktop files in a special location.
However, the Exec line can contain a few special placeholders, e.g. %f
for the mount path of the device the action was executed on, or %i for
its ID. This is done through a KMacroExpander in the hotplug data engine
in plasma-workspace [1].
Now the big question: Where can I put this class so I can use it from
Dolphin, KIO, maybe others?
* Solid - logical place, but can't because it's Tier 1 and cannot depend
on KCoreAddons where KMacroExpander lives
* KService - where the launcher jobs are supposed to go (I heard) but
that doesn't depend on Solid and I am not sure it's a good idea to add
it as a dep for that
* KCompletion - err..?
* KIO - alongside DesktopExecParser, sounds related but also is pretty
random.
Or should we add a `setDevice(Solid::Device)` method to
CommandLauncherJob and, if set, do the expansion under the hood?
Suggestions welcome.
Cheers
Kai Uwe
PS: If we hadn't killed SolidUiServer I could have delegated this work
to it over a DBus call ;)
PPS: I am glad SolidUiServer is dead.
[1]
https://invent.kde.org/plasma/plasma-workspace/-/blob/master/dataengines/hotplug/deviceserviceaction.cpp#L93
More information about the kde-core-devel
mailing list