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.

keyboard-maestro-app

Other articles of interest:

Leave a Reply

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

Recent Comments
  • 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 www.siacargo.com: Track Shipment – clicking on this can...
  • How To Disable the Quicken Registration Prompt (30)
    • 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...
  • 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.
    • Don Pedro: That could be a little tricky. First, is the text/format always going to be the same? You will need to do some parsing. Separate the first but of text at 2019. After that, split the text again to get rid of Central Standard...
    • Don Pedro: It should be of the same Date type as today. You could then do some calendar trickery with Calendar /*Calendar c = Calendar.getInstance(); //c.set(Calendar.MONTH, 1) //Set the month, 0=January, 11=December println...
    • josh: I’m testing a page with a string like “Updated November 21, 2019 16:25:32 PM Central Standard Time.” How might I capture the date and time and compare it to current time to verify that the update time was within...
    • zakir hussain: today = new Date() lastWeek = (today – 1.week) can u please help me in understanding what is the return type of lastweek? and I wanted to set nextyear date how can i do it
  • 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...
  • Setting up Environment Profiles in Katalon Studio (2)
    • Don Pedro: Not quite sure I understand. The term “Execution Profile” is normally used now, but they are still GlobalVariables and are created in the same way for version 7 as previous. You make a new execution profile, then...
  • Here is my drive cluster (2)
    • Don Pedro: While I still have those drives, the drive cluster looks nothing like that now. Almost all of my external drives have had the cases removed and they have been installed into a series of MediaSonic 8 Bay Drive Enclosures. I...