Odpowiedzi:
Użyj osascript
. Na przykład:
osascript -e 'tell app "Finder" to display dialog "Hello World"'
Zastąpienie „Findera” dowolną aplikacją. Zwróć uwagę, że jeśli ta aplikacja działa w tle, okno dialogowe pojawi się również w tle. Aby zawsze wyświetlać się na pierwszym planie, użyj jako aplikacji „Zdarzenia systemowe”:
osascript -e 'tell app "System Events" to display dialog "Hello World"'
Czytaj więcej na Mac OS X wskazówki .
Użyj tego polecenia, aby wyzwolić powiadomienie centrum powiadomień z terminala.
osascript -e 'display notification "Lorem ipsum dolor sit amet" with title "Title"'
Jeśli używasz dowolnej wersji systemu Mac OS X z Centrum powiadomień, możesz użyć klejnotu terminal-notifier . Najpierw 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 post na OS X Daily .
brew install terminal-notifier
działa również, jeśli wolisz parzyć.
Spowoduje to przywrócenie fokusu do poprzedniej aplikacji i zamknięcie skryptu, jeśli odpowiedź była 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 powiesz zdarzeniom systemowym, aby wyświetlić okno dialogowe, wystąpi niewielkie opóźnienie, jeśli wcześniej nie było uruchomione.
Aby uzyskać dokumentację dotyczącą wyświetlania okna dialogowego, otwórz słownik dodatków standardowych w edytorze AppleScript lub zapoznaj się z podręcznikiem języka AppleScript .
Z AppleScript :
display notification "Notification text" with title "Notification Title" subtitle "Notification sub-title" sound name "Submarine"
Z terminalem / bash i osascript
:
osascript -e 'display notification "Notification text" with title "Notification Title" subtitle "Notification sub-title" sound name "Submarine"'
Nie ma podtytułu ani dźwięku trudnego.
Z AppleScript :
display alert "Alert title" message "Your message text line here."
Z terminalem / bash i osascript
:
osascript -e 'display alert "Alert title" message "Your message text line here."'
Dodaj linię w bash do odtwarzania dźwięku za linią alertu:
afplay /System/Library/Sounds/Hero.aiff
Dodaj tę samą linię w AppleScript , pozwalając skryptowi powłoki wykonać pracę:
do shell script ("afplay /System/Library/Sounds/Hero.aiff")
Lista wbudowanych dźwięków macOS do wyboru tutaj .
Sparafrazowano na podstawie poręcznego artykułu na temat powiadomień terminalowych i skryptów jabłkowych .
I moje 15 centów. Jedna linijka 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"'
Dodatkowy przykład inspiracji do łączenia większej liczby poleceń; Spowoduje to uśpienie Maca również po wiadomości :) wymagane jest wtedy logowanie sudo, mnożenie jako 60 * 2 przez dwie godziny idzie również
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
Podobne pytanie i odpowiedź są dostępne pod adresem : /superuser/246353/how-to-make-the-terminal-do-a-pop-up-alert-in-osx
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 udziału!