I would like to create a macro group which is active only for a specific user account. Is this possible? If not, what would be an easy if/then to check the user account?
The reason I want to do this is that I am using the Sync Macros feature to keep the same macro set across all of the computers in my home. But there are some macros my wife likes that I don't, and vice versa. I realize there is the "Disabled on this Mac" feature. However, each of us might log in to any of the computers. It's not a question of which computer is being used, but rather who is logging in to a given computer that determines whether or not I'd want a given group to be active.
Is there a way that an expression can be evaluated to enable/disable a Group? I could use this inside an if/then but I would prefer not to have to put an "if %UserLoginID%=jfeinberg" in lots of macros.
OK I tried it! Just one minor problem... When this script runs, it disables (or enables) the group on ALL computers regardless of who is logged in.
Suppose I log on to an iMac as user scott. The Test group is enabled.
Suppose I then log into a MacBook as user jfeinberg. The Test group is disabled.
I then go back to my iMac. The test group is now disabled on that computer as well!
So - can I enable/disable a group on a per-logon basis rather than on all computers sharing the keyboard macro file?
Oh - I didn’t expect that but I think I know what’s causing it and you mentioned it in your first post: you use KM synch, so any change to your KM environment is reflected across all your Macs.
You can test this by manually disabling a macro group on one Mac and then checking to see if that’s been replicated on another Mac. I’m fairly sure this is the problem.
As far as I know, the only way to get this method to work is to turn off KM synching so each of the Macs is left with the latest versions of your macros/groups etc and then they’ll operate independently.
I don’t know what your setup is, really, so I don’t know how essential KM synching is. For example - are you frequently modifying and/or creating macros and so you need KM synch to propagate the changes across your Macs? If not then simply turn off KM synch and only turn it on temporarily when you want to change or create a macro. Otherwise, we’ll have to think of a different approach.
I’m not at my desk now until tomorrow, so if someone else doesn’t jump in with a suggestion in the meantime I’ll have another think and post something later.
I really love the KM Synch feature. I don't change the macros that often, but I have a LOT of computers (most of which are now running OpenCore so that I can run Catalina and later). So even though I don't make too many changes, I'd still be frequently turning the sync on and back off again. I definitely want to keep the synch feature on all the time.
In post #3 the user said he wanted to avoid an IF statement. I simplified the problem a little bit by saying the IF statement could be replaced by a macro statement.
OP here - I think the thing to do may be to just put the if/then in those macros that are user-specific. There are only 5 or 10 of them so it's not so bad. I can make a shared code block so that if tweaks are needed I only have to change it once. It would be more elegant if I could have just one if/then for the group, but I want to keep kmsync turned on so that is not an option.
"If there are some macros you do not want active on a Mac, you can configure any given Macro Group to be disabled on that particular Mac by turning on the Disabled on this Mac setting in that Macro Group."
As I don't have KM Synch turned on I wasn't sure what this meant and in fact my Test group definition looks like this:
However, after turning on sync it looks like this:
It's hard to miss the difference! "Disabled on this Mac" I think refers to syncing for that particular group on that particular Mac.
Checking that checkbox therefore, prevents the macros in this group from syncing anywhere else. That means, if you can identify the macros that you want to be unique to a specific user you can just put them in a group and disable syncing for that group. I then believe my original suggestion regarding a macro triggered at user login should work, as disabling/enabling such a macro group would not then sync across to the other macs.
I haven't tested this (it's way past my bedtime) but if you want to give it a go feel free!
Can I set "Disabled on this mac" inside a Keyboard Maestro macro, the same way I could disable a Group from inside a macro? If yes, then that would be a perfect solution!
There isn't a native KM action to do this, but you can do it in AppleScript. These examples set and unset the Disabled on this Mac property of the macro group called [Test] - you can use whatever group name you like or you can pass the contents of a KM variable to the AppleScript if you like...
tell application "Keyboard Maestro"
set disabled on this Mac of macro group "[Test]" to true
end tell
tell application "Keyboard Maestro"
set disabled on this Mac of macro group "[Test]" to false
end tell
I really am going to bed now. If you need help with the AppleScript or whatever let me know.