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


64

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 donné avec le Info.plistfichier:

<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 s'il existe plusieurs applications capables d'ouvrir le même gestionnaire d'URL, par exemple, mailto:comment spécifier celle que vous souhaitez que le système utilise?

Il y avait quelques références à des utilitaires comme le More Internet preference panequi 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 y a un plistfichier quelque part que je peux éditer - ou peut-être y a-t-il un utilitaire plus récent, meilleur qui fonctionne bien avec Mountain Lion?

Réponses:


55

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 un LSHandlerURLSchemepeuvent être modifiés en conséquence avec le LSHandlerRole.

Plutôt que de modifier manuellement ce fichier, vous pouvez également utiliser RCDefaultApp , ce qui vous donne une belle fenêtre de préférences. 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.

SwiftDefaultApps est une alternative .

Par exemple, voici SVN et SSH:

… Et dans RCDefaultApp:


35
4 minutes 19 secondes? Sérieusement?
Daniel Beck

2
Merci pour la réponse rapide et détaillée. Cela semble bon! Question cependant - je pense que j'ai déjà essayé RCDefaultApp et que je rencontrais un problème avec celui-ci. Cela a-t-il fonctionné de manière transparente pour vous?
cwd

@cwd Je dois honnêtement dire que je ne l'utilise pas souvent. Plus pour les captures d'écran de Super User qu'autre chose :) Chaque fois que je dois modifier les associations de fichiers, je le fais via la boîte de dialogue Obtenir des informations… dans le Finder. Je n'ai jamais eu besoin de changer de protocole ni de gestionnaires MIME. Mais cela semblait assez stable pour moi.
Slhck

Cela semble être d'ouvrir une véritable "application". Que faire si je veux effectuer un traitement personnalisé, en utilisant une commande de terminal, etc.?
nute

1
@Nute Juste du haut de ma tête, pas sûr. Peut-être une application créée avec Automator qui encapsule un script shell?
slhck

14

Mise à jour juil 2017: RCDefaultApp et lstoolne fonctionne plus sous macOS 10.12 ou version ultérieure. Nous devrons trouver une nouvelle solution.

Edit Mar 2018
J'ai trouvé SwiftDefaultApps mais je ne peux pas tester car je ne suis pas encore sur High Sierra.


Pour approfondir la réponse précédente, si vous souhaitez le faire sur la ligne de commande, vous pouvez utiliser la lstoolcommande, qui est le cœur de RCDefaultApp, située 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

2
J'ai trouvé un remplaçant possible pour RCDefaultApp sur github.com/Lord-Kamina/SwiftDefaultApps bien que vous deviez le construire vous-même avec Xcode.
luckman212

J'utilise la version 2.1 de RCDefaultApp et cela fonctionne très bien pour moi le 10.12. Au moins est toujours la liste de tous les éléments. Ou seulement une opération spécifique ne fonctionne plus? S'il vous plaît élaborer
SuperTempel

@SuperTempel L' lstooloutil de ligne de commande affiche cette erreur lorsque vous essayez de l'exécuter: objc[1049]: Objective-C garbage collection is no longer supported.( lstoolest le programme interne utilisé par le volet de préférences RCDefaultApp. Bien que le volet de préférences semble fonctionner, je ne pense pas qu'il puisse rien faire car il lstoolest cassé. )
Quinn Comendant

SwiftDefaultApps apparemment ne fonctionne pas sur les processeurs Intel. Pas de solution jusqu'au moins avril 2018.
Quinn Comendant

3
Je suis le développeur de SwiftDefaultApps, SWDA était codé depuis le début avec macOS Sierra et plus haut dans l’esprit (en fait, j’ai commencé à y travailler après une longue frustration en lisant cette question et d’autres similaires). Cela ne fonctionnait pas dans 10.13 en grande partie à cause d'un bogue dans Swift ou macOS lui-même, mais il semble avoir été corrigé avec la mise à jour vers 10.13.4 / Swift 4.1.
Gregorio Litenstein

11

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

Merci d'utiliser les outils intégrés qui ne cassent pas ou vous demandent de télécharger quelque chose.
xdhmoore

Cela ne répertorie pas toutes les valeurs par défaut pour chaque protocole, mais quelques-unes seulement.
Vadim Peretokin le

5

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


Très bonne idée, mais j'ai bien peur de ne pas pouvoir utiliser l'exemple de script fourni. Plus sur votre blog, en attente de modération: getitdoneapps.wordpress.com/lincastor-browser/support/…
Flash Sheridan

Cela semblait être une bizarrerie déroutante dans l'exemple de fichier, diagnostiqué en exécutant le script à partir de la ligne de commande. (“/ Bin / sh: interprète incorrect: opération non autorisée”) L'enregistrement d'une copie dans BBEdit, ainsi que la modification et le rechargement des sauts de ligne vers / à partir de Windows ont permis de résoudre le problème.
Flash Sheridan

5

Ouvrir le fichier avec XCode fonctionne assez facilement.

L'utilisation de la commande plutilde construction décrite dans la réponse à l' adresse https://discussions.apple.com/thread/5815759 pour convertir le format xml1 ou binaire1 est similaire.

plutil -convert xml1 /file-i-wish

nano /file-i-wish & save file 

plutil -convert binary1 /file-i-wish

Pas besoin d'outils 'extraterrestres' :-)


4

Vous pouvez également utiliser duti :

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

0

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 et bas pour sélectionner le protocole, puis à glisser / déposer l'icône de l'application 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.


Qu'est-ce que c'est? Votre réponse n'est pas claire.
lacostenycoder

0

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.