Mostrar diálogo desde la línea de comando (como lo hace xmessage)

Fondo

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.

Lo que encontré hasta ahora

xmensaje

En Linux probablemente usaría xmessageo 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.

Cuadro de diálogo del buscador

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 , 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.

notificador

Hay una respuesta en Super User que sugiere una herramienta llamada terminal-notifier . Desafortunadamente, parece que solo funciona para OS X , por lo que no ayudará en mi caso.

Pregunta

Entonces, ¿hay alguna herramienta, ya sea incluida en OS X o disponible gratuitamente, que permita mostrar un pequeño diálogo al usuario sin demasiada sobrecarga?

Respuestas (2)

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'
El primer enfoque tiene el inconveniente de que abrirá todas las ventanas de la aplicación dada, lo que me parece un poco molesto. Pero el segundo enfoque es el mejor que he visto hasta ahora. Las aplicaciones que no responden deberían ser lo suficientemente raras como para no preocuparme por ellas.

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

Parece que necesito aprender osascript
Pregunta: Agregar la cláusula 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?