Вы можете редактировать ~/Library/Preferences/com.apple.LaunchServices.plist
в текстовом редакторе после преобразования его в XML:
plutil -convert xml1 ~/Library/Preferences/com.apple.LaunchServices.plist
Затем добавьте такие записи в 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>
Вы можете использовать mdls
для просмотра UTI типов файлов и что-то вроде osascript -e 'id of app "AppName"'
просмотра идентификаторов пакетов приложений.
Вы можете применить изменения com.apple.LaunchServices.plist
, перезапустив. Выйти и вернуться недостаточно.
ПРИМЕЧАНИЕ : duti
больше не находится в активной разработке и был помечен сопровождающими как «неподдерживаемый». С 2012 года в проекте не наблюдалось значительного прогресса, кроме обновлений конфигурации. Он переместился из Sourceforge в Github. Этот ответ был обновлен и теперь содержит новые ссылки.
Я также использую Duti, хотя. Я сохранил такой файл (около 100 строк) как ~/.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
У меня есть агент запуска, который запускается duti ~/.duti
автоматически при ~/.duti
изменении.
Вы можете обычно использовать расширения имени файла (как .jpg
) вместо UTI (как public.jpg
), чтобы указать типы файлов. duti
преобразует расширения в UTI, которые также применяются к другим расширениям (например .jpeg
). Для некоторых расширений, таких как .mkv
и .tex
, UTI зависит от того, какое приложение зарегистрировало расширение первым.
Последняя версия из duti
только включает в себя исходный код, но 1.5.0 также включает в себя установку.
brew install duti
для установкиduti
Вот агент запуска для duti, который сделает свое дело:
Очевидно, заменить
joshgummersall
на свое имя пользователя. Я поместил этот файл в~/Library/LaunchAgents/duti.plist
,chmmod
d до 644 и запустил:источник
Краткий ответ: ассоциация приложения файла хранится в ветке ресурсов файла , и Apple предоставляет две утилиты ( Rez ветке и DeRez ), которые позволяют манипулировать ветвями ресурсов, но это не для слабонервных.
Для более подробной информации, этот вопрос очень тщательно ответил на Super User:
источник