id = "hazel" name = "Hazel" homepage = "https://www.noodlesoft.com" description = "Automated Organization for Your Mac." # The Hazel application icon, from Noodlesoft's own site. icon = "https://www.noodlesoft.com/kb/uploads/Hazel-256x256.png" # Hazel ships no command-line tool, so `detect` is the bundle identifier: # com.noodlesoft.Hazel, the preferences domain the Homebrew cask's zap stanza # names (https://formulae.brew.sh/api/cask/hazel.json). The background half of # the app has its own, com.noodlesoft.HazelHelper, and a team-prefixed # 86Z3GCJ4MF.com.noodlesoft.HazelHelper that the same cask quits on uninstall. executables = [] platforms = ["macos"] [installation] macos_bundle_ids = ["com.noodlesoft.Hazel"] [dotfiles] # The same zap stanza is the source for all four paths: # ~/Library/Application Support/Hazel and the three preferences domains # ~/Library/Preferences/com.noodlesoft.Hazel.plist, # ~/Library/Preferences/com.noodlesoft.HazelHelper.plist and # ~/Library/Preferences/86Z3GCJ4MF.com.noodlesoft.HazelHelper.plist. # # Noodlesoft does not publish which of them holds the rules — the manual's # uninstall page says only to drag the app to the Trash — so both the support # directory and the preferences domains are carried rather than guessing at the # split. The rules are the whole point of the app: folders watched, conditions # matched, actions run. paths = [ "[appData]/Hazel/", "[preferences]/com.noodlesoft.Hazel.plist", "[preferences]/com.noodlesoft.HazelHelper.plist", "[preferences]/86Z3GCJ4MF.com.noodlesoft.HazelHelper.plist", ] # Hazel's caches and logs are elsewhere and not named above: # ~/Library/Caches/com.noodlesoft.HazelHelper, ~/Library/Saved Application # State/com.noodlesoft.Hazel.savedState, and ~/Library/Logs/Hazel, which the # manual confirms independently — "opens Hazel's log file (… Library ▸ Logs ▸ # Hazel ▸ Hazel.log)" (https://www.noodlesoft.com/manual/hazel/viewing-logs/). # Hazel is licensed per user and the manual's registration page # (https://www.noodlesoft.com/manual/hazel/installation-setup/register-hazel/) # says you register by dragging in "the license file", without naming where it # is kept afterwards. It is most likely inside the support directory above, but # there is no citation for a path, so nothing is named here rather than # inventing one; a consumer that content-scans what it syncs is the layer that # catches it. secret = [] # No machine_lines, and none are expressible: these are property lists and a # SQLite-backed support directory, while `format` covers toml, yaml and json # only. The machine-local part of a Hazel rule set is real — every rule names an # absolute folder to watch — so a consumer that can read Hazel's own format # should expect to rewrite those.