Ich würde gerne die Notification Center-Funktionen von 10.8 in AppleScripts und Shell-Skripten nutzen, die ich schreibe.
Gibt es einen eingebauten Befehl oder eine Drittanbieter-Bibliothek, die ich entweder über ein AppleScript- oder ein Shell-Skript verwenden kann?
Im Idealfall könnten Art und Symbol der Benachrichtigung gesteuert werden, aber auch nur die Möglichkeit, ein einfaches Banner mit einem Aktiensymbol (aber benutzerdefiniertem Text) auszulösen, wäre wünschenswert.
terminal
applescript
mountain-lion
notification-center
command-line
Nathan Greenstein
quelle
quelle
Antworten:
Mit Mavericks und höher können Sie dies mithilfe der AppleScript-Anzeigebenachrichtigung tun:
Das war's - buchstäblich so einfach! Keine 3 rd -Party Bibliotheken oder Anwendungen erforderlich und ist vollständig portabel für den Einsatz auf anderen Systemen. 10.9 Benachrichtigung oben, 10.10 DP in der Mitte, 10.10 unten.
AppleScript kann von der Shell aus mit / usr / bin / osascript ausgeführt werden:
Sie können die Warnung auch weiter anpassen, indem Sie ... hinzufügen.
ein Untertitel
Fügen Sie "Untertitel" hinzu, gefolgt von der Zeichenfolge oder Variablen, die den Untertitel enthält.
Das obige Beispiel erzeugt die folgende Benachrichtigung:
Klang
Fügen Sie 'Soundname' hinzu, gefolgt vom Namen eines Sounds, der zusammen mit der Benachrichtigung abgespielt wird.
Gültige Soundnamen sind die Namen von Sounds, die sich in ... befinden.
~/Library/Sounds
/System/Library/Sounds
Veröffentlichungsbenachrichtigungen können als Befehlszeilenskript umbrochen werden. Der folgende Code kann in Terminal ausgeführt werden und fügt ein Skript zu / usr / local / bin (muss vorhanden sein, zu $ PATH hinzufügen) hinzu, das aufgerufen wird
notify
.Dies ist das Skript, das oben zur Benachrichtigung hinzugefügt wird.
So zeigen Sie eine Benachrichtigung an:
quelle
display notification
ist, dass beim Klicken darauf das Dialogfeld zum Öffnen der Datei angezeigt wird."display ... '$mytext' ..."
, müssen aber entkam doppelte Anführungszeichen:"display notification \"$mytext\" ..."
.Terminal-Notifier
Aus der README:
quelle
Ich möchte @ grgarsides Antwort nur eine Notiz hinzufügen, da ich weiß, dass viele Leute ein Benachrichtigungs-Popup haben möchten, das nur durch Klicken auf die Schaltfläche geschlossen werden kann.
Ich habe die Lösung für Sie gefunden:
Es wurde tatsächlich durch eine Einstellung in der Systemeinstellung gesteuert und nicht durch einen Parameter im geschriebenen Skript. Diese beiden Bilder sollten alles erklären
Danke @grgarside für die tolle Antwort.
quelle
Script Editor
ist nur fürScript Editor.app
undosascript
. In einem Service-Workflow ist esAutomator Runner
. Wenn drinnenAutomator.app
, ist esAutomator
.Sie können dies jetzt mit Growl2 ( im App Store erhältlich ) tun . Installiere Growl und aktiviere "OS X Notifications" (Screenshot)
Darüber hinaus müssen Sie GrowlNotify installieren, damit ein Befehlszeilentool Growl-Benachrichtigungen senden kann. Sie können dieses Tool kostenlos auf der Download-Seite herunterladen .
Sie können jetzt Growl-Benachrichtigungen über die Befehlszeile generieren, die an das Notification Center weitergeleitet werden. Zum Beispiel:
Beachten Sie, dass das Anwendungssymbol derzeit nicht geändert werden kann.
quelle
--icon path/to/icon.png
für Symbole verwenden.Ich habe vor kurzem Terminal-Notifier angekündigt, um ein Befehlszeilen-Tool zum Anzeigen von Benachrichtigungs-Alerts (mit Aktionen) und Antworttyp-Alerts zu erstellen.
Ich benutze es mit meinen Shell-Skripten und Golang-Apps, um interaktive Antworten von Benutzern zu erhalten.
https://github.com/vjeantet/alerter
quelle
Die Lösung von @grgarside ist nett, aber anfällig für Skripteinspritzung , was ein großes Sicherheitsproblem sein kann, wenn dies z. B. zum Anzeigen des Inhalts von Protokolldateien oder dergleichen verwendet wird.
Das sollte sicherer sein:
quelle
I have a "laser"
ohne dass Ihnen gesagt wird, dass Sie einen Syntaxfehler haben, indem Sie Ihre "Wörter" "zitieren". Mit der Flucht können Sie:script 'I have a "laser"'
Da Growl nicht kostenlos ist und Terminal-Notifier auf Systemen vor 10.8 nicht verfügbar ist, verwende ich in der Regel cocoaDialog . Es ist kostenlos und Open Source, sodass Sie es wahrscheinlich auch zusammen mit Ihren Skripten verteilen können.
Wenn Sie nicht viele Anpassungen benötigen, können Sie auch AppleScript verwenden,
display notification
die Sie auch von der Shell aus aufrufen können, wie andere bereits erwähnt haben.Beachten Sie jedoch, dass AppleScript doppelte Anführungszeichen zu erfordern scheint. Wenn Sie also Variablen benötigen, funktioniert dies nicht :
Sie müssen Anführungszeichen verwenden. Das ist hässlich aber funktioniert :
quelle
osascript -e 'display notification "Lorem ipsum dolor sit amet" with title "Title"'
(Dies ist eine alternative Implementierung, die auf der hervorragenden Antwort von @ grgarside basiert.)
AppleScript kann direkt interpretiert werden, indem
osascript
die shebang-Zeile eingefügt wird.Speichern Sie dies beispielsweise
notify
irgendwo in Ihrem Pfad/usr/local/bin/notify
und machen Sie es ausführbar (chmod +x notify
). Es akzeptiert eine Nachricht und einen optionalen Titel. Wenn eines der beiden Leerzeichen enthält, setzen Sie es in Anführungszeichen, damit die Shell es als einzelnes Argument interpretiert.quelle
Hier ist eine coole, die ich in einem Ruby-Skript unter OS X verwende (damit ich ein Skript starten und ein Update erhalten kann, auch wenn ich vom Fenster weggeschaltet habe):
quelle
Eine Alternative:
In
.bash_profile
:Befehl verwenden:
sys-notify "title" "message"
quelle
Offizielle Dokumentation
https://developer.apple.com/library/content/documentation/LanguagesUtilities/Conceptual/MacAutomationScriptingGuide/DisplayNotifications.html
Kopieren Sie den Text hierher, falls das Dokument verschoben oder entfernt wird.
quelle
Vielen Dank, das war genau das, was ich für einige Benutzerskripte brauchte. Ich habe eine kleine Änderung vorgenommen, um Untertitel und Sound hinzuzufügen. Wird kein Wert angegeben, wird dieser ignoriert.
Verwenden Sie für den Sound einen Sound-Dateinamen ohne die Erweiterung von / System / Library / Sounds. Um beispielsweise die Datei Ping.aiff zu verwenden, verwenden Sie Ping für 4 USD
quelle