122 votes

Comment créer un pop-up/une alerte pour le Terminal Mac ? Applescript ?

Je veux pouvoir faire en sorte que mon programme affiche une alerte, un avis, etc. qui affiche mon texte personnalisé. Comment cela se fait-il ? De même, est-il possible de créer un programme avec plusieurs boutons qui définissent une variable ?

Similaire à celui du lot : echo msgbox""<a.vbs&a.vbs

236voto

Anne Points 16250

Utilisez osascript . Par exemple :

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

Remplacer "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 qu'elle apparaisse toujours au premier plan, utilisez "System Events" comme application :

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

Plus d'informations sur Conseils pour Mac OS X .

0 votes

Attends, tu peux abréger application comme app ?

1 votes

Le moteur AppleScript le remplacera automatiquement. Il suffit de coller la ligne entre les guillemets dans l'éditeur AppleScript, lorsque vous appuyez sur Run, il remplace automatiquement app par application avant l'exécution.

0 votes

Autre économie de frappe : vous n'avez pas besoin de "end if", "end repeat", etc., "end" suffit et AppleScript insérera le deuxième mot.

67voto

R.V.Pradeep Points 592

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

61voto

Enrico Carlesso Points 3182

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

gem install terminal-notifier

et puis simplement :

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

Voir aussi cet article d'OS X Daily .

5 votes

C'est tout simplement bien mieux que le vieux truc osascript.

0 votes

Cela semble ne pas fonctionner dans 10.7.5 (Lion), apparemment sans centre de notification.

6 votes

brew install terminal-notifier fonctionne également si vous préférez infuser.

7voto

Lri Points 8342

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 demandiez à System Events d'afficher la boîte de dialogue, il y aurait un petit retard s'il n'était pas exécuté auparavant.

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

5voto

Kilian Lindberg Points 489

Et mes 15 cents. Pour le terminal Mac, il suffit de définir MIN= sur n'importe quelle valeur et d'afficher 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 bonus pour s'inspirer à combiner plus de commandes ; ceci mettra un mac en veille sur le message aussi :) le login sudo est nécessaire alors, une multiplication comme le 60*2 pour deux heures va bien.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X