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

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 .


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"'

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 .


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 .


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 .


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


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!


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.