id = "keyboard-maestro" name = "Keyboard Maestro" homepage = "https://www.keyboardmaestro.com/main/" description = "Keyboard Maestro is the leading software for macOS automation." # The app icon from keyboardmaestro.com. icon = "https://www.keyboardmaestro.com/img/keyboardmaestro-128.png" # Two bundle identifiers, because Keyboard Maestro is two processes: the editor # the user opens and the engine that runs the macros in the background. Both # appear in the Homebrew cask's zap list as their own preference domains, # com.stairways.keyboardmaestro.editor and com.stairways.keyboardmaestro.engine # (https://formulae.brew.sh/api/cask/keyboard-maestro.json). There is no # command line tool. executables = [] platforms = ["macos"] [installation] macos_bundle_ids = ["com.stairways.keyboardmaestro.editor", "com.stairways.keyboardmaestro.engine"] [dotfiles] # The macros are the thing to carry, and Keyboard Maestro's own wiki says where # they are. Troubleshooting: "In Keyboard Maestro, choose Help -> Open # Preferences Folder, and ensure that that folder is writeable and that the # Keyboard Maestro Macros.plist file it contains is writeable", and later on # the same page a shell example spelling the path out: # chmod -N ~/Library/Application\ Support/Keyboard\ Maestro/Keyboard\ Maestro\ Macros.plist # The Macro Library page names a second thing in the same folder: # "~/Library/Application Support/Keyboard Maestro/Keyboard Maestro Libraries". # https://wiki.keyboardmaestro.com/Troubleshooting paths = ["[appData]/Keyboard Maestro/"] # The caches the cask's zap list names are elsewhere # (~/Library/Caches/com.stairways.keyboardmaestro.editor and .engine), as are # the logs (~/Library/Logs/Keyboard Maestro), so nothing above needs carving # out. # The preference domains are treated as credentials rather than as settings, # because the wiki says what is in them. Frequently Asked Questions, on moving # to a new Mac: "Transfer the ~/Library/Application Support/Keyboard Maestro # folder, and optionally the ~/Library/Preferences/com.stairways,keyboardmaestro.* # files (the latter include minor settings and preferences, as well as your # license details)." # # Which of the three domains holds the licence is not stated, so the glob # covers all of them. This over-classifies — most of what is in there is # window positions and preference-pane state — but the alternative is syncing a # licence in the clear, and a plist has no matcher here that could lift out # just that field. # https://wiki.keyboardmaestro.com/Frequently_Asked_Questions secret = ["[preferences]/com.stairways.keyboardmaestro*.plist"] # No machine_lines: the macro file is the user's own automations, and it is a # plist, which `match` cannot read.