Making applications with Keyboard Maestro

The more I work with Keyboard Maestro, the more impressed I am with it’s power, and how the name doesn’t do it justice.

Yes, it certainly sets up keyboard shortcuts and hotkeys, but you can develop applications using the tools it has to offer. To my point, I recently put together an small app that helped to move and organize 1TB worth of data on my drive. I had literally downloaded so much that I was on the verge of running out of space. I had YouTube videos, tutorials, PDF files, documents, spreadsheets, shell scripts, Groovy files, audio files, and pretty much anything and everything you can snag from the Internet these days.

Taking a few cues from Hazel, I created an “app” within Keyboard Maestro that performs many of the same features. The goal was to move all these from the Downloads folder to one of the several other drives I have connected, and into a folder with a useful name.

Using the “Prompt for User Input” feature, I set up a dialog box that allowed me to select a destination drive. I added an input field to enter the file criteria such as jmeter.mp4, Katalon.doc, .sh, rush.mp3, as well as the destination folder such as Jmeter Tutorials, Jira docs, or Photoshop Interview.

After going through the Keyboard Maestro IF and CASE statements to determine which options were selected on the dialog, these parameters were passed to the “Execute Shell Script” action. This accepted the filename and location, then moved to the files to the appropriate place. Keyboard Maestro would construct the correct move command using variables.

As a bonus, that command is displayed in a Text Window so it can be added to a full shell script file for future use.

Additional features include a check to make sure the destination folder exists. If not, the folder is created.

Since it’s making shell commands, there is an option to execute a full .sh file using all of the previously created move statements.

I was able to pass Keyboard Maestro variables into the shell script, and return shell script variables back to Keyboard Maestro.

By the time I was done, I had a full fledged app, with UI, that allowed me to move files I already knew where there, as well as move new types of files. It also logged the output so I could use the commands next time.

It took the better part of a weekend to move everything. But again, it was 1TB of data. The next run will take a fraction of the time because the full script will run with minimal input from me. It is now scheduled to run on the weekends, so the file processing will be done in the background on a regular basis.

The programming itself was relatively easy. I had to look up how to pass variables around, but the Keyboard Maestro documentation is very extensive. Now that I have it working, there are many more opportunities to combine the built-in features of Keyboard Maestro with the power of shell scripting. Not to mention calling out to run Groovy or Java code, AppleScript code, or Javascript.

I have turned several shell commands into small apps that can be called at will to clean up my drive and manage folders.


It's bad luck to be superstitious.

Author Signature for Posts