Jak utworzyć wyskakujące okienko/alert terminala Mac? Applescript?

Chcę, aby mój program wyświetlał alert, powiadomienie, cokolwiek wyświetla mój niestandardowy tekst. Jak to się robi? Ponadto, czy jest możliwe, aby jeden z kilku przycisków, które ustawia zmienną?

Podobne do partii: echo msgbox""<a.vbs&a.vbs

Author: JShoe, 2011-04-08

7 answers

Użycie osascript. Na przykład:

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

Zastąpienie "Findera" dowolną aplikacją. Uwaga jeśli ta aplikacja jest tłoczona, okno dialogowe pojawi się również w tle. Aby zawsze pokazywać się na pierwszym planie, użyj "zdarzeń systemowych"jako aplikacji:

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

Czytaj więcej na Mac OS X podpowiedzi .

 174
Author: Anne,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-09 13:54:46

Jeśli używasz dowolnej wersji systemu Mac OS X, która ma Centrum powiadomień, możesz użyć gem terminal-notifier . Najpierw go zainstaluj (możesz potrzebować sudo):

gem install terminal-notifier

A potem po prostu:

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

Zobacz także Ten OS X Daily post .

 54
Author: Enrico Carlesso,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-04 03:22:30

Użyj tego polecenia, aby uruchomić powiadomienie Centrum powiadomień z terminala.

osascript -e 'display notification "Lorem ipsum dolor sit amet" with title "Title"'
 46
Author: Pradeep Vairamani,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-07 08:10:32

To przywróci fokus do poprzedniej aplikacji i zakończy działanie skryptu, jeśli odpowiedź jest pusta.

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

Jeśli polecisz zdarzeniom systemowym, aby wyświetlały okno dialogowe, pojawi się małe opóźnienie, jeśli wcześniej nie było uruchomione.

Aby uzyskać dokumentację dotyczącą okna dialogowego wyświetlania, otwórz słownik standardowych dodatków w edytorze AppleScript lub zobacz AppleScript Language Guide.

 6
Author: user495470,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-26 11:20:40

I moje 15 centów. Jeden liner dla terminala mac itp Po prostu ustaw min= na cokolwiek i wiadomość

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

Bonusowy przykład inspiracji do łączenia większej liczby komend; spowoduje to również uśpienie komputera mac na wiadomości:) potrzebne jest wtedy logowanie sudo, mnożenie jak 60*2 przez dwie godziny idzie równie dobrze

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
 2
Author: K. Kilian Lindberg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-26 15:40:15
 1
Author: Mark,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-20 10:18:16

Zrobiłem skrypt, aby rozwiązać ten problem, który jest TUTAJ . Nie potrzebujesz do tego żadnego dodatkowego oprogramowania. Instalacja:
brew install akashaggarwal7/tools/tsay
Użycie:
sleep 5; tsay

Zapraszam do współtworzenia!

 0
Author: Akash Agarwal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-15 15:11:21