Me gustaría poder mostrar una ventana de notificación en OS X desde un script. La secuencia de comandos se ejecutará en segundo plano, por lo que la notificación no debe ir a la terminal, sino mostrarse en una ventana de diálogo.
En Linux probablemente usaría xmessage
o una de sus variantes para esto. Pero en OS X, iniciar el voluminoso servidor X solo para esta tarea parece exagerado y demasiado lento para mi gusto.
Encontré una pregunta similar en este hilo del foro , donde la respuesta "aceptada" sugería este comando:
osascript -e 'tell app "Finder" to display dialog "Hey!"'
Pero en mi OS X 10.7 , el cuadro de diálogo resultante no se muestra inmediatamente. En cambio, el ícono del Finder comienza a rebotar y el cuadro de diálogo se vuelve visible solo después de hacer clic en el ícono. Demasiados clics del mouse, demasiado perjudiciales.
Hay una respuesta en Super User que sugiere una herramienta llamada terminal-notifier . Desafortunadamente, parece que solo funciona para OS X 10.8 , por lo que no ayudará en mi caso.
Entonces, ¿hay alguna herramienta, ya sea incluida en OS X 10.7 o disponible gratuitamente, que permita mostrar un pequeño diálogo al usuario sin demasiada sobrecarga?
Una opción es decirle a un proceso en segundo plano como SystemUIServer que muestre el cuadro de diálogo:
osascript -e 'tell application "SystemUIServer"
display dialog "message"
end
activate application (path to frontmost application as text)'
También puede indicarle a la aplicación que se encuentra en primer plano que muestre un cuadro de diálogo, pero no se muestra inmediatamente si la aplicación no responde. Si MPlayer OS X está al frente, los diálogos de texto no aceptan ninguna entrada de teclado.
osascript -e 'tell application (path to frontmost application as text)
display dialog "message"
end'
Intentar
tell application "System Events" to display dialog "Plug the Digispark into the USB port." buttons {"OK"} with icon caution
Probado en OS X 10.8.2
buttons {"OK"}
hace que el cuadro de diálogo no se enfoque cuando aparece. Omitirlo le da un botón Cancelar, que no queremos, pero al menos el cuadro de diálogo se enfoca. ¿Hay alguna manera de enfocarse, incluso cuando se usa esa cláusula?
MvG