web-dev-qa-db-fra.com

Comment configurer les gestionnaires d'URL personnalisés sous OS X?

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?

56
cwd

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:

50
slhck

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
14
Quinn Comendant

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
11
VirtualJMills

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).

5
On Flapp

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' :-)

5
Clemens Tolboom

Vous pouvez également utiliser duti :

echo $'com.Apple.mail mailto\ncom.googlecode.iterm2 x-man-page'>~/.duti;duti ~/.duti
4
Lri

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.

0
Calgary Guru

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
0
oikonomopo