20.02.2011 | 01:21
S malim zakašnjenjem došlo mi je do mozga da quitanje preko AppleScripta radi neovisno o tome da li je aplikacija skriptabilna ili ne.
Zahvaljujući tome, skripta je banalna i svodi se na ovih 5 redova:
set whitelist to {"Finder", "Safari"}
tell application "System Events" to set allApps to (name of every process whose visible is true and name is not (my name as text))
repeat with unwantedApp in allApps
if unwantedApp is not in whitelist then tell application unwantedApp to quit
end repeat
Prvi red je ključan jer se u njemu navode aplikacije koje NE želimo quitati (definira se whitelist). U ovom slučaju to su Finder i Safari. Imena aplikacija se navode u zagradi i odgovaraju imenu koje se pojavljuje u Docku (ili dok TABamo).
Drugi red, koristeći System Events, kreira popis svih "vidljivih" aplikacija ("nevidljive" su one koje se NE pojavljuju u Docku, a vidljive su, kao procesi, u Activity Monitoru - njih NE diramo), uklanjajući pritom s popisa ono što će izvršiti skriptu (da skripta ne quita samu sebe prije nego obavi posao).
Potom slijedi petlja koja se ponavlja za sve aplikacije koje su se našle na popisu. U petlji se vrši provjera da li se pojedina aplikacija nalazi u white listi i ako se NE nalazi, quitamo je.