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.


Other articles of interest:

Leave a Reply

Your email address will not be published. Required fields are marked *

Recent Comments
  • Signing up for the Katalon Webinars (1)
    • Nagesh: Thank You . I found alot of new concepts
  • How To Disable the Quicken Registration Prompt (32)
    • Mike: Hi, for anyone still trying to run older versions of Quicken, mine is 2004, I hope this helps. I managed to get it running on my old laptop by adding the three missing dll files, when I needed to upgrade I thought I would be able...
    • Juani: Hi, I have a registered Quicken 2016 and now my files are being held hostage by Intuit, cannot log in with my ID unless I upgrade therefore buy a subscription, I need to access my files, please HELP. Thanks
    • David: A BIG Thank you! I regularly reinstall Windows OS’s using different hardware configs. In short, Quicken 2011 (it’s March of 2020 as I write this) has been a program I’ve been very happy with and continue to use....
    • Karen L: Today I rang Reckon Australia again, got a different guy and he talked me through the process of getting me a new product key to enter since I already had the licence and it had been extended. Reckon have only extended it by 1...
    • Karen L: I have Australian Quicken 2008 on Windows 8.1. It keeps asking me to renew my licence which Reckon did for me however the activation won’t work. I tried this to disable the registration prompt however it did not stop the...
  • Enter dates into a date picker for Chrome and Firefox (1)
    • Prasanna: Hello, How to enter a previous month FIRST day and LAST day from the system date. Thanks Prasanna
  • Building Relationships with Developers (1)
    • Carlos Herrera: Ah yes. I have a team of software developers and it is genuinely so hard to keep them in the loop during projects. Though the more we work the better the communication becomes and we go from a trail and error process to a...
  • Integrating DevonAgent Pro with Alfred (1)
    • J. Garr: Beautiful, sweet, and simple. I love it; thanks for posting this solution.
  • Round and Round with the For..Next in Katalon Studio (1)
    • Sweet Ophaline Labador: Hello can you help me how to loop this scenario. Checking the elements is just the same. I want to check that the following function is available in Track Shipment – clicking on this can...
  • Parsing Strings in Katalon – Split, Substring and Readlines (6)
    • Don Pedro: String tempText=”Date Month January. Revenue $1,355,721.00″ println(tempText.split(“ \$”)[1]) You need to escape the $ with \$ The [1] on the split captures characters on the right of the split [0]...
    • Prasad: Hi, I need to get the substring from the below string ‘Date Month January. Revenue $1,355,721.00’ I want to extract text after $ value. Please help Thank you
  • Working with Dates and Date Formatting in Katalon Studio (15)
    • Sangeethaa: How to get previous day’s date(Yesterday’s date)? Actually I was using today.previous() before,it was working fine till today morning.Now its not retrieving right date. Can anyone please guide me on this.
  • Output status messages and test information by writing to the Log File Viewer in Katalon Studio (6)
    • Saranya: Good One. Could you plz share link to access all your katalon related blogs. ThankQ
    • Rodrigo Calabretta: I’m using the KeywordUtil.markFailed or KeywordUtil.markError and my test stops is being shown as Error and If I use in the @afterTestCase the testCaseContext.getTestCaseSta tus() to show the status test case...