it-swarm.com.de

Wie mache ich ein Mac Terminal-Popup / Alarm? Apfelskript?

Ich möchte in der Lage sein, dass mein Programm eine Warnmeldung anzeigt, egal was mein benutzerdefinierter Text anzeigt. Wie geht das? Ist es auch möglich, eine mit mehreren Schaltflächen zu erstellen, die eine Variable setzen?

Ähnlich wie bei Chargen: echo msgbox""<a.vbs&a.vbs

95
JShoe

Verwenden Sie osascript . Beispielsweise:

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

Ersetzen Sie "Finder" durch eine beliebige App. Beachten Sie, dass das Dialogfeld auch im Hintergrund angezeigt wird, wenn diese App im Hintergrund ausgeführt wird. Um immer im Vordergrund anzuzeigen, verwenden Sie "Systemereignisse" als App:

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

Lesen Sie mehr unter Mac OS X Hinweise .

193
Anne

Wenn Sie eine Mac OS X-Version mit Notification Center verwenden, können Sie terminal-notifier gem verwenden. Installieren Sie es zuerst (möglicherweise benötigen Sie Sudo):

gem install terminal-notifier

und dann einfach:

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

Siehe auch this OS X Daily post .

59
Enrico Carlesso

Verwenden Sie diesen Befehl, um die Benachrichtigung des Benachrichtigungscenters über das Terminal auszulösen.

osascript -e 'display notification "Lorem ipsum dolor sit amet" with title "Title"'
54

Dadurch wird der Fokus auf die vorherige Anwendung zurückgesetzt und das Skript beendet, wenn die Antwort leer war.

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

Wenn Sie System Events angewiesen haben, das Dialogfeld anzuzeigen, würde es eine kleine Verzögerung geben, wenn es zuvor nicht ausgeführt würde.

Öffnen Sie zur Dokumentation des Anzeigedialogs das Wörterbuch der Standardzusätze im AppleScript-Editor oder lesen Sie AppleScript Language Guide .

6
Lri

Und meine 15 Cent. Ein Einzeiler für das Mac-Terminal usw. setzt MIN = auf whatever und eine Meldung

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

Ein Bonusbeispiel für die Inspiration, mehr Befehle zu kombinieren. Dies versetzt einen Mac auch in den Standby-Modus, wenn die Nachricht gesendet wird. :) Dann wird der Sudo-Login benötigt. Eine Multiplikation der 60 * 2-Werte für zwei Stunden ist ebenfalls erforderlich

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
1
Mark

Ich habe ein Skript erstellt, um dieses Problem zu lösen. Das ist hier . Sie benötigen dafür keine zusätzliche Software. Installation:
brew install akashaggarwal7/tools/tsay
Verwendung:
sleep 5; tsay

Fühlen Sie sich frei, einen Beitrag zu leisten!

0
Akash Agarwal