La soluzione è creare un LaunchAgent ( man launchctl
per maggiori informazioni) che esegue lo script sopra tramite la riga di comando. In sostanza, si desidera archiviare lo script sopra in un file, pronunciare "killfinder.scpt" e quindi eseguire il comando osascript /path/to/killfinder.scpt
.
Vogliamo farlo automaticamente al login, quindi usiamo un LaunchAgent. Dato che voglio usarlo perché uso Pathfinder e mia moglie no, lo inserirò in ~/Library/LaunchAgents
, ma se vuoi che sia esteso al sistema, mettilo in /Library/LaunchAgents
.
Avrai tre file:
- Uno script UNIX
-
Un AppleScript (facoltativo)
- Un plist XML LaunchAgent
File di script
- Metti questo in un percorso appropriato. Ad esempio, l'ho memorizzato in
~/dev/scripts/killfinder.bash
.
-
Crea il file e aggiungi questo contenuto:
#!/bin/bash
osascript /path/to/AppleScriptFile.scpt
-
Assicurati che le autorizzazioni siano corrette (ovvero chmod ug+x killfinder.bash
)
File AppleScript
Puoi chiamare osascript direttamente con il codice AppleScript come argomento. Lo lascio come esercizio al lettore; in tal caso, puoi creare questo file. Ma se vuoi farlo in questo modo:
1. Metti questo in un percorso appropriato.
2. Crea il file e aggiungi questo contenuto:
tell application "System Events"
tell UI element "Finder" of list 1 of process "Dock"
perform action "AXShowMenu"
click menu item "Remove from Dock" of menu 1
end tell
end tell
- Assicurati che le autorizzazioni siano corrette (ovvero
chmod ugo+r Finder\ Remove.scpt
)
LaunchAgent XML plist
-
Metti questo in ~/Library/LaunchAgents
o /Library/LaunchAgents
a seconda se vuoi solo questo comportamento per il tuo account personale o per tutto il sistema.
-
Crea un file chiamato com.<whateveryouwant>.KillFinder.plist
con il seguente contenuto:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.<whateveryouwant>.KillFinder</string>
<key>Program</key>
<string>/path/to/unixscript</string>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
È importante assicurarsi che il valore "stringa" dopo che la chiave Label
sia corretta, nonché il percorso dello script unix.
Ora tutto ciò che devi fare è uscire e accedere e dovrebbe funzionare!