AppleScript trova il browser predefinito dell'insieme dell'utente?

2

Ho svolto alcune ricerche su questo argomento ma sembra che Apple abbia cambiato la gerarchia dei file. Dal post MacScripter " Ottieni browser predefinito utente " fa riferimento alla riga:

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

ma quando si esegue il gestore in Sierra mi viene restituito un errore che il file è vuoto. Ulteriori ricerche ho trovato " Come utilizzare un pacchetto di app AppleScript come browser predefinito in os x? "e" Utilizzare il browser predefinito in Apple Script personalizzato ? "che suggeriscono:

on open location theURL
 ...
end open location

ma sto cercando di conservare il browser in una variabile per fare riferimento più avanti nel mio script. In Sierra c'è un file o un modo per fare riferimento a quale browser predefinito?

    
posta ʀ2ᴅ2 25.01.2018 - 16:16
fonte

2 risposte

1

corretto, il file per è cambiato in ~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist .

Sono in esecuzione macOS 10.13 (High Sierra), ma lo script dovrebbe funzionare anche con Sierra. Si prega di segnalare.

# 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

L'output sarà simile a questo:

com.apple.safari

org.mozilla.firefox

    
risposta data 25.01.2018 - 16:56
fonte
2

Per OS X 10.10 e versioni successive, utilizza il seguente esempio codice AppleScript :

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: l'inizio dell'istruzione if defaultBrowser non viene eseguita per niente "" e "safari" , perché, se Safari è l'unico Browser installato o se è installato un altro Browser e non ha mai impostato un Browser predefinito, quindi per impostazione predefinita non verrà restituito nulla il comando do shell script "defaults ..." , e questo significa che Safari è il Browser predefinito

.

Nel esempio AppleScript codice sopra, il valore della defaultBrowser variabile inizialmente viene impostato su uno dei seguenti valori :

  • Nulla: ""
  • com.apple.safari
  • com.google.chrome
  • org.mozilla.firefox
  • Alcuni altri: output

Quindi all'interno dell'istruzione if , defaultBrowser viene impostato sul nome corretto del Browser . Sebbene tu possa certamente modificare come necessario / desiderato.

Nota anche che il do shell script comando qui usato è più efficiente dell'altra risposta, che usa inutilmente il plutil comando per convertire prima file binario plist in un file xml plist e successivamente in un file plist binario . Inoltre usa inutilmente grep e awk quando entrambi non sono necessari poiché defaults e awk (o solo defaults e grep ) possono farlo senza tutti i rigroci extra.

Per pre OS X 10.10, sostituisci:

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

Con:

com.apple.LaunchServices

Nel comando do shell script "defaults ..." .

    
risposta data 25.01.2018 - 20:59
fonte

Leggi altre domande sui tag