Open Message to Macro and Plugin Contributors

For a while now, some of us have been discussing how to standardise a few things about Macros, including such things as location of Resource files, updating existing macros and plugins, etc.

So I figured it would help if we had an “installer” that helped users install and update macros. It could do things for the users like:

  1. Update existing (sub-) macros to a new version, keeping the UUID the same so any references to it would automatically work with the new version.

  2. Automate the process of storing and updating any Resources folders (like HTML css files, external script files, etc).

  3. Make creating, distributing, updating, and requiring Scripting Libraries easier. Imagine if we could build a library of Scripting Libraries that we could guarantee were available on a user’s system, so we don’t have to recreate the wheel each time we write and distribute macros.

  4. Help automatically install updated Plugins.

  5. Provide a framework for defining and performing additional installation tasks and verifications.

  6. Etc.

To that end, I created the initial version of the Macro Import Manager. This first version doesn’t have the features mentioned above, but that’s the goal.

In the future when we share Macros and Plugins, we could say “Please use the Macro Import Manager to install this macro/plugin”. Or we could even create a specialized version of a .kmmacros file (with a different extension), or a .zip file or something, which actually requires it to be installed by MIM, so we can guarantee that resources are placed in the right locations, older versions are updated properly, etc.

So, if any of you think these goals and others like them are worth pursuing, then I ask, or even beg you to become a beta tester of the Macro Import Manager, and let’s start a discussion of what goals we want to achieve, and how we get there from here.

I’m open to just about anything, even including (God forbid) going back to the drawing board and restarting from scratch (even if that means trashing what I’ve already got, although if you had any idea of how much time I’ve spent on this already, you would understand my preference for not having to do this :slight_smile: ).


Tagging a handful of recent contributors, but all are welcome to participate:

@peternlewis @JMichaelTX @ccstone @Tom @Rather @MitchellModel @iNik @ComplexPoint

1 Like

Great idea! :thumbsup:

Do you want the discussion here, in this topic, or in the MIM topic?

I think that, perhaps, the MIM topic should be for questions and suggestions specifically about that macro set, and we should have a different topic to discuss the future.

What do you think?


So, we can have the discussion about “what goals we want to achieve, and how we get there from here” in this topic.

1 Like

Hi @DanThomas,

I was looking at this paragraph that Peter wrote and it made me wonder whether your Import Manager should have an option that incorporates his security point (my bold):

…if you import macros the macros can run immediately (for example , if triggered by something like Periodic Every Second), so if you are importing a macro from an untrusted source, it can execute something pretty much immediately - this is something to keep in mind if you don’t trust where you are getting the macros from. You can safeguard yourself by relaunching the Keyboard Maestro editor (as above) and then quitting the Keyboard Maestro Engine so no macros are run, and then importing the macros. Then you can look through the macros and verify their behaviour and/or disable them and then relaunch the Keyboard Maestro Engine.

I’ve used MIM for the first time today on a few different macros, and so far it works well!

Peter’s post is here:

Thanks for trying it out!

In MIM, I specifically added the ability to choose not to import the trigger of a macro because of this concern.

Do you think this isn’t a good enough option, or is it possible the “checkbox” glyph I used for Triggers isn’t obvious enough?

1 Like

That’s a beautiful way of saying I didn’t pay enough attention to your hard work!

I see a large checkbox near the top left, which seems to be about controlling whether the macro is imported or not. It’s not clear to me that I can import a macro in a ‘disabled’ form.

No, I'm not saying anything of the sort. I'm a firm believer that a UI should tell you what to do.

So no, you can't import a macro in "disabled" state, but you can click the checkbox next to the Trigger, and the trigger won't be imported.

So this tells me I need to make that checkbox more obvious. I wondered about it at the time. So thanks for the confirmation!

Note that in 7.1, I also added the ability to import macros disabled if you hold all the modifiers down when importing (I updated the original post as well).

Hi @DanThomas

Ah. Yes, I completely overlooked the Trigger checkbox as something I could interact with. To me it looked like an icon for triggers! :slight_smile:

Thanks for your efforts—I’m very appreciative of the way that your effort and contribution helps me to learn.

OK, that’s on the list to change in the next release. Thanks!

My pleasure. Seriously, or I wouldn’t be doing it!. :slight_smile: