He estado leyendo mucho en línea sobre manejadores de URL personalizados / manejadores de protocolos personalizados como:
- Inicio de aplicaciones externas mediante protocolos personalizados en OSX
- Controlador de URL de OS X para abrir enlaces a archivos locales
Entiendo que puede decirle al sistema que un programa en particular puede manejar un cierto 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, por ejemplo, mailto:
¿cómo especifica cuál quiere que use el sistema?
Hubo algunas referencias a utilidades como la More Internet preference pane
que ya no parece estar disponible en el sitio del autor. Google lo encontré en línea, pero parece un poco inestable, como si estuviera escrito para un OSX anterior, 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 más nueva y mejor que funciona bien con Mountain Lion?
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 Mar 2018
Encontré SwiftDefaultApps pero no puedo probar ya que 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 enRCDefaultApp.prefPane/Contents/Resources/lstool
.Su uso es sencillo:
fuente
lstool
herramienta de línea de comandos muestra este error cuando intenta ejecutarlo:objc[1049]: Objective-C garbage collection is no longer supported.
(lstool
es el programa interno utilizado por el panel de preferencias RCDefaultApp. Si bien el panel de preferencias parece funcionar, no creo que pueda hacer nada porquelstool
está roto. )Listado de la configuración actual del controlador de URL LaunchServices en Apple OS X 10.10 (Yosemite):
fuente
De hecho, escribí una aplicación que simplifica el registro de protocolos de URL personalizados, si alguien está interesado. Se llama LinCastor ( http://onflapp.wordpress.com/lincastor/ ). Los controladores se pueden definir como AppleScript o script de shell (que puede ser perl, python o lo que sea).
fuente
Abrir el archivo con XCode funciona bastante fácil.
Usar el comando build in
plutil
como se describe en la respuesta en https://discussions.apple.com/thread/5815759 para convertir entre formato xml1 o binary1 funciona de manera similar.No hay necesidad de herramientas 'alienígenas' :-)
fuente
También puedes usar duti :
fuente
Acabo de probar el viejo More Internet, bajo El Capitán.
Es funky y la única forma en que funciona es mediante el uso de las teclas de flecha hacia arriba y hacia abajo para seleccionar el protocolo, y arrastrar / soltar el icono de la aplicación en la ventana para realizar un cambio.
Cambié el valor predeterminado de Safari a Chrome, y el cambio se atascó, por lo que aún funciona.
fuente
Otra forma de enumerar la configuración actual del controlador de URL de LaunchServices con Xcode en Apple OS X 10.10+ (Yosemite):
fuente