id = "geektool" name = "GeekTool" homepage = "https://www.tynsoe.org/geektool/" description = "GeekTool is a macOS application that lets you customize your desktop with great flexibility." # The GeekTool application icon, from the vendor's own product page. icon = "https://www.tynsoe.org/icons/geektool_512.png" # GeekTool ships no command-line tool, so `detect` is the bundle identifier. # GeekTool.app is a launcher around a preference pane, and the two halves have # their own: org.tynsoe.GeekTool for GeekTool.app itself and org.tynsoe.geektool3 # for the helper that actually draws the desktop, GeekTool.prefPane/Contents/ # Resources/GeekTool Helper.app. Both read from the official build at # https://s3.tynsoe.org/geektool/ with `plutil -p` on the Info.plist inside. executables = [] platforms = ["macos"] [installation] macos_bundle_ids = ["org.tynsoe.geektool3", "org.tynsoe.GeekTool"] [dotfiles] # The vendor's own documentation, https://www.tynsoe.org/geektool/documentation/: # "Preferences are stored in the standard macOS preferences system, which stores # persistant data in ~/Library/Preferences/ files. GeekTool's approach is to had # a global preferences domain as org.tynsoe.geektool3.plist and per-geeklet # configuration in org.tynsoe.geeklet. domain." # # So four geeklet domains, not three: the Homebrew cask's zap stanza # (https://github.com/Homebrew/homebrew-cask/blob/master/Casks/g/geektool.rb) # lists file, image and shell but misses web, and the vendor's list is the one # to follow. org.tynsoe.GeekTool is the launcher's own domain, which the cask # does name; a machine that has used an older release still has it. paths = [ "[preferences]/org.tynsoe.geektool3.plist", "[preferences]/org.tynsoe.GeekTool.plist", "[preferences]/org.tynsoe.geeklet.file.plist", "[preferences]/org.tynsoe.geeklet.image.plist", "[preferences]/org.tynsoe.geeklet.shell.plist", "[preferences]/org.tynsoe.geeklet.web.plist", ] exclude = [] # Nothing GeekTool stores is a credential. A shell geeklet runs a command the # user typed, which could of course contain one; that is a matter for the # consumer's content scan rather than a path this entry can name. secret = [] # No machine_lines. These are property lists, which have no matcher in this # schema — `format` covers toml, yaml and json only. Worth knowing that a # geeklet does carry machine-local values a consumer able to read plists should # handle: the screen coordinates each geeklet is pinned to, and the absolute # paths a file geeklet tails or an image geeklet loads.