its-mine

Reclaim your macOS file extension associations.

(friendlier version + separate GUI app coming soon)

Signed, universal binary in the releases.

WAT

  • To set default application: ./its-mine set-default <bundleIdentifier> <UTI>
  • To set default applications from a JSON file: ./its-mine set-defaults-json <jsonFilePath>
  • To find UTI for a file extension: ./its-mine find-uti <fileExtension>
  • To find app bundle identifier: ./its-mine find-app <appName>

Some example runs:

./its-mine find-app /Applications/Sublime\ Text.app
Bundle Identifier: com.sublimetext.4
App Path: /Applications/Sublime Text.app

./its-mine find-uti "csv"
UTI for file extension 'csv': public.comma-separated-values-text

 ./its-mine set-default com.sublimetext.4 public.comma-separated-values-text
 Default application set successfully

Something something “set default applications from a JSON file”

/path/to/your/mappings.json

[
  { "bundleId": "com.sublimetext.4", "uti": "public.comma-separated-values-text" }
]

Hourly launchd b/c Apple is evil

~/Library/LaunchAgents/is.rud.its-mine.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>Label</key>
    <string>is.rud.its-mine</string>
    <key>ProgramArguments</key>
    <array>
      <string>/path/to/your/its-mine</string>
      <string>set-defaults-json</string>
      <string>/path/to/your/mappings.json</string>
    </array>
    <key>StartInterval</key>
    <integer>3600</integer>
    <key>RunAtLoad</key>
    <true />
  </dict>
</plist>
launchctl load ~/Library/LaunchAgents/is.rud.its-mine.plist
launchctl list | grep is.rud.its-mine

GitHub

View Github