Wiki Update: Execute Swift Script

Submitted for your review, comment, and/or revision, the following Wiki article has been updated:

###action: Execute a Swift Script [Keyboard Maestro Wiki]

###Primary Changes

###Confirm or Correct

Swift scripts can get (but not set) Keyboard Maestro Variables by using environment variables


The new code blocks are fine. But the “get (but not set)” is not entirely correct: Not with environment variables, but you can set KM variables from Swift.

The “cheap” way is via a shell process / osascript:

import Foundation

let myString = "This works 👍"
let task = Process()
task.launchPath = "/usr/bin/osascript"
task.arguments = ["-e", "tell application \"Keyboard Maestro Engine\" to setvariable \"fromSwift\" to \"\(myString)\""]

There is another way, but I’m still working on it.


OK, here is another way:

import Foundation

let myString = "This works 🙂"
NSAppleScript(source: "tell application \"Keyboard Maestro Engine\" to setvariable \"fromSwift\" to \"\(myString)\"")?
1 Like

Just to be clear, this statement is factual, but misleading. Environment Variables can never be used to set KM variables - it doesn’t matter what language or script or whatever.

What Tom is saying is that there are ways to set KM variables from Swift - just not via Environment Variables.


Yes, that’s what I’m saying (or wanted to say). Thanks for the clarification.

1 Like

Dan, since you are a Wiki editor with the knowledge about Swift, could you please update the Wiki to show how to set KM vars via Swift?


Somebody already has updated the article.