
Tenho lido muito on-line sobre manipuladores de URL personalizados/manipuladores de protocolo personalizados, como:
- Iniciando aplicativos externos usando protocolos personalizados no OSX
- Manipulador de URL do OS X para abrir links para arquivos locais
Entendo que você pode dizer ao sistema que um determinado programa é capaz de lidar com um determinado esquema/protocolo com o Info.plist
arquivo:
<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 pane
que 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 plist
arquivo 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 LSHandlers
e os filhos do Dicionário que definem an LSHandlerURLScheme
podem 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 lstool
nã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 lstool
comando, 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).