Chciałbym móc korzystać z funkcji Centrum powiadomień 10.8 w skryptach AppleScript i skryptach powłoki, które piszę.
Czy istnieje wbudowane polecenie lub biblioteka innej firmy, której można używać ze skryptu AppleScript lub powłoki?
Najlepiej byłoby kontrolować rodzaj i ikonę powiadomienia, ale doceniona byłaby nawet możliwość uruchomienia podstawowego banera z ikoną giełdową (ale tekstem niestandardowym).
terminal
applescript
mountain-lion
notification-center
command-line
Nathan Greenstein
źródło
źródło
Odpowiedzi:
W Mavericks i nowszych wersjach możesz to zrobić za pomocą „powiadomienia ekranowego” AppleScript:
To wszystko - dosłownie takie proste! Brak 3 rd biblioteki -party lub aplikacje wymagane i jest całkowicie przenośny do użytku w innych systemach. 10.9 powiadomienie u góry, 10.10 DP na środku, 10.10 na dole.
AppleScript można uruchomić z powłoki za pomocą / usr / bin / osascript:
Możesz także dostosować alert, dodając…
podtytuł
Dołącz „podtytuł”, a następnie ciąg lub zmienną zawierającą podtytuł.
Powyższy przykład generuje następujące powiadomienie:
dźwięk
Dołącz „nazwę dźwięku”, a następnie nazwę dźwięku, który będzie odtwarzany wraz z powiadomieniem.
Prawidłowe nazwy dźwięków to nazwy dźwięków znajdujących się w…
~/Library/Sounds
/System/Library/Sounds
Powiadomienia o opublikowaniu można zapakować jako skrypt wiersza polecenia. Poniższy kod można uruchomić w Terminalu i doda skrypt do / usr / local / bin (musi istnieć, dodać do $ PATH) o nazwie
notify
.Jest to skrypt, który powyżej doda, aby powiadomić.
Teraz, aby wyświetlić powiadomienie:
źródło
display notification
jest to, że po kliknięciu pojawia się okno dialogowe otwierania pliku."display ... '$mytext' ..."
, ale potrzeba uciekł cudzysłowów:"display notification \"$mytext\" ..."
.terminal-notifier
Z pliku README:
źródło
Chcę tylko dodać notatkę do odpowiedzi @ grgarside, ponieważ wiem, że wiele osób chce mieć okienko z powiadomieniem, które można usunąć tylko poprzez kliknięcie przycisku.
Znalazłem dla ciebie rozwiązanie:
W rzeczywistości był kontrolowany przez ustawienie w Preferencjach systemowych, a nie przez jakiś parametr w napisanym skrypcie. Te dwa obrazy powinny to wszystko wyjaśnić
Dzięki @grgarside za świetną odpowiedź.
źródło
Script Editor
jest tylko dlaScript Editor.app
iosascript
. W przepływie pracy usługi jest toAutomator Runner
. W środkuAutomator.app
jestAutomator
.Możesz to teraz zrobić za pomocą Growl2 ( dostępnego w App Store ). Zainstaluj Growl i włącz „Powiadomienia OS X” (zrzut ekranu)
Ponadto musisz zainstalować GrowlNotify dla narzędzia wiersza polecenia, aby wysyłać powiadomienia Growl. Możesz pobrać to narzędzie za darmo na stronie pobierania .
Możesz teraz generować powiadomienia Growl z wiersza poleceń, które zostaną przesłane do Centrum powiadomień. Na przykład:
Pamiętaj, że obecnie zmiana ikony aplikacji nie wydaje się możliwa.
źródło
--icon path/to/icon.png
dla ikon.Niedawno rozwidliłem terminal-notifier, aby zbudować narzędzie wiersza polecenia do wyświetlania alertów powiadomień (z działaniami) i alertów typu odpowiedzi.
Używam go ze skryptami powłoki i aplikacjami golang, aby uzyskać interaktywne odpowiedzi od użytkowników.
https://github.com/vjeantet/alerter
źródło
@grgarside „s rozwiązanie jest ładny, ale jest podatny na wstrzyknięcie skryptu, który może być poważnym problemem bezpieczeństwa, kiedy ta służy do wyświetlania np dziennika zawartość pliku lub coś podobnego.
To powinno być bezpieczniejsze:
źródło
I have a "laser"
bez informowania cię, że masz błąd składniowy przez „zacytowanie” swoich „słów”. Dzięki ucieczce możesz:script 'I have a "laser"'
Ponieważ Growl nie jest darmowy, a terminal-notifier nie jest dostępny w systemach starszych niż 10.8, zwykle używam cocoaDialog . Jest darmowy i open source, więc prawdopodobnie możesz również dystrybuować wraz ze swoimi skryptami.
Jeśli nie potrzebujesz dużo dostosowywania, możesz także użyć AppleScript,
display notification
który możesz również wywołać z powłoki, jak już wspomnieli inni.Ale uwaga, że AppleScript wydaje się wymagać podwójnych cudzysłowów. Więc jeśli potrzebujesz zmiennych, to nie zadziała :
Będziesz musiał użyć podwójnych cudzysłowów. To jest brzydkie, ale działa :
źródło
osascript -e 'display notification "Lorem ipsum dolor sit amet" with title "Title"'
(Jest to alternatywna implementacja oparta na doskonałej odpowiedzi @ grgarside).
AppleScript można interpretować bezpośrednio, wstawiając
osascript
linię shebang.Zapisz to jako
notify
gdzieś na swojej ścieżce, np./usr/local/bin/notify
I uczyń ją wykonywalną (chmod +x notify
). Akceptuje wiadomość i opcjonalny tytuł. Jeśli którykolwiek z nich ma spację, zawiń go w cudzysłów, aby powłoka zinterpretowała go jako pojedynczy argument.źródło
Oto fajny, którego używam w skrypcie ruby w systemie OS X (dzięki czemu mogę uruchomić skrypt i uzyskać aktualizację nawet po przełączeniu się z okna):
źródło
Alternatywa:
W
.bash_profile
:Użyj polecenia:
sys-notify "title" "message"
źródło
Oficjalna dokumentacja
https://developer.apple.com/library/content/documentation/LanguagesUtilities/Conceptual/MacAutomationScriptingGuide/DisplayNotifications.html
Kopiowanie tekstu tutaj, w przypadku przeniesienia lub usunięcia dokumentu.
źródło
Dziękuję, właśnie tego potrzebowałem do niektórych skryptów użytkownika. Wprowadziłem niewielką modyfikację, aby dodać napisy i dźwięk. Jeśli wartość nie zostanie podana, zostanie zignorowana.
Do dźwięku użyj nazwy pliku dźwiękowego bez rozszerzenia z / System / Library / Sounds. Na przykład, aby użyć pliku Ping.aiff, użyj polecenia Ping za 4 USD
źródło