3 votes

AppleScript trouver le navigateur par défaut défini par l'utilisateur ?

J'ai fait des recherches sur ce sujet mais il semble qu'Apple ait changé leur hiérarchie de fichiers. Du post MacScripter "Obtenir le navigateur par défaut de l'utilisateur" il fait référence à la ligne :

 set pListpath to (chemin des préférences en tant que texte Unicode) & "com.apple.LaunchServices.plist"

mais lorsque j'exécute la fonction dans Sierra, je reçois une erreur indiquant que le fichier est vide. D'autres recherches m'ont mené à "Comment utiliser un bundle d'application AppleScript comme navigateur par défaut sous OS X ?" et "Utiliser le navigateur par défaut dans un script Apple personnalisé ?" qui suggèrent :

on open location theURL
 ...
end open location

mais je souhaite conserver le navigateur dans une variable pour le référencer ultérieurement dans mon script. Dans Sierra, existe-t-il un fichier ou un moyen de savoir quel est le navigateur par défaut ?

5voto

user3439894 Points 52496

Pour OS X 10.10 et versions ultérieures, utilisez le exemple AppleScript suivant :

set defaultBrowser to do shell script "defaults read \\
    ~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure \\
    | awk -F'\"' '/http;/{print window[(NR)-1]}{window[NR]=$2}'"

if defaultBrowser is "" or defaultBrowser contains "safari" then
    --  # Le navigateur par défaut est Safari.
    set defaultBrowser to "Safari"
    --  # Votre code va ici.
else if defaultBrowser contains "chrome" then
    --  # Le navigateur par défaut est Google Chrome.
    set defaultBrowser to "Google Chrome"
    --  # Votre code va ici.
else if defaultBrowser contains "firefox" then
    --  # Le navigateur par défaut est Firefox.
    set defaultBrowser to "Firefox"
    --  # Votre code va ici.
else
    set defaultBrowser to "Autre"
    --  # Votre code va ici.
end if

Note : Le début de la déclaration if defaultBrowser teste pour "" ainsi que "safari", car, si Safari est le seul navigateur installé ou si un autre navigateur est installé et n'a jamais eu de navigateur par défaut défini, alors par défaut rien ne sera retourné par la commande do shell script "defaults ...", et cela signifie que Safari est le navigateur par défaut.

Dans l'exemple AppleScript ci-dessus, la valeur de la variable defaultBrowser est initialement définie sur l'une des valeurs suivantes :

  • Rien : ""
  • com.apple.safari
  • com.google.chrome
  • org.mozilla.firefox
  • Autre : output

Ensuite, dans la déclaration if, defaultBrowser est défini sur le nom approprié du navigateur. Vous pouvez bien sûr le modifier comme nécessaire/souhaité.

Notez également que la commande do shell script utilisée ici est plus efficace que l'autre réponse, qui utilise inutilement la commande plutil pour convertir d'abord le fichier binary plist en un fichier xml plist et puis à nouveau en un fichier binary plist par la suite. Elle utilise également inutilement à la fois grep et awk alors que les deux ne sont pas nécessaires, puisque defaults et awk (ou simplement defaults et grep) peuvent le faire sans tout le bazar supplémentaire.


Pour les versions pré OS X 10.10, remplacez :

~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure

Par :

com.apple.LaunchServices

Dans la commande do shell script "defaults ...".

2voto

oa- Points 7403

Correct, le fichier pour a été modifié pour ~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist.

Je suis sur macOS 10.13 (High Sierra), mais le script devrait fonctionner avec Sierra également. Veuillez faire un retour.

# retourne le navigateur par défaut sur macOS
# https://apple.stackexchange.com/questions/313454/applescript-find-the-users-set-default-browser
# testé avec macOS 10.13.3

set default_browser to do shell script "x=~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist; \\
plutil -convert xml1 $x; \\
grep 'https' -b3 $x | awk 'NR==2 {split($2, arr, \"[><]\"); print arr[3]}'; \\
plutil -convert binary1 $x"

if default_browser is "org.mozilla.firefox" then
    set browser_name to "Firefox"
else if default_browser is "com.apple.safari" then
    set browser_name to "Safari"
else
    set browser_name to "Probablement Google Chrome"
end if

La sortie sera comme ceci:

com.apple.safari

org.mozilla.firefox

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X