Puede 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 LSHandlers
matriz:
<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>
Puede usar mdls
para ver las UTI de los tipos de archivo y algo así como osascript -e 'id of app "AppName"'
para ver los identificadores de paquetes de aplicaciones.
Puede aplicar cambios com.apple.LaunchServices.plist
reiniciando. Cerrar sesión y volver a iniciarla no es suficiente.
NOTA : duti
ya no se encuentra en desarrollo activo y sus mantenedores lo han etiquetado como "no compatible". El proyecto no ha visto ningún progreso importante desde 2012, aparte de las actualizaciones de configuración. Se mudó de Sourceforge a Github. Esta respuesta se ha actualizado para incluir los nuevos enlaces.
Aunque también uso holandés . 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 de launchd que se ejecuta duti ~/.duti
automáticamente cuando ~/.duti
se cambia.
Normalmente puede usar extensiones de nombre de archivo (como .jpg
) en lugar de una UTI (como public.jpg
) para especificar los tipos de archivo. 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 haya registrado primero la extensión.
La última versión de duti
solo incluye código fuente, pero 1.5.0 también incluye un instalador.
brew install duti
para instalarduti
Aquí hay un agente de launchd para duti que hará el truco:
Obviamente reemplace
joshgummersall
con su propio nombre de usuario. Coloqué este archivo en~/Library/LaunchAgents/duti.plist
,chmmod
d a 644 y ejecuté:fuente
Respuesta corta: la asociación de aplicaciones de un archivo se almacena en la bifurcación de recursos del archivo , y Apple proporciona dos utilidades ( Rez y DeRez ) que permiten la manipulación de las bifurcaciones de recursos, pero esto no es para los débiles de corazón.
Para más detalles, esta pregunta se responde muy a fondo en Super User:
fuente