332 votos

¿Cómo puedo activar una notificación del centro de notificación de un AppleScript o script de shell?

Me encantaría ser capaz de tomar ventaja de las características de centro de notificación de 10.8 en AppleScripts y scripts de shell que escribo.

¿Hay un comando integrado o una biblioteca de terceros puedo usar desde un AppleScript o un shell script?

Idealmente se podrían controlar el tipo y el icono de la notificación, pero se agradecería incluso la posibilidad de desencadenar un banner básico con un icono de stock (texto personalizado).

463voto

siva Puntos 23

Con Mavericks y más tarde, usted puede hacer esto usando AppleScript "mostrar notificación':

display notification "Lorem ipsum dolor sit amet" with title "Title"

                          REbdS.png

Eso es, literalmente, de simple!!! No 3rd-parte de las bibliotecas o de las aplicaciones requiere y es completamente portátil, para uso en otros sistemas. 10.9 notificación en la parte superior, 10.10 DP en el medio, 10.10 en la parte inferior.

AppleScript se puede ejecutar desde la shell mediante /usr/bin/osascript:

osascript -e 'display notification "Lorem ipsum dolor sit amet" with title "Title"'

También puede personalizar la alerta aún más mediante la adición de...

  • un subtítulo

    Append 'subtítulo' seguido de la cadena o variable que contiene los subtítulos.

    display notification "message" with title "title" subtitle "subtitle"
    

    El ejemplo anterior produce la siguiente notificación:

    aJ0Yk.png

  • sonido

    Append 'nombre del sonido" seguido por el nombre de un sonido que se reproducirá junto con la notificación.

    display notification "message" sound name "Sound Name"
    

    Sonido válido nombres son los nombres de los sonidos que se encuentran en...

    • ~/Library/Sounds
    • /System/Library/Sounds

La publicación de las notificaciones pueden ser envuelto como un script de línea de comandos. El siguiente código se puede ejecutar en la Terminal y añadir un script /usr/local/bin (debe existir, añadir a $PATH) llamado notify.

cd /usr/local/bin && echo -e "#!/bin/bash\n/usr/bin/osascript -e \"display notification \\\"\$*\\\"\"" > notify && chmod +x notify;cd -

Este es el script que la anterior se sumará a notificar.

#!/bin/bash
/usr/bin/osascript -e "display notification \"$*\""

Ahora para mostrar una notificación:

notify Lorem ipsum dolor sit amet
sleep 5; notify Slow command finished

100voto

Brant Bobby Puntos 4540

terminal-notifier

Desde el README:

terminal-notifier es una herramienta de línea de comandos para enviar Usuario de Mac OS X Las notificaciones, que están disponibles en Mac OS X 10.8.

Actualmente está empaquetado como un paquete de la aplicación, debido a que NSUserNotification no funciona a partir de una "Fundación de la herramienta'. radar://11956694

Esta herramienta será utilizada por el Trampolínpara mostrar el estado de los comandos que se ejecutan debido a que el sistema de ficheros cambios. (v3.0.0)

Descargar

Los binarios precompilados, que son de código firmado y listo para su uso, son disponible a partir de las descargas sección.

El uso de

$ ./terminal-notifier.app/Contents/MacOS/terminal-notifier group-ID sender-name message [bundle-ID]

Con el fin de utilizar el terminal-notificador, usted tiene que llamar al binario dentro de la aplicación del paquete.

El primer argumento especifica el 'grupo' una notificación pertenece. Para cualquier "grupo" sólo una notificación cada vez se muestra, en sustitución de previamente publicado notificaciones. Algunos ejemplos son: el remitente del proceso de IDENTIFICACIÓN el alcance de las notificaciones por parte de un único proceso, o el trabajo actual directorio para el alcance de las notificaciones por un proyecto.

El segundo y tercer argumentos describir la notificación de la misma y son su 'título' y 'mensaje', respectivamente. Por ejemplo, para comunicarse con el remitente de una notificación al usuario, podría especificar el nombre del remitente como el título.

El cuarto y último argumento es opcional. Se especifica que la aplicación debe ser activado cuando el usuario hace clic en la notificación. Por defecto se activan Terminal.aplicación, para iniciar otro la aplicación en lugar de especificar la aplicación del identificador del paquete. Para ejemplo, para el lanzamiento de Safari.aplicación de uso: com.apple.Safari.

37voto

Vic Jang Puntos 196

Solo quiero añadir una nota a @grgarside la respuesta, porque sé que muchas personas quieren tener una notificación emergente que sólo puede ser destituido por clic de botón.

Comparison

He encontrado la solución para usted:

En realidad, fue controlado por una configuración en Preferencias del Sistema, en lugar de algún parámetro en el guión escrito. Estas dos imágenes deben explicar todo

Gracias @grgarside para la gran respuesta.

System Preference

23voto

Gerry Puntos 10709

Ahora usted puede hacer esto con Growl2 (disponible en el App Store). Instalar Gruñido y activar la opción "OS X Notificaciones" (captura de pantalla)

enter image description here

Además, usted necesitará instalar GrowlNotify para una herramienta de línea de comandos para enviar notificaciones Growl. Puede descargar esta herramienta de forma gratuita en la página de Descarga.

Ahora puede generar notificaciones Growl desde la línea de comandos, la cual será remitida al Centro de Notificaciones. Por ejemplo:

growlnotify -n "My App" -m "Hello world"

enter image description here

Tenga en cuenta que actualmente no parece posible cambiar el icono de la aplicación.

14voto

mivk Puntos 206

Desde el Gruñido no es libre, y de la terminal de notificador no está disponible en pre-10.8 sistemas, que tienden a usar cocoaDialog. Es libre y de código abierto, por lo que probablemente puede también distribuir junto con sus scripts.

Si usted no necesita una gran cantidad de personalización, también se puede utilizar AppleScript s display notification que también se puede llamar desde el shell como otros ya han mencionado.

Pero ten cuidado de que AppleScript parece requerir comillas dobles. Así que si usted necesita las variables, esto no va a funcionar:

osascript -e "display notification '$text' with title '$title'" #WRONG

Usted tendrá que utilizar escapó comillas dobles. Esta es feo , pero funciona:

osascript -e "display notification \"$text\" with title \"$title\""

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X