Puedes detener el inicio del elemento con launchctl disable gui/$UID/bundle-id
.
Si no conoce el ID del paquete, puede encontrarlo escribiendo launchctl list
. Eso mostrará una lista de los procesos todos que se ejecutan bajo su usuario, con sus PID en la primera columna. Entonces, si viste esto:
$ launchctl list
- 0 com.apple.SafariHistoryServiceAgent
277 0 com.apple.Finder
- 0 com.apple.quicklook
- 0 com.apple.parentalcontrols.check
[…]
189 0 com.example.ExampleDaemon
- 0 com.apple.java.InstallOnDemand
... podría usar el Monitor de actividad para confirmar que el PID de la aplicación no deseada es 189, lo que hace que su ID de paquete com.example.ExampleDaemon
. Entonces:
launchctl disable gui/$UID/com.example.ExampleDaemon
Eso es todo. Hay es todavía un registro del elemento de inicio de sesión en el disco, simplemente desactivado. Si desea purgarlo, o simplemente desea obtener más información, siga leyendo.
Contraintuitivamente (¿pero divertido?), la lista se guarda aquí:
/var/db/com.apple.xpc.launchd/disabled.$UID.plist
Ese archivo se verá así:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.example.ExampleDaemon</key>
<false/>
</dict>
</plist>
Sí, false
significa que una aplicación con esa id. de paquete debería debe iniciarse al inicio. Después de ejecutar launchctl disable
, false
cambiará a true
. (Por lo que sé, Launchd no escribe estos archivos de inmediato, por lo que es posible que no vea esto hasta que reinicie). Puede ver los elementos deshabilitados con este comando:
launchctl print-disabled gui/$UID
También hay información adicional sobre cada elemento de inicio de sesión almacenado aquí, pero eliminarlo no detendrá el inicio del elemento:
/var/db/com.apple.xpc.launchd/loginitems.$UID.plist
Cualquier cambio que realice mientras el sistema se está ejecutando se sobrescribirá cuando apague / reinicie. Así que, por lo que puedo decir, la única forma de eliminar por completo un elemento de disabled.$UID.plist
es reiniciar en modo de usuario único y realizar las modificaciones allí. Incluso sin haber ejecutado launchctl disable
, la eliminación de un par key
/ false
de este archivo impide que la aplicación se inicie al iniciar sesión. No voy a incluir instrucciones para editar estos archivos en modo de usuario único en esta respuesta.