J'essaie actuellement de modifier le comportement de gestion d'URL par défaut dans OS X. Je voudrais, lorsque vous cliquez sur un lien en dehors d'un navigateur Web, copier cette URL dans la table de montage au lieu de l'ouvrir dans le navigateur Web par défaut - par exemple , cliquer sur un lien dans une conversation Skype devrait copier cette URL dans le presse-papiers OS X au lieu de l'ouvrir dans Firefox (qui est actuellement mon navigateur Web par défaut).
J'ai pensé à des solutions, mais je ne suis actuellement pas en mesure d'en mettre en œuvre. Si je peux créer une application qui place des URL dans la table de montage qui lui sont envoyées et peut définir cette application comme navigateur Web par défaut, je serais en mesure d'atteindre mon objectif.
J'ai créé une application avec Automator qui exécute la commande shell pbcopy
et j'ai défini cette application comme mon navigateur Web par défaut, mais je n'ai pas obtenu le résultat attendu. J'ai fait quelques tests et je peux confirmer que l'application s'exécute en cliquant sur un lien, cependant, je ne peux pas faire passer l'URL au script d'application / shell. J'ai essayé à la fois stdin ou un argument passé, mais sans succès.
Existe-t-il un moyen pour une application créée avec Automator de récupérer une URL cliquée et de l'envoyer à pbcopy
, lorsque cette application est définie comme gestionnaire (par défaut) pour les URL?
Sinon, existe-t-il un meilleur moyen de créer un faux navigateur Web qui prend l'entrée et la place dans le presse-papiers qu'Automator? Ou existe-t-il un autre moyen d'atteindre mon objectif sans application / script personnalisé?
Réponses:
La façon dont l'ouverture d'URL dans Mac OS X est en fait plus compliquée que vous ne le pensez. Lorsque vous cliquez sur une URL, Mac OS X ne transmet pas simplement au navigateur l'URL à ouvrir; au lieu de cela, il lui envoie un événement Apple, avec l'ID
kAEGetURL
, contenant l'URL.Je n'ai jamais vraiment utilisé Automator (c'est juste trop lent et limité pour mon utilisation typique), donc je ne suis pas sûr de cela, mais je doute qu'il ait la capacité de gérer les événements Apple. Par conséquent, vous ne pourrez pas utiliser Automator pour obtenir ce que vous voulez.
Vous devrez donc recourir à une application Objective-C normale dans Xcode.
Les deux choses de base que vous devez faire sont:
enregistrez votre application pour recevoir l'événement kAEGetURL et définissez le
CFBundleURLTypes
dans Info.plist de votre application pour inclurehttp
ethttps
.Implémentez une méthode gérant l'événement kAEGetURL et faites-lui copier l'URL dans le presse-papiers.
Ces deux choses sont relativement simples à faire dans Objective-C; pour illustrer, j'ai créé un exemple d'application qui fait cela. Vous pouvez le consulter sur https://github.com/houbysoft/short/tree/master/Copy%20URL%20to%20Clipboard . Le fichier le plus important est https://github.com/houbysoft/short/blob/master/Copy%20URL%20to%20Clipboard/Copy%20URL%20to%20Clipboard/AppDelegate.m , où vous pouvez voir comment vous inscrire au (cela se fait dans la méthode applicationWillFinishLaunching:) et comment le copier dans le presse-papiers (cela se fait dans la méthode getUrl: withRselfEvent:).
Si vous vous sentez paresseux et que vous voulez juste voir si cela fonctionne, saisissez ce fichier , extrayez-en l'application, définissez-le comme navigateur Web par défaut (ouvrez les préférences de Safari et recherchez cette application dans le champ Navigateur Web par défaut). Cliquez ensuite sur votre lien dans Skype, et il devrait être copié directement dans votre presse-papiers.
la source