Add APIs to allow using native DLL functions for custom columns

Currently there is no great way to extend Opus main UI: namely, the columns in the most commonly used file list.

You have a relatively rich set of APIs with JScript, which is

  • − slow,
  • − outdated, and
  • − rather limited as a language (poor std that can't be easily extended by tapping into the huge JS module infrastructure)

Or you have the new kid on the v13 block — Evaluator — which is

  • ++ more performant,
  • ± has access to a lot of the same Opus data as JScript (but not all!),
  • − but is an even more unergonomic language to work with both due to the language limitations as well as lacking facilities available to JScript (some are listed here )

Then you can do Windows-wide shell extensions (with ), but:

  • − fatal flaw: there is no Opus integration, so you can't, e.g., get the folder size info that Opus has already received from Everything, get user config from Opus that user defines in a familiar interface, and just add your custom transformation based on those configs, and pass it back in a format Opus expects to get for a given column
  • − it's more complicated (the only real option seems to be XP-era deprecated APIs, though still supported by Opus, so I guess not a big deal)

So I'd like to ask for a set of APIs where instead of calling the embedded scripting engine you'd be able to make a call to a native compiled function in some DLL, which would be able to

  • request the same Opus data Jscript can get, and
  • send back to Opus an agreed-upon type of results (say, 5 numbers for 5 columns so you could do share some common calculations, or a single text value).

This way you could use whatever rich general-purpose programming language with all the tooling/modules/other infrastructure available to it, and not suffer many of the performance and other limitations listed above

2 Likes

It's not a bad idea but probably not something we'll do any time soon, given how little interest there has been in writing C++ (etc.) plugins for the other parts of Opus that have APIs for that.

If only one person is likely to ever use the API, it would be more efficient for us to add the columns/changes (or some other way to do them) ourselves.

But those parts (VFS and Viewer, right?) are way more complicated with way fewer potential users. I also wouldn't touch those, but then if I could copy&paste someone's template and just plug my couple of dozen lines of logic similarly to how I did it for all those JScipts to get a column or a button command, then it's a totally different level of "approachability"

But then as questions like these How to use plugin add column illustrate, there isn't even a single example!

Besides as you've noticed in the C# post:

Sure, but this also didn't happen, besides being a less flexible option in general (like putting a limit on the number of people)