¿AppleScript encuentra el navegador predeterminado del usuario?

2

He estado investigando sobre este tema, pero parece que Apple ha cambiado su jerarquía de archivos. Desde la publicación de MacScripter " Obtener el navegador predeterminado del usuario " hace referencia a la línea:

 set pListpath to (path to preferences as Unicode text) & "com.apple.LaunchServices.plist"

pero al ejecutar el controlador en Sierra, devolví un error que indica que el archivo está vacío. Más investigación encontré " ¿Cómo usar un paquete de aplicaciones AppleScript como navegador predeterminado en os x? "y" Utilice el navegador predeterminado en el Apple Script personalizado ? "que sugieren:

on open location theURL
 ...
end open location

pero quiero conservar el navegador en una variable para hacer referencia más adelante en mi script. En Sierra hay un archivo o una forma de hacer referencia a lo que el navegador predeterminado?

    
pregunta ʀ2ᴅ2 25.01.2018 - 16:16

2 respuestas

1

Correcto, el archivo para ha cambiado a ~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist .

Estoy ejecutando macOS 10.13 (High Sierra), pero el script debería funcionar con Sierra también. Por favor, informe de nuevo.

# return default browser in macOS
# https://apple.stackexchange.com/questions/313454/applescript-find-the-users-set-default-browser
# tested with 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 "Probably Google Chrome"
end if

La salida se verá así:

  

com.apple.safari

     

org.mozilla.firefox

    
respondido por el oa- 25.01.2018 - 16:56
2

Para OS X 10.10 y posteriores, utilice el siguiente ejemplo AppleScript código :

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
    --  # The default Browser is Safari.
    set defaultBrowser to "Safari"
    --  # Your code goes here.
else if defaultBrowser contains "chrome" then
    --  # The default Browser is Google Chrome.
    set defaultBrowser to "Google Chrome"
    --  # Your code goes here.
else if defaultBrowser contains "firefox" then
    --  # The default Browser is Firefox.
    set defaultBrowser to "Firefox"
    --  # Your code goes here.
else
    set defaultBrowser to "Other"
    --  # Your code goes here.
end if

Nota: El inicio de la declaración if defaultBrowser no prueba nada tanto "" como "safari" , porque, si Safari es el único Browser instalado o si se instala otro Browser y nunca se ha establecido un Browser predeterminado, entonces, de forma predeterminada, no se devolverá nada. El comando do shell script "defaults ..." , y esto significa que Safari es el navegador predeterminado.

En el ejemplo AppleScript código anterior, el valor de la variable defaultBrowser inicialmente se establece en uno de los siguientes valores :

  • Nada: ""
  • com.apple.safari
  • com.google.chrome
  • org.mozilla.firefox
  • Algunos otros: output

Luego, dentro de la instrucción if , defaultBrowser se establece en el nombre propio del Navegador . Aunque ciertamente puedes modificarlo según lo necesites / desees.

También tenga en cuenta que el comando do shell script usado aquí es más eficiente que la otra respuesta, que usa innecesariamente el comando plutil para convertir primero el binary plist a un archivo xml plist y luego vuelva a un binary plist . También usa innecesariamente tanto grep como awk cuando ambos no son necesarios, ya que defaults y awk (o solo defaults y grep ) pueden hacerlo sin todo el rigmarole extra.

Para pre OS X 10.10, reemplaza:

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

Con:

com.apple.LaunchServices

En el comando do shell script "defaults ..." .

    
respondido por el user3439894 25.01.2018 - 20:59

Lea otras preguntas en las etiquetas