J'aimerais pouvoir tirer parti des fonctionnalités de Notification Center de 10.8 dans les scripts AppleScript et les scripts shell que j'écris.
Existe-t-il une commande intégrée ou une bibliothèque tierce utilisable à partir d'un script AppleScript ou shell?
Idéalement, le type et l'icône de la notification pourraient être contrôlés, mais même la possibilité de déclencher une bannière de base avec une icône de stock (mais un texte personnalisé) serait appréciée.
terminal
applescript
mountain-lion
notification-center
command-line
Nathan Greenstein
la source
la source
Réponses:
Avec Mavericks et les versions ultérieures, vous pouvez utiliser la "notification d'affichage" d'AppleScript:
C'est ça - littéralement si simple! Aucun 3 e bibliothèques -Party ou les applications nécessaires et est entièrement portable pour une utilisation sur d' autres systèmes. 10.9 notification en haut, 10.10 DP au milieu, 10.10 en bas.
AppleScript peut être exécuté à partir du shell en utilisant / usr / bin / osascript:
Vous pouvez également personnaliser davantage l'alerte en ajoutant…
un sous-titre
Ajoutez 'sous-titre' suivi de la chaîne ou de la variable contenant le sous-titre.
L'exemple ci-dessus génère la notification suivante:
du son
Ajoutez 'nom du son' suivi du nom du son qui sera joué avec la notification.
Les noms de sons valides sont les noms de sons situés dans…
~/Library/Sounds
/System/Library/Sounds
Les notifications de publication peuvent être encapsulées dans un script de ligne de commande. Le code suivant peut être exécuté dans Terminal et ajoutera un script à / usr / local / bin (doit exister, ajouter à $ PATH) appelé
notify
.C'est le script que les personnes ci-dessus vont ajouter pour notifier.
Maintenant pour afficher une notification:
la source
display notification
c'est que lorsque vous cliquez dessus, la boîte de dialogue d'ouverture de fichier apparaît."display ... '$mytext' ..."
, mais qui ont besoin échappé des guillemets doubles:"display notification \"$mytext\" ..."
.notificateur de terminal
Du README:
la source
Je veux juste ajouter une note à la réponse de @ grgarside, car je sais que beaucoup de gens veulent avoir une notification contextuelle qui ne peut être rejetée que par un clic de bouton.
J'ai trouvé la solution pour vous:
En réalité, il était contrôlé par un paramètre défini dans les préférences système plutôt que par un paramètre du script écrit. Ces deux images devraient tout expliquer
Merci @grgarside pour la bonne réponse.
la source
Script Editor
est seulement pourScript Editor.app
etosascript
. Dans un flux de travail de service, c'estAutomator Runner
. Quand à l'intérieurAutomator.app
, c'estAutomator
.Vous pouvez maintenant le faire avec Growl2 ( disponible sur l'App Store ). Installer Growl et activer "Notifications OS X" (capture d'écran)
De plus, vous devez installer GrowlNotify pour un outil de ligne de commande permettant d'envoyer des notifications de Growl. Vous pouvez télécharger cet outil gratuitement sur la page de téléchargement .
Vous pouvez maintenant générer des notifications Growl à partir de la ligne de commande, qui seront transférées au Centre de notifications. Par exemple:
Notez qu'il ne semble pas possible actuellement de changer l'icône de l'application.
la source
--icon path/to/icon.png
pour les icônes.J'ai récemment créé terminal-notifier pour créer un outil de ligne de commande permettant d'afficher des alertes de notification (avec des actions) et des alertes de type de réponse.
Je l'utilise avec mes scripts shell et mes applications golang pour obtenir des réponses interactives des utilisateurs.
https://github.com/vjeantet/alerter
la source
La solution de @grgarside est bien, mais elle est vulnérable à l’injection de script, ce qui peut être un problème de sécurité majeur lorsque celle-ci est utilisée pour afficher par exemple le contenu du fichier journal ou quelque chose de similaire.
Cela devrait être plus sûr:
la source
I have a "laser"
vous ne rencontriez pas d'erreur de syntaxe en "citant" vos "mots". Avec échapper, vous pouvez:script 'I have a "laser"'
Puisque Growl n'est pas gratuit et que terminal-notifier n'est pas disponible sur les systèmes antérieurs à la version 10.8, j'ai tendance à utiliser cocoaDialog . C'est gratuit et open source, vous pouvez donc probablement le distribuer avec vos scripts.
Si vous n'avez pas besoin de beaucoup de personnalisation, vous pouvez également utiliser les scripts AppleScript
display notification
que vous pouvez également appeler à partir du shell, comme d'autres l'ont déjà mentionné.Mais attention, AppleScript semble nécessiter des guillemets doubles. Donc, si vous avez besoin de variables, cela ne fonctionnera pas :
Vous devrez utiliser des guillemets doubles. C'est moche mais ça marche :
la source
osascript -e 'display notification "Lorem ipsum dolor sit amet" with title "Title"'
(Il s'agit d'une implémentation alternative basée sur l'excellente réponse de @ grgarside.)
AppleScript peut être interprété directement
osascript
en insérant la ligne shebang.Enregistrez ceci en tant que
notify
quelque part dans votre chemin, par exemple/usr/local/bin/notify
, et rendez-le exécutable (chmod +x notify
). Il accepte un message et un titre optionnel. Si l'un d'entre eux a des espaces, placez-le entre guillemets afin que le shell l'interprète comme un argument unique.la source
Voici un exemple intéressant que j'utilise dans un script ruby sous OS X (pour pouvoir démarrer un script et obtenir une mise à jour même après avoir quitté la fenêtre):
la source
Une alternative:
Dans
.bash_profile
:Utilisez la commande:
sys-notify "title" "message"
la source
Documentation officielle
https://developer.apple.com/library/content/documentation/LanguagesUtilities/Conceptual/MacAutomationScriptingGuide/DisplayNotifications.html
Copier le texte ici, au cas où le document serait déplacé ou supprimé.
la source
Merci, c’était exactement ce dont j’avais besoin pour quelques scripts d’utilisateur. J'ai fait une légère modification pour ajouter un sous-titre et un son. Si une valeur n'est pas fournie, elle est ignorée.
Pour le son, utilisez un nom de fichier son sans l’extension de / System / Library / Sounds. Par exemple, pour utiliser le fichier Ping.aiff, utilisez Ping pour $ 4.
la source