
He estado leyendo mucho en línea sobre controladores de URL personalizados/controladores de protocolos personalizados como:
- Lanzamiento de aplicaciones externas utilizando protocolos personalizados en OSX
- Controlador de URL de OS X para abrir enlaces a archivos locales
Entiendo que puedes decirle al sistema que un programa en particular es capaz de manejar un determinado esquema/protocolo con el Info.plist
archivo:
<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 pane
que 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 plist
archivo 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 LSHandlerURLScheme
se 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 lstool
ya 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 lstool
comando, 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).