Comment créer une fenêtre contextuelle / alerte Mac Terminal? Applescript?

107

Je veux pouvoir faire afficher à mon programme une alerte, un avis, tout ce qui affiche mon texte personnalisé. Comment cela se fait-il? De plus, est-il possible d'en créer un avec plusieurs boutons qui définissent une variable?

Similaire aux lots: echo msgbox""<a.vbs&a.vbs

JShoe
la source

Réponses:

213

Utilisez osascript. Par exemple:

osascript -e 'tell app "Finder" to display dialog "Hello World"' 

Remplacement de «Finder» par l'application de votre choix. Notez que si cette application est en arrière-plan, la boîte de dialogue apparaîtra également en arrière-plan. Pour toujours afficher au premier plan, utilisez "Événements système" comme application:

osascript -e 'tell app "System Events" to display dialog "Hello World"'

En savoir plus sur Mac OS X Hints .

Anne
la source
Attendez, vous pouvez abréger l'application en application?
JShoe
Le moteur AppleScript le remplacera automatiquement. Collez simplement la ligne entre les guillemets dans AppleScript Editor, lorsque vous appuyez sur Exécuter, il remplace automatiquement l'application par l'application avant l'exécution.
Anne le
Un autre économiseur de frappe: vous n'avez pas besoin de "end if", "end repeat", etc., juste "end" est très bien et AppleScript insérera le deuxième mot.
Nicholas Riley
7
Si vous ne voulez pas le bouton "Annuler" mais que vous voulez juste un bouton "OK", remplacez {dialog} par {alert}.
Bart B
1
13havik, eh bien je sais que c'est un vieux sujet, mais oui, vous pouvez. :) Cependant, vous devez être connecté. Par exemple par le terminal ssh. puis invoquez osascript -e 'afficher la boîte de dialogue "Bonjour!"'
Alex Reds
61

Utilisez cette commande pour déclencher la notification du centre de notification depuis le terminal.

osascript -e 'display notification "Lorem ipsum dolor sit amet" with title "Title"'
Pradeep Vairamani
la source
61

Si vous utilisez une version de Mac OS X dotée du Centre de notifications, vous pouvez utiliser la gemme de notification de terminal . Installez-le d'abord (vous aurez peut-être besoin sudo):

gem install terminal-notifier

et puis simplement:

terminal-notifier -message "Hello, this is my message" -title "Message Title"

Voir aussi cet article OS X Daily .

Enrico Carlesso
la source
5
C'est simplement tellement mieux que les anciens trucs osascript.
Jonny
Cela semble ne pas fonctionner dans 10.7.5 (Lion), apparemment pas de centre de notifications.
Norman H
4
brew install terminal-notifierfonctionne également si vous préférez brasser.
gklka
5
PSA: Sur Mavericks et plus tard, ce n'est pas nécessaire, utilisez simplement la notification d'affichage d'osascript , qui est mentionnée ci-dessous dans la réponse de Pradeep.
alexchandel
7

Cela rétablirait le focus sur l'application précédente et quitterait le script si la réponse était vide.

a=$(osascript -e 'try
tell app "SystemUIServer"
set answer to text returned of (display dialog "" default answer "")
end
end
activate app (path to frontmost application as text)
answer' | tr '\r' ' ')
[[ -z "$a" ]] && exit

Si vous avez dit aux événements système d'afficher la boîte de dialogue, il y aurait un petit délai si elle n'était pas en cours d'exécution auparavant.

Pour obtenir de la documentation sur la boîte de dialogue d'affichage, ouvrez le dictionnaire des ajouts standard dans AppleScript Editor ou consultez le Guide du langage AppleScript .

Lri
la source
4

Ajout d'un sous - titre , d'un titre et d'un son à la notification:

Avec AppleScript :

display notification "Notification text" with title "Notification Title" subtitle "Notification sub-title" sound name "Submarine"

Avec terminal / bash et osascript:

osascript -e 'display notification "Notification text" with title "Notification Title" subtitle "Notification sub-title" sound name "Submarine"'

Une alerte peut être affichée à la place d'une notification

Ne prend pas le sous-titre ni le son dur.

Avec AppleScript :

display alert "Alert title" message "Your message text line here."

Avec terminal / bash et osascript:

osascript -e 'display alert "Alert title" message "Your message text line here."'

Ajoutez une ligne dans bash pour jouer le son après la ligne d'alerte:

afplay /System/Library/Sounds/Hero.aiff

Ajoutez la même ligne dans AppleScript , en laissant le script shell faire le travail:

do shell script ("afplay /System/Library/Sounds/Hero.aiff")

Liste des sons intégrés à macOS à choisir ici .

Paraphrasé à partir d'un article pratique sur les notifications de terminal et d'applescript .

andyNilson
la source
3

Et mes 15 centimes. Une seule ligne pour le terminal mac, etc. il suffit de définir MIN = sur n'importe quoi et un message

MIN=15 && for i in $(seq $(($MIN*60)) -1 1); do echo "$i, "; sleep 1; done; echo -e "\n\nMac Finder should show a popup" afplay /System/Library/Sounds/Funk.aiff; osascript -e 'tell app "Finder" to display dialog "Look away. Rest your eyes"'

Un exemple supplémentaire d'inspiration pour combiner plus de commandes; cela mettra également un mac en veille sur le message :) la connexion sudo est alors nécessaire, une multiplication comme le 60 * 2 pendant deux heures va également

sudo su
clear; echo "\n\nPreparing for a sleep when timers done \n"; MIN=60*2 && for i in $(seq $(($MIN*60)) -1 1); do printf "\r%02d:%02d:%02d" $((i/3600)) $(( (i/60)%60)) $((i%60)); sleep 1; done; echo "\n\n Time to sleep  zzZZ";  afplay /System/Library/Sounds/Funk.aiff; osascript -e 'tell app "Finder" to display dialog "Time to sleep zzZZ"'; shutdown -h +1 -s
K. Kilian Lindberg
la source
0

J'ai fait un script pour résoudre ce problème qui est ici . Vous n'avez besoin d'aucun logiciel supplémentaire pour cela. Installation:
brew install akashaggarwal7/tools/tsay
utilisation:
sleep 5; tsay

N'hésitez pas à contribuer!

Akash Agarwal
la source
10
"pas besoin de logiciel supplémentaire ... installez simplement ceci" c'est un logiciel supplémentaire.
PRS
@PRS est un script qui exécute déjà les commandes disponibles sur macOS, pas un logiciel.
Akash Agarwal
2
alors pourquoi dois-je installer brew et votre script? tu vois ce que je veux dire? ;)
PRS
cependant, je vous remercie de m'avoir présenté la commande say ... J'ai appris quelque chose de nouveau aujourd'hui! lol
PRS
@PRS Heureux que vous ayez rencontré une commande, c'est assez utile. À propos de votre autre commentaire, je pense que si vous êtes un développeur, vous pouvez l'utiliser assez souvent. Et à propos de l'installation du script, n'hésitez pas à ouvrir le source du script et à le copier / coller localement dans un fichier et à chmod + x et à l'exécuter;)
Akash Agarwal