Safari "single window mode": l’applescript

Leggendo questo articolo di zeronave, circa la possibilità di costringere Safari ad aprire in un nuovo tab i link che normalmente si aprirebbero in una nuova finestra, ovvero a lavorare in modalità “single window”, mi è venuto in mente di creare un semplicissimo applescript per rendere semplice l’attivazione e la disattivazione di questa modalità.

Trovo questa modalità molto comoda quando lavoro con GMail, che ha il brutto vizio di aprire i link in una nuova finestra anche se tengo premuto command quando clicco! La modalità a finestra singola è presente come opzione in molti browser, in Safari questa opzione è “nascosta” e va attivata agendo su una stringa del file di preferenze. Questo trucco funziona solo sulla versione Mac di Safari, per Windows non credo.

Lo script l’ho scritto in inglese ma è tutto molto comprensibile, anche perché ho messo un po’ di commenti: in ogni caso non fa altro che eseguire due comandi da terminale.
Tra le altre cose questo script è comodo perché procede anche al riavvio di Safari dopo aver abilitato o disabilitato la modalità in finestra singola.
Ecco lo script:

Jeby
this script enable or disable Safari “single window mode” (SWM)

setchoiceto(display dialog(“Do yoy want to enable/disable safari single window mode?”)buttons{“Cancel”,“Enable”,“Disable”}default button1with icon1with title“SSWM”)

ifthebutton returnedofchoiceis notequal to“Cancel”then
    ifthebutton returnedofchoiceisequal to“Enable”then
         Terminal command to enable SWM
setcmdto(“defaults write com.apple.Safari TargetedClicksCreateTabs -bool true”)
    else
         Terminal command to disable SWM    
setcmdto(“defaults write com.apple.Safari TargetedClicksCreateTabs -bool false”)
    endif

try
         Execute command
setxto(do shell scriptcmd)
Positive feedback
setxto(result&“Task completed!”)
    onerrore
         Return Error
setxtoe
    endtry

Display feedback
setchoice2to(display dialog((xasstring)&return&“You need to restart Safari. Restart it now?”)buttons{“Yes”,“No”}default button1with icon1with title“SSWM”)

Quit and restart Safari
ifthebutton returnedofchoice2isequal to“Yes”then
        ifapplication“Safari”isrunningthen
            tellapplication“Safari”
                quit
            endtell
delay1
tellapplication“Safari”
                activate
            endtell
        endif
    endif
endif

che dite, vi piace? Se sì copiatelo in Script Editor (o nell’azione Esegui Applescript di Automator) e salvatelo dove volete. Potete anche inserirlo tra gli scrip applicazione raggiungibili dall’icona Applescript nella barra dei menù (per attivarla usata Applescript Utility)

’nuff said