Puedes editar ~/Library/Preferences/com.apple.LaunchServices.plist en un editor de texto después de convertirlo a XML:
plutil -convert xml1 ~/Library/Preferences/com.apple.LaunchServices.plist
Luego agregue entradas como esta a la matriz LSHandlers :
<dict>
<key>LSHandlerContentType</key>
<string>com.adobe.pdf</string>
<key>LSHandlerRoleAll</key>
<string>net.sourceforge.skim-app.skim</string>
</dict>
<dict>
<key>LSHandlerContentTag</key>
<string>mkv</string>
<key>LSHandlerContentTagClass</key>
<string>public.filename-extension</string>
<key>LSHandlerRoleAll</key>
<string>org.videolan.vlc</string>
</dict>
Puedes usar mdls para ver las UTI de los tipos de archivos y algo como osascript -e 'id of app "AppName"' para ver los identificadores de paquetes de las aplicaciones.
Puedes aplicar cambios a com.apple.LaunchServices.plist reiniciando. Cerrar sesión y volver a entrar no es suficiente.
También uso duti . He guardado un archivo como este (con aproximadamente 100 líneas) como ~/.duti :
org.gnu.Emacs public.plain-text all # .txt, .text, plain text files without an extension
org.gnu.Emacs public.unix-executable all # executable scripts
com.SequentialX.Sequential .jpg all
org.videolan.vlc .mkv all
Tengo un agente launchd que ejecuta duti ~/.duti automáticamente cuando se cambia ~/.duti .
Normalmente, puede usar extensiones de nombre de archivo (como .jpg ) en lugar de UTI (como public.jpg ) para especificar los tipos de archivos. duti convierte las extensiones en UTI que también se aplican a otras extensiones (como .jpeg ). Para algunas extensiones como .mkv y .tex , la UTI depende de qué aplicación registró primero la extensión.
La última versión de duti (1.5.1) solo incluye código fuente, pero 1.5.0 también incluye un instalador.