He creado un script en Node.js que escucha los dispositivos USB que se conectan. Cuando se conecta un determinado dispositivo USB, se inicia una aplicación de macOS. Todo funciona según lo previsto manteniendo la tapa abierta.
Ahora quiero incorporar que el script debe verificar si la tapa está cerrada o no antes de iniciar la aplicación. Puedo usar este comando (ioreg -r -k AppleClamshellState -d 4 | grep AppleClamshellState | head -1
) para eso. Debería iniciar la aplicación solo si la tapa está cerrada.
Sin explicar los detalles al respecto, solo puedo decir que la lógica está funcionando. Obtengo un booleano cuando se conecta el dispositivo USB que indica si la tapa está abierta o cerrada, que puedo usar para ejecutar el comando que inicia la aplicación si la tapa está cerrada.
Pero luego probé iniciar el script, cerrar la tapa y conectar el dispositivo. Y no pasa nada. Puedo determinarlo con el dispositivo USB ya que hay una pantalla en él que va a una vista particular cuando la aplicación está abierta. Cuando abro la tapa nuevamente, es entonces cuando se inicia la aplicación y las cosas funcionan según lo previsto. Así que parece que el proceso de iniciar la aplicación mientras la tapa está cerrada se detiene hasta que abra la tapa nuevamente.
Estoy ejecutando macOS Monterey 12.6.3 en un MacBook Pro (15", mediados de 2015). Tengo el cargador conectado y me aseguré de tener marcada la opción 'Evitar que tu Mac entre en modo de suspensión automáticamente cuando la pantalla está apagada' en 'Preferencias del Sistema / Batería'. No estoy usando un monitor externo.
Lo que me gustaría es que la aplicación se inicie correctamente incluso con la tapa cerrada. Sería aún mejor si esto se pudiera hacer sin tener el cargador conectado. ¿Alguna idea de cómo lograr esto?