Program obsługi zostanie wywołany tylko wtedy, gdy skrypt zostanie zapisany jako aplikacja, najlepiej jako aplikacja typu open-open. W każdym razie aplikacja musi nadal działać, gdy ktoś kliknie powiadomienie. Nie otrzymasz tego zachowania z prostego łańcucha znaków.
Możesz dostać osascript, aby uruchomić skompilowany plik skryptu (który może przechowywać właściwości w sposób uporczywy), ale nadal musisz rozróżnić między zdarzeniem uruchomienia, które dzieje się po uruchomieniu skryptu, a zdarzeniem uruchamiania, które zostanie wywołane, gdy ktoś klika powiadomienie.
Proponuję tutaj kilka rozwiązań.
Użyj biblioteki Pythona aby wystrzelić powiadomień i zapomnieć o AppleScript/OSA. Można znaleźć informacje i różne rozwiązania w tym linkiem stackoverflow: Python post osx notification
Skonfiguruj pozostaje otwarty AppleScript aplikację jako swego rodzaju „serwera powiadomień” i wysłać wiadomość do tym (ewentualnie z OSAscript , chyba że możesz wysłać zdarzenie z jabłkami surowymi do "serwera" z Pythona), jeśli chcesz ustawić stosunek powiadamiania. Jest to trudne i wydaje się zbyt złożone w porównaniu z moją pierwszą sugestią. W szczególności może zajść potrzeba zmiany ustawień prywatności (szczególnie w Mavericks lub później), aby umożliwić OSAscript dostęp do zdarzeń systemowych.
Oto kilka linków, które mogą kierować Cię z drugim podejściem, ale naprawdę rzeczą pierwsza propozycja będzie Ci dalej, przy mniejszej ilości łez:
http://jacobsalmela.com/bash-script-enable-access-assistive-devices-programmatically-os-x-mavericks-10-9-x-simulate-keystrokes/
http://support.apple.com/kb/HT6026?viewlocale=en_US&locale=en_US
Nie użyłbym tej uproszczonej wersji. Konieczność przeciągnięcia pliku na kroplę w celu aktywacji powiadomienia z pewnością nie spełni jego oczekiwań. Nie mogę wymyślić żadnej sytuacji, która byłaby przydatna. Po prostu chcesz uruchomić procedurę obsługi, która zgłasza powiadomienie, chyba że wykryje, że została wywołana przez opcję Powiadomienie, a jeśli tak, uruchom katalog lub adres URL. – jweaks
Nie jestem pewien, w jaki sposób będą wyświetlane pierwsze powiadomienia. Jednak ta odpowiedź pokazuje, jak używać zdarzenia kliknięcia powiadomienia displayowego. – mcgrailm
No cóż, z wyjątkiem tego, że "nie pokazuje, jak używać zdarzenia kliknięcia wyświetlacza", chyba że zainicjujesz powiadomienie, przeciągając plik na kropelka. Program OP chce programowo zainicjować, jak wskazano w wywołaniu osascript.Ale może zmodyfikować jeden z macosxautomation, aby to zrobić, ale wszystko będzie musiało być w programie obsługi przebiegu. – jweaks