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

4

Antecedentes

Me gustaría poder mostrar una ventana de notificación en OS X desde un script. El script se ejecutará en segundo plano, por lo que la notificación no debe ir al terminal, sino que debe mostrarse en una ventana de diálogo.

Lo que encontré hasta ahora

xmessage

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 excesivo y demasiado lento para mi gusto.

Diálogo buscador

Encontré una pregunta similar en este hilo del foro , donde la respuesta "aceptada" sugirió 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 diálogo se vuelve visible solo después de hacer clic en el ícono. Demasiados clics del mouse, demasiado perjudicial.

Notificador

Hay una respuesta en Super Usuario 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?

MvG
fuente

Respuestas:

5

Una opción es indicarle 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 principal que muestre un cuadro de diálogo, pero no se muestra de inmediato si la aplicación no responde. Si MPlayer OS X está en primer plano, los cuadros de diálogo de texto no aceptan ninguna entrada de teclado.

osascript -e 'tell application (path to frontmost application as text)
display dialog "message"
end'
Lri
fuente
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 esto.
MvG
3

Tratar

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

Rei Vilo
fuente
Parece que necesito aprender osascript
Edward Falk
Pregunta: Agregar la cláusula buttons {"OK"}hace que el cuadro de diálogo no se enfoque cuando aparece. Dejarlo afuera 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?
Edward Falk