Как настроить пользовательские обработчики URL-адресов в OS X?

Как настроить пользовательские обработчики URL-адресов в OS X?

Я много читал в Интернете о пользовательских обработчиках URL-адресов / пользовательских обработчиках протоколов, таких как:

Я понимаю, что можно сообщить системе, что конкретная программа способна обрабатывать определенную схему/протокол с файлом Info.plist:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLName</key>
        <string>Local File</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>local</string>
        </array>
    </dict>
</array>
<key>NSUIElement</key>
<true/>

Но если есть несколько приложений, которые могут открывать один и тот же обработчик URL, как mailto:указать, какой из них должна использовать система?

Были некоторые ссылки на утилиты, такие как , More Internet preference paneкоторые, похоже, больше не доступны на сайте автора. Я нашел его в Интернете с помощью Google, но он кажется немного шатким - как будто он был написан для старой OSX - возможно, Tiger.

Я не смог найти информацию о том, как настроить обработчик URL для протоколов и пользовательских протоколов. Я предполагаю, что plistгде-то есть файл, который я могу редактировать, или, может быть, есть более новая, лучшая утилита, которая хорошо работает с Mountain Lion?

решение1

Файл, который вы ищете, — ~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist.

Он содержит массив с именем LSHandlers, а дочерние элементы Dictionary, которые определяют , LSHandlerURLSchemeмогут быть изменены соответствующим образом с помощью LSHandlerRole. Вам нужно [конвертировать этот двоичный файл][1], чтобы отредактировать его.

Вместо того, чтобы вручную редактировать этот файл, вы можете использоватьSwiftDefaultApps. Обратите внимание, что это приложение является преемником RCDefaultApp, которое больше не поддерживается, но в нем также есть некоторые ошибки.

решение2

Список текущих настроек обработчика URL-адресов LaunchServices в Apple OS X 10.10 (Yosemite):

defaults read com.apple.LaunchServices/com.apple.launchservices.secure

решение3

Обновление июля 2017: RCDefaultApp и lstoolбольше не работают на macOS 10.12 или более поздних версиях. Придется искать новое решение.

Редактировать март 2018 г.
я нашелSwiftDefaultAppsно не могу проверить, так как у меня пока нет High Sierra.


Продолжая предыдущий ответ, если вы хотите сделать это в командной строке, вы можете использовать команду lstool, которая является ядром RCDefaultApp и находится в RCDefaultApp.prefPane/Contents/Resources/lstool.

Его использование простое:

[~]$lstool --help
Usage:

lstool read [<lsscheme> [<type>]]
lstool [-n] write <lsscheme> <type> <app>
lstool [-n] setoption <lsscheme> <type> login|ignorecreator YES|NO
lstool [-n] register {<app>}
lstool [-n] unregister {<path> | <app>}
lstool apps

-n means do not make changes
<lsscheme> is one of: internet, media, url, extension, uti, mime, ostype
<app> is the path to an application or a name to be looked up

решение4

На самом деле я написал приложение, упрощающее регистрацию пользовательских URL-протоколов, если кому-то интересно. Оно называется LinCastor (https://onflapp.github.io/blog/pages/LinCastor.html). Обработчики могут быть определены как AppleScript или скрипт оболочки (который может быть Perl, Python или чем-то еще).

Связанный контент