Astuce : ouvrir une page de Safari dans un autre navigateur [MàJ]

Nicolas Furno |
Avec Safari 5.0.4, Apple a modifié le comportement du sous-menu "Ouvrir la page avec" situé dans le menu "Développement". Jusque-là, Apple affichait seulement le nom du navigateur, mais la dernière version de Safari ajoute entre parenthèses le numéro de version. Aucune importance, sauf si vous utilisiez ce menu pour ouvrir la page actuelle dans un autre navigateur. En associant un raccourci clavier au nom d'un navigateur, on pouvait ainsi se passer du plug-in Flash dans Safari, mais ouvrir rapidement une page avec du contenu multimédia dans Google Chrome qui intègre Flash, par exemple (lire : Astuce : comment vivre sans Flash sur Mac OS ?).



Avec Safari 5.0.4, il faudrait modifier le raccourci à chaque mise à jour de Google Chrome. Autant dire que la solution n'était plus praticable, d'autant que les mises à jour de Chrome se font de manière silencieuse. Une autre solution consiste à passer par un script écrit en AppleScript. Ce script est très simple, il se contente d'envoyer l'adresse du site en cours dans un nouvel onglet de Google Chrome.

Plusieurs méthodes sont possibles pour utiliser ce script. On pourrait simplement le sauvegarder dans le dossier des scripts Safari, mais le plus simple et efficace est de créer un service à l'aide d'Automator. Ouvrez le logiciel (à l'aide de Spotlight) et créez un service à l'ouverture.



Ce service va être simple, il va simplement consister à exécuter du code AppleScript. Ajoutez tout d'abord l'action nommée "Exécuter un script AppleScript". Vous pouvez la retrouver facilement en faisant une recherche dans le champ de recherche (1). Glissez ensuite le script dans la partie centrale du logiciel (2) et copiez/collez le script dans la partie dédiée au code (3).



voici le code AppleScript à insérer dans le service créé par Automator :


property theURL : ""

on run {input, parameters}

tell application "Safari"
set theURL to URL of current tab of window 1
end tell
tell application "Google Chrome"
if not (exists window 1) then make new window
tell window 1
if URL of active tab is "chrome://newtab/" then
set myTab to active tab
else
set myTab to make new tab at end of tabs
end if
end tell
set URL of myTab to theURL
activate

end tell

return input
end run


La ligne "activate" met au premier plan Chrome après l'opération. Si vous préférez envoyer l'URL en arrière-plan, supprimez simplement cette ligne. Quand vous êtes satisfait du code, appuyez sur le petit marteau pour vérifier que vous n'obtenez pas d'erreur.

Il ne reste plus qu'à configurer le comportement général du service. Configurez le service pour n'attendre "aucune entrée" en réception et "n'importe quelle application" en ordre (4). De cette manière, le service sera accessible depuis n'importe quelle application, mais vous pouvez aussi restreindre le champ d'action du service à Safari en choisissant "Safari" dans la liste déroulante des applications.

Enregistrez simplement ce service et il sera immédiatement accessible dans le menu "Services" de Safari ou toute autre application. Le script ouvrira automatiquement Chrome s'il n'est pas déjà ouvert, il ouvrira un nouvel onglet sauf si l'onglet en cours dans Chrome est un onglet vierge et il ouvrira dans cet onglet l'adresse de la page en cours dans Safari. Le service fonctionne si Safari est aussi fermé, mais dans ce cas un onglet vide s'ouvrira dans Chrome.



La dernière étape consiste à ajouter un raccourci clavier à ce service pour simplifier son utilisation. Cela se fait depuis les préférences systèmes, panneau "Clavier" puis onglet "Raccourcis clavier". Deux possibilités alors, soit ajouter le raccourci au service directement dans la dédiée aux Services, soit ajouter un raccourci d'applications pour toutes les applications en utilisant le nom du service. Dans les deux cas, vous pourrez désormais ouvrir la page en cours de Safari dans Chrome à n'importe quel moment et quelle que soit la version de Chrome…



[MàJ] : un lecteur nous a signalé une solution beaucoup plus simple que l'AppleScript décrit plus haut. Cette solution utilise le langage Shell, plus puissant, mais aussi plus complexe à maîtriser même si le résultat est extrêmement simple.

Pour la mettre en œuvre, vous devez toujours créer un service dans Automator en veillant à indiquer "pas d'entrée" dans "Réception du service" (1)



Ajoutez à ce service deux actions Automator (utilisez la recherche du logiciel pour les trouver) : "Obtenir la page Web actuelle de Safari" (2) puis "Exécuter un script Shell" (3). La première action ne nécessite aucune intervention de votre part.

Pour l'action dédiée au script Shell, commencez par modifier le champ "Données en entrées" pour le positionner sur "comme arguments" (4). Dans la partie centrale, enlevez tout le code qui sera ajouté automatiquement et remplacez-le par celui-ci : « open $1 -a /Applications/Google\ Chrome.app ». Ce code va ouvrir dans l'application Chrome (c'est le sens du -a) l'URL envoyée par l'action précédente d'Automator (c'est le sens du $1).

Ce service fonctionne aussi bien que le script Apple Script précédent. Si Chrome n'est pas ouvert, il sera automatiquement lancé. Seule différence, un nouvel onglet sera toujours créé, même si l'onglet actuel est vide. Si l'astuce vous intéresse, choisissez l'une ou l'autre solution, sachant que cette dernière est plus élégante et sans doute plus fiable.

merci @JegnuX
Accédez aux commentaires de l'article