J'ai beaucoup lu en ligne sur les gestionnaires d'URL/protocoles personnalisés tels que:
Je comprends que vous pouvez dire au système qu’un programme particulier est capable de gérer un schéma/protocole particulier avec le fichier 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/>
Mais si plusieurs applications sont capables d'ouvrir le même gestionnaire d'URL, tel que mailto:
, comment spécifiez-vous celle que vous voulez que le système utilise?
Il y avait quelques références à des utilitaires comme le More Internet preference pane
qui ne semble plus être disponible sur le site de l'auteur. Je l'ai trouvé en ligne sur Google mais cela semble un peu fragile - comme si cela avait été écrit pour un ancien OSX - peut-être Tiger.
Je n'ai pas été en mesure de trouver d'informations sur la définition du gestionnaire d'URL pour les protocoles et les protocoles personnalisés. Je suppose qu'il existe un fichier plist
que je peux modifier - ou peut-être existe-t-il un utilitaire plus récent et de meilleure qualité qui fonctionne bien avec Mountain Lion?
Le fichier que vous recherchez est ~/Library/Preferences/com.Apple.LaunchServices/com.Apple.launchservices.secure.plist
.
Il contient un tableau appelé LSHandlers
et les enfants du dictionnaire qui définissent une LSHandlerURLScheme
peuvent être modifiés en conséquence avec LSHandlerRole
.
Plutôt que de modifier manuellement ce fichier, vous pouvez également utiliser RCDefaultApp , ce qui vous donne un volet Préférences de Nice. On dit que cela ne fonctionne pas pour macOS 10.12 et supérieur, mais je peux confirmer que cela fonctionne sous macOS 10.14.
Une alternative est SwiftDefaultApps .
Par exemple, voici SVN et SSH:
… Et dans RCDefaultApp:
Mise à jour juillet 2017: RCDefaultApp et lstool
ne fonctionnent plus sous macOS 10.12 ou version ultérieure. Nous devrons trouver une nouvelle solution.
Éditer mars 2018
J'ai trouvé SwiftDefaultApps mais je ne peux pas tester car je ne suis pas encore sur High Sierra.
Pour poursuivre la réponse précédente, si vous souhaitez le faire sur la ligne de commande, vous pouvez utiliser la commande lstool
, qui est le cœur de RCDefaultApp, disponible sous RCDefaultApp.prefPane/Contents/Resources/lstool
.
Son utilisation est simple:
[~]$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
Liste des paramètres de gestionnaire d'URL LaunchServices actuels sur Apple OS X 10.10 (Yosemite):
defaults read com.Apple.LaunchServices/com.Apple.launchservices.secure
En fait, j'ai écrit une application simplifiant l'enregistrement de protocoles d'URL personnalisés, si cela vous intéresse. Il s’appelle LinCastor ( http://onflapp.wordpress.com/lincastor/ ). Les gestionnaires peuvent être définis en tant que script AppleScript ou Shell (qui peut être Perl, Python ou autre).
Ouvrir le fichier avec XCode fonctionne assez facilement.
Utiliser la commande de construction plutil
comme décrit dans la réponse sur https://discussions.Apple.com/thread/5815759 pour convertir entre le format xml1 ou binary1 fonctionne de manière similaire.
plutil -convert xml1 /file-i-wish
nano /file-i-wish & save file
plutil -convert binary1 /file-i-wish
Pas besoin d'outils 'extraterrestres' :-)
Vous pouvez également utiliser duti :
echo $'com.Apple.mail mailto\ncom.googlecode.iterm2 x-man-page'>~/.duti;duti ~/.duti
Je viens d'essayer l'ancien Internet Plus, sous El Capitan.
C'est funky et la seule façon dont cela fonctionne consiste à utiliser les touches fléchées haut/bas pour sélectionner le protocole et à glisser-déposer de l'icône APP dans la fenêtre pour effectuer un changement.
J'ai remplacé Safari par défaut par Chrome et la modification est restée bloquée, de sorte que cela fonctionne toujours.
Une autre façon de répertorier les paramètres actuels du gestionnaire d’URL LaunchServices avec Xcode sur Apple OS X 10.10+ (Yosemite):
open -a Xcode ~/Library/Preferences/com.Apple.LaunchServices/com.Apple.launchservices.secure.plist