Como configuro manipuladores de URL personalizados no OS X?

Como configuro manipuladores de URL personalizados no OS X?

Tenho lido muito on-line sobre manipuladores de URL personalizados/manipuladores de protocolo personalizados, como:

Entendo que você pode dizer ao sistema que um determinado programa é capaz de lidar com um determinado esquema/protocolo com o Info.plistarquivo:

<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/>

Mas se houver vários aplicativos capazes de abrir o mesmo manipulador de URL, por exemplo, como mailto:você especifica qual deseja que o sistema use?

Houve algumas referências a utilitários como o More Internet preference paneque não parece mais estar disponível no site do autor. Eu o encontrei on-line pesquisando no Google, mas parece um pouco instável - como se tivesse sido escrito para um OSX mais antigo - talvez Tiger.

Não consegui encontrar informações sobre como definir o manipulador de URL para protocolos e protocolos personalizados. Presumo que haja um plistarquivo em algum lugar que eu possa editar - ou talvez haja um utilitário mais novo e melhor que funcione bem com o Mountain Lion?

Responder1

O arquivo que você procura é ~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist.

Ele contém um array chamado LSHandlerse os filhos do Dicionário que definem an LSHandlerURLSchemepodem ser modificados de acordo com o LSHandlerRole. Você precisa [converter este arquivo binário][1] para editá-lo.

Em vez de editar manualmente este arquivo, você pode usarSwiftDefaultApps. Observe que este aplicativo é um sucessor do RCDefaultApp, que não recebeu manutenção, mas também parece ter alguns bugs.

Responder2

Listando as configurações atuais do manipulador de URL do LaunchServices no Apple OS X 10.10 (Yosemite):

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

Responder3

Atualização de julho de 2017: RCDefaultApp e lstoolnão funciona mais no macOS 10.12 ou posterior. Teremos que encontrar uma nova solução.

Editar março de 2018
eu encontreiSwiftDefaultAppsmas não posso testar porque ainda não estou em High Sierra.


Continuando a resposta anterior, se desejar fazer isso na linha de comando, você pode usar o lstoolcomando, que é o núcleo do RCDefaultApp, encontrado em RCDefaultApp.prefPane/Contents/Resources/lstool.

Seu uso é simples:

[~]$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

Responder4

Na verdade, escrevi um aplicativo simplificando o registro de protocolos de URL personalizados, se alguém estiver interessado. É chamado LinCastor (https://onflapp.github.io/blog/pages/LinCastor.html). Os manipuladores podem ser definidos como AppleScript ou shell script (que pode ser perl, python ou qualquer outro).

informação relacionada