Macターミナルのポップアップ/アラートを作成するにはどうすればよいですか?Applescript?


107

プログラムにアラート、通知、カスタムテキストを表示するものは何でも表示できるようにしたい。これはどのように行われますか?また、変数を設定する複数のボタンを持つものを作成することは可能ですか?

バッチに似ています: echo msgbox""<a.vbs&a.vbs

回答:


213

を使用しosascriptます。例えば:

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

「Finder」をあなたが望むどんなアプリでも置き換えます。そのアプリがバックグラウンドである場合、ダイアログもバックグラウンドで表示されます。常にフォアグラウンドで表示するには、アプリとして「システムイベント」を使用します。

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

詳しくはMac OS Xヒントをご覧ください。


待って、あなたはアプリケーションをアプリケーションとして省略できますか?
JShoe

AppleScriptエンジンが自動的に置き換えます。AppleScriptエディタで引用符の間に線を貼り付けるだけで、[実行]をクリックすると、実行前にappがapplicationに自動的に置き換えられます。
アン

別のタイピングセーバー:「end if」、「end repeat」などは必要ありません。「end」だけで十分で、AppleScriptが2番目の単語を挿入します。
Nicholas Riley

7
「キャンセル」ボタンではなく「OK」ボタンが必要な場合は、{dialog}を{alert}に置き換えます。
バートB

1
13havik、それは古いトピックであることはわかっていますが、そうです。:)ただし、ログインする必要があります。たとえば、ターミナルsshを使用します。次に、osascript -e 'display dialog "Hello!"'を呼び出します
Alex Reds

61

このコマンドを使用して、端末から通知センター通知をトリガーします。

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

61

通知センターのあるMac OS Xバージョンを使用している場合は、terminal-notifier gemを使用できます。最初にインストールします(必要になる場合がありますsudo):

gem install terminal-notifier

そして単に:

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

こちらのOS X Dailyの投稿もご覧ください。


5
これは単に古いosascriptのものよりはるかに優れています。
ジョニー

これは10.7.5(Lion)では機能しないようで、通知センターには含まれていないようです。
Norman H

4
brew install terminal-notifier醸造したい場合にも機能します。
gklka

5
PSA: Mavericks以降では必要ありません。以下のPradeepの回答で説明されているosascriptの表示通知を使用してください。
alexchandel

7

これにより、フォーカスが前のアプリケーションに戻り、答えが空の場合はスクリプトが終了します。

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

システムイベントにダイアログを表示するように指示した場合、それが以前に実行されていなかった場合、わずかな遅延が発生します。

表示ダイアログに関するドキュメントについては、AppleScriptエディタで標準追加の辞書を開くか、AppleScript言語ガイドを参照してください。


4

通知にサブタイトルタイトルサウンドを追加する:

AppleScript

display notification "Notification text" with title "Notification Title" subtitle "Notification sub-title" sound name "Submarine"

端末/ bashのosascript

osascript -e 'display notification "Notification text" with title "Notification Title" subtitle "Notification sub-title" sound name "Submarine"'

アラートが代わりに表示することができ、通知

小見出しも音も厳しくありません。

AppleScript

display alert "Alert title" message "Your message text line here."

端末/ bashのosascript

osascript -e 'display alert "Alert title" message "Your message text line here."'

警告行の後にサウンド再生するための行をbashに追加します。

afplay /System/Library/Sounds/Hero.aiff

AppleScriptに同じ行を追加して、シェルスクリプトに処理を実行させます

do shell script ("afplay /System/Library/Sounds/Hero.aiff")

ここから選択する macOS組み込みサウンドのリスト。

端末とapplescript通知に関する便利な記事から言い換えました。


3

そして私の15セント。Mac端末などの1つのライナーは、MIN =を何にでも設定し、メッセージを表示するだけです。

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

より多くのコマンドを組み合わせるインスピレーションのボーナス例; これにより、メッセージに対してもMacがスタンバイスリープ状態になります:) sudoログインが必要です。2時間の60 * 2としての乗算も同様です。

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

1

模擬的な質問と回答は、https://superuser.com/questions/246353/how-to-make-the-terminal-do-a-pop-up-alert-in-osxで入手でき ます。


タイトルは似ていますが、質問は異なります。次に、ユーザーの操作(ボタンを押す)を必要とするウィンドウを閉じて閉じます。
JShoe

0

これを解決するためのスクリプトをここに作成しました。このために追加のソフトウェアは必要ありません。インストール:
brew install akashaggarwal7/tools/tsay
使用法:
sleep 5; tsay

貢献してください!


9
「追加のソフトウェアは必要ありません...これをインストールするだけ」という追加のソフトウェアです。
PRS 2017

@PRSは、ソフトウェアではなく、macOSで利用可能なコマンドを実行するスクリプトです。
Akash Agarwal

2
では、brewとスクリプトをインストールする必要があるのはなぜですか。どういう意味ですか ;)
PRS 2017年

しかし、sayコマンドを紹介してくれたので、クレジットを差し上げます。今日は新しいことを学びました。LOL
PRS

@PRSあなたが言うコマンドに出会えてうれしい、それは非常に便利です。あなたの他のコメントについて私はあなたが開発者であるなら、あなたが使うことはかなり一般的だと思います。また、スクリプトのインストールについては、スクリプトのソースを開いてローカルにコピーしてファイルに貼り付け、chmod + xで実行してください;)
Akash Agarwal
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.