Repository navigation
Command line
MaccyPlus ships a headless CLI so rules, terminal apps, plugins and per-action shortcuts can be managed without the GUI. It is handy for scripts and AI coding agents. Edits apply live: a running MaccyPlus reloads immediately; otherwise they are read on next launch.
The executable path contains a space, so always quote it.
APP=$(mdfind "kMDItemCFBundleIdentifier == 'com.royp.MaccyPlus'" | head -1)
BIN="$APP/Contents/MacOS/MaccyPlus"
"$BIN" rules describe # live schema catalog; proves it works"$BIN" rules list
"$BIN" rules get <id>
"$BIN" rules add --json '<partial rule JSON>'
"$BIN" rules update <id> --json '<rule JSON>'
"$BIN" rules remove <id>
"$BIN" rules move <id> <index> # priority = position, 0 = first
"$BIN" rules enable|disable <id>
"$BIN" rules import --json '<array>' # REPLACES ALL rulesInput comes from --json, or piped stdin. Omitted fields get defaults and missing ids are generated. Input is validated before anything is written, so a rejected command changes nothing.
-
rules update <id>replaces the whole rule. Do read-modify-write:rules get <id>, edit the JSON, send it back. -
--filedoes not work: the app is sandboxed and cannot read arbitrary paths. Use--jsonor stdin.
Example:
"$BIN" rules add --json '{"name":"Open ticket keys",
"conditions":[{"type":"regex","value":"^[A-Z]+-[0-9]+$"}],
"actions":[{"type":"openInApp","appBundleID":"com.apple.Safari"}]}'Always start from rules describe; it is built from the app's own enums and wins over any doc if they disagree.
"$BIN" terminals list|add <bundleid>|remove <bundleid>|reset
"$BIN" plugins list
"$BIN" plugins enable|disable <package-id>
"$BIN" folders list
"$BIN" folders add|remove <path>All output is JSON. Errors go to stderr with a non-zero exit.
"$BIN" history … lets agents read and manage history items and leave labelled values for you. See Agent clipboard API.
MaccyPlus · MIT © Roy Padina · Support on Ko-fi ☕