Como configuro os manipuladores de URL personalizados no OS X?

50

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

Eu entendo que você pode dizer ao sistema que um programa em particular é capaz de lidar com um determinado esquema / protocolo com o arquivo 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/>

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

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

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

    
por cwd 07.02.2013 / 21:54

8 respostas

42

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

( no OSX 10.11 o principal plist é ~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist embora o acima ainda exista… )

Ele contém um array chamado LSHandlers , e os filhos do Dictionary que definem um LSHandlerURLScheme podem ser modificados de acordo com o LSHandlerRole .

Em vez de editar manualmente esse arquivo, você também pode usar o RCDefaultApp , que fornece um belo painel de preferências (< em>… não funciona mais no OSX 10.12 ).

Edit Mar 2018
Eu encontrei SwiftDefaultApps mas não posso testar como ainda não estou no High Sierra.
Se alguém quiser testar & relatar de volta ...

Por exemplo, aqui está o SVN e o SSH:

…enoRCDefaultApp:

    
por 07.02.2013 / 21:58
13

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

Edit Mar 2018
Eu encontrei SwiftDefaultApps mas não posso testar como ainda não estou no High Sierra.

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

Seu uso é direto:

[~]$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
    
por 12.09.2013 / 23:49
9

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

defaults read com.apple.LaunchServices/com.apple.launchservices.secure
    
por 20.08.2015 / 01:12
5

Na verdade, eu escrevi um aplicativo simplificando o registro de protocolos de URL personalizados, se alguém estiver interessado. É chamado LinCastor ( link ). Os manipuladores podem ser definidos como AppleScript ou script de shell (que pode perl, python ou qualquer outro).

    
por 24.10.2013 / 23:42
5

Abra o arquivo com o XCode funciona bem fácil.

Usando a compilação no comando plutil , conforme descrito na resposta do link para converter entre o formato xml1 ou binary1 works semelhante.

plutil -convert xml1 /file-i-wish

nano /file-i-wish & save file 

plutil -convert binary1 /file-i-wish

Não há necessidade de ferramentas 'alienígenas': -)

    
por 13.10.2014 / 13:23
3

Você também pode usar duti :

echo $'com.apple.mail mailto\ncom.googlecode.iterm2 x-man-page'>~/.duti;duti ~/.duti
    
por 25.10.2013 / 09:56
0

Eu apenas tentei o antigo Mais Internet, sob El Capitan.

É funky e a única maneira de funcionar é usando as teclas de seta para cima e para baixo para selecionar o protocolo, e um arrastar / soltar do ícone do aplicativo na janela para fazer uma alteração.

Eu mudei o padrão do Safari para o Chrome, e a mudança parou, então ainda funciona.

    
por 13.07.2016 / 04:42
0

Outra maneira de listar as configurações atuais do manipulador de URLs LaunchServices com o Xcode no Apple OS X 10.10+ (Yosemite):

open -a Xcode ~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist
    
por 12.05.2017 / 11:20