Swift でスクリプトを書いてみた。
killdock.swift
#!/usr/bin/env swift
import Cocoa
// Dock に表示されるアプリケーションの一覧を取得
func getRegularApplications() -> [NSRunningApplication] {
let runningApps = NSWorkspace.sharedWorkspace().runningApplications as! [NSRunningApplication]
let regularApps = runningApps.filter { (app: NSRunningApplication) in
app.activationPolicy == NSApplicationActivationPolicy.Regular
}
return regularApps
}
// ホワイトリストに含まれないアプリケーションをまとめて終了
func killApplications(apps: [NSRunningApplication]) {
let allowed = getAllowedBundleIdentifiers()
for app in apps {
if contains(allowed, app.bundleIdentifier!) {
println("Skipped \(app.localizedName!) (\(app.bundleIdentifier!))")
continue
}
println("Killed \(app.localizedName!) (\(app.bundleIdentifier!))")
app.terminate()
}
}
// 終了させないアプリケーションのホワイトリスト
// Finder 以外の項目はお好みで
func getAllowedBundleIdentifiers() -> [String] {
return ["com.apple.finder",
"com.omnigroup.OmniFocus2.MacAppStore",
"com.apple.Safari"]
}
killApplications(getRegularApplications())