Nasıl bir Mac Terminal açılır penceresi / uyarısı yaparım? Applescript?


107

Programımın, özel metnimi görüntüleyen her ne olursa olsun bir uyarı, uyarı görüntülemesini sağlamak istiyorum. Bu nasıl yapılır? Ayrıca, bir değişken ayarlayan birkaç düğmeyle bir tane yapmak mümkün müdür?

Toplu işlere benzer: echo msgbox""<a.vbs&a.vbs

Yanıtlar:


213

Kullanın osascript. Örneğin:

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

"Finder" ı istediğiniz uygulama ile değiştirmek. Bu uygulama arka planda ise, iletişim kutusunun da arka planda görüneceğini unutmayın. Her zaman ön planda göstermek için uygulama olarak "Sistem Olayları" nı kullanın:

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

Mac OS X İpuçları hakkında daha fazlasını okuyun .


Bekle, uygulamayı uygulama olarak kısaltabilir misin?
JShoe

AppleScript motoru otomatik olarak onu değiştirecektir. Çizgiyi AppleScript Editor'da tırnak işaretleri arasına yapıştırın, Çalıştır'a bastığınızda, bu, çalıştırmadan önce uygulamayı otomatik olarak uygulamayla değiştirir.
Anne

Başka bir yazma koruyucusu: "end if", "end yinelemeye" vb. İhtiyacınız yoktur, sadece "end" yeterlidir ve AppleScript ikinci kelimeyi ekleyecektir.
Nicholas Riley

7
"İptal" düğmesini istemiyor ancak yalnızca "Tamam" düğmesini istiyorsanız, {dialog} yerine {alert} yazın.
Bart B

1
13havik, bunun eski konu olduğunu biliyorum, ama evet, yapabilirsin. :) Ancak oturum açmanız gerekir. Örneğin, ssh terminali ile. ve sonra osascript -e 'görüntüleme iletişim kutusu "Merhaba!"' yı çağırın
Alex Reds

61

Terminalden bildirim merkezi bildirimini tetiklemek için bu komutu kullanın.

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

61

Notification Center olan herhangi bir Mac OS X sürümü kullanıyorsanız, terminal-notifier gem'i kullanabilirsiniz . İlk önce kurun (ihtiyacınız olabilir sudo):

gem install terminal-notifier

ve sonra basitçe:

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

Ayrıca bu OS X Günlük gönderisine bakın .


5
Bu sadece eski osascript şeylerinden çok daha iyi.
Jonny

Bu, 10.7.5'te (Lion) çalışmıyor gibi görünüyor, görünüşe göre içinde Bildirim Merkezi yok.
Norman H

4
brew install terminal-notifierDemlemek isterseniz de işe yarar.
gklka

5
Not : Mavericks'te ve sonrasında buna gerek yoktur, sadece aşağıda Pradeep'in cevabında belirtilen osascript'in ekran bildirimini kullanın .
alexchandel

7

Bu, odağı önceki uygulamaya geri yükler ve yanıt boşsa komut dosyasından çıkar.

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

Sistem Olayları iletişim kutusunu görüntülemesini söylediyseniz, daha önce çalışmıyor olsaydı küçük bir gecikme olurdu.

Görüntüleme iletişim kutusu hakkında belgeler için, AppleScript Editor'da Standart Eklemeler sözlüğünü açın veya AppleScript Dil Kılavuzuna bakın .


4

Bildirime altyazı , başlık ve ses ekleme :

İle AppleScript :

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

İle uç / bash ve osascript:

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

Bildirim yerine bir uyarı görüntülenebilir

Ne alt başlığı ne de sesi zor tutuyor.

İle AppleScript :

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

İle uç / bash ve osascript:

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

Bir çizgi ekleyin bash için ses çalma uyarı satırdan sonra:

afplay /System/Library/Sounds/Hero.aiff

Aynı satırı AppleScript'te ekleyin , kabuk komut dosyasının işi yapmasına izin verin :

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

Buradan seçebileceğiniz macOS yerleşik seslerin listesi .

Terminal ve el yazısı bildirimleriyle ilgili kullanışlı bir makaleden farklılaştırılmıştır .


3

Ve benim 15 sentim. Mac terminali vb. İçin tek bir astar, sadece MIN = 'yi ne olursa olsun ve bir mesaj olarak ayarlayın

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

Daha fazla komutu birleştirmek için ilham için bir bonus örneği; bu da mesajın üzerine bir mac'i uyku moduna geçirecek :) o zaman sudo girişine ihtiyaç var, 60 * 2'nin iki saatlik bir çarpımı da aynı şekilde gidiyor

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


0

Burada olanı çözmek için bir senaryo yaptım . Bunun için ekstra bir yazılıma ihtiyacınız yok. Kurulum:
brew install akashaggarwal7/tools/tsay
Kullanım:
sleep 5; tsay

Katkıda bulunmaktan çekinmeyin!


10
"ekstra bir yazılıma gerek yok ... sadece bunu kurun" bu ekstra yazılımdır.
PRS

@PRS, bir yazılım değil, zaten macOS için mevcut olan komutları çalıştıran bir komut dosyasıdır.
Akash Agarwal

2
o zaman neden brew ve betiğinizi yüklemem gerekiyor? neyi kastettiğimi anla? ;)
PRS

yine de beni söyle komutuyla tanıştırdığınız için size kredi vereceğim ... Bugün yeni bir şey öğrendim! lol
PRS

@PRS Karşılaştığınız için sevindim komut demek, oldukça kullanışlı. Diğer yorumunuz hakkında bence bir geliştirici iseniz kullanmak oldukça yaygındır. Ve betiği yüklemekle ilgili olarak, betiğin kaynağını açın ve yerel olarak bir dosyaya kopyalayıp / yapıştırın ve chmod + x ile çalıştırın;)
Akash Agarwal
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.