id = "appcleaner" name = "AppCleaner" homepage = "https://freemacsoft.net/appcleaner/" description = "AppCleaner is a small application which allows you to thoroughly uninstall unwanted apps." # AppCleaner ships no command-line tool; the name is the executable inside # /Applications/AppCleaner.app/Contents/MacOS/AppCleaner. executables = ["AppCleaner"] platforms = ["macos"] [dotfiles] # Verified on a Mac with AppCleaner installed: # `osascript -e 'id of app "AppCleaner"'` reports net.freemacsoft.AppCleaner, # and its settings are the standard NSUserDefaults domain for that bundle id, # ~/Library/Preferences/net.freemacsoft.AppCleaner.plist — # `defaults read net.freemacsoft.AppCleaner` shows the preference-window # toggles (ProtectOpenedApps, SmartDelete) alongside Sparkle's update # bookkeeping. AppCleaner 2.x used the bundle id com.freemacsoft.AppCleaner and # left its plist behind on machines that upgraded, so both spellings are listed # and a consumer syncs whichever exists. paths = [ "[preferences]/net.freemacsoft.AppCleaner.plist", "[preferences]/com.freemacsoft.AppCleaner.plist", ] exclude = [] # AppCleaner has no account and stores no credential; the domain is toggles, # window frames and Sparkle state. secret = [] # No machine_lines: this is a plist, and `match` only understands line-oriented # files, TOML, YAML and JSON. The machine-local keys in these domains are the # Sparkle bookkeeping (SUHasLaunchedBefore, SULastCheckTime, # SUUpdateGroupIdentifier) and the "NSWindow Frame …" entries; a consumer that # can read plists should drop those itself.