¿Cómo configuro controladores de URL personalizados en OS X?

¿Cómo configuro controladores de URL personalizados en OS X?

He estado leyendo mucho en línea sobre controladores de URL personalizados/controladores de protocolos personalizados como:

Entiendo que puedes decirle al sistema que un programa en particular es capaz de manejar un determinado esquema/protocolo con el Info.plistarchivo:

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

Pero si hay varias aplicaciones que son capaces de abrir el mismo controlador de URL, ¿ mailto:cómo se especifica cuál desea que utilice el sistema?

Hubo algunas referencias a utilidades como la More Internet preference paneque ya no parece estar disponible en el sitio del autor. Lo encontré en línea buscando en Google, pero parece un poco inestable, como si estuviera escrito para un OSX más antiguo, tal vez Tiger.

No he podido encontrar información sobre cómo configurar el controlador de URL para protocolos y protocolos personalizados. Supongo que hay un plistarchivo en algún lugar que puedo editar, ¿o tal vez hay una utilidad mejor y más nueva que funciona bien con Mountain Lion?

Respuesta1

El archivo que buscas es ~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist.

Contiene una matriz llamada LSHandlers, y los elementos secundarios del Diccionario que definen un LSHandlerURLSchemese pueden modificar de acuerdo con el LSHandlerRole. Necesita [convertir este archivo binario][1] para editarlo.

En lugar de editar manualmente este archivo, puede utilizarAplicaciones SwiftDefault. Tenga en cuenta que esta aplicación es la sucesora de RCDefaultApp, que no ha recibido mantenimiento, pero también parece tener algunos errores.

Respuesta2

Listado de la configuración actual del controlador de URL de LaunchServices en Apple OS X 10.10 (Yosemite):

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

Respuesta3

Actualización de julio de 2017: RCDefaultApp y lstoolya no funciona en macOS 10.12 o posterior. Tendremos que encontrar una nueva solución.

Editar marzo de 2018
encontréAplicaciones SwiftDefaultpero no puedo probarlo porque todavía no estoy en High Sierra.


Continuando con la respuesta anterior, si desea hacer esto en la línea de comando, puede usar el lstoolcomando, que es el núcleo de RCDefaultApp, que se encuentra en RCDefaultApp.prefPane/Contents/Resources/lstool.

Su uso es sencillo:

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

Respuesta4

De hecho, escribí una aplicación que simplifica el registro de protocolos URL personalizados, si alguien está interesado. Se llama LinCastor (https://onflapp.github.io/blog/pages/LinCastor.html). Los controladores se pueden definir como AppleScript o script de shell (que puede ser Perl, Python o lo que sea).

información relacionada