Saya senang bisa memanfaatkan fitur Notification Center 10.8 di AppleScripts dan shell script yang saya tulis.
Apakah ada perintah bawaan atau pustaka pihak ketiga yang dapat saya gunakan dari skrip AppleScript atau shell?
Idealnya jenis dan ikon pemberitahuan dapat dikontrol, tetapi bahkan hanya kemampuan untuk memicu spanduk dasar dengan ikon stok (tetapi teks khusus) akan dihargai.
terminal
applescript
mountain-lion
notification-center
command-line
Nathan Greenstein
sumber
sumber
Jawaban:
Dengan Mavericks dan yang lebih baru, Anda dapat melakukan ini menggunakan 'pemberitahuan tampilan' AppleScript:
Itu saja — secara harfiah sesederhana itu! Tidak ada 3 rd perpustakaan -party atau aplikasi yang diperlukan dan benar-benar portabel untuk digunakan pada sistem lain. 10.9 notifikasi di atas, 10.10 DP di tengah, 10.10 di bawah.
AppleScript dapat dijalankan dari shell menggunakan / usr / bin / osascript:
Anda juga dapat menyesuaikan lansiran lebih lanjut dengan menambahkan ...
subtitle
Tambahkan 'subtitle' diikuti oleh string atau variabel yang berisi subtitle.
Contoh di atas menghasilkan pemberitahuan berikut:
suara
Tambahkan 'nama suara' diikuti dengan nama suara yang akan diputar bersama dengan notifikasi.
Nama suara yang valid adalah nama suara yang berada di ...
~/Library/Sounds
/System/Library/Sounds
Posting pemberitahuan dapat dibungkus sebagai skrip baris perintah. Kode berikut dapat dijalankan di Terminal dan akan menambahkan skrip ke / usr / local / bin (harus ada, tambahkan ke $ PATH) yang dipanggil
notify
.Ini adalah skrip yang akan ditambahkan di atas untuk memberi tahu.
Sekarang untuk menampilkan pemberitahuan:
sumber
display notification
adalah ketika Anda mengkliknya, dialog file terbuka muncul."display ... '$mytext' ..."
, tapi kebutuhan lolos tanda kutip ganda:"display notification \"$mytext\" ..."
.terminal-notifier
Dari README:
sumber
Saya hanya ingin menambahkan catatan ke jawaban @ grgarside, karena saya tahu banyak orang ingin memiliki pemberitahuan popup yang hanya dapat diabaikan oleh klik tombol.
Saya telah menemukan solusi untuk Anda:
Itu sebenarnya dikendalikan oleh pengaturan di System Preference, daripada beberapa parameter dalam skrip yang ditulis. Kedua gambar ini harus menjelaskan semuanya
Terima kasih @grgarside atas jawaban yang bagus.
sumber
Script Editor
hanya untukScript Editor.app
danosascript
. Dalam alur kerja layanan, ituAutomator Runner
. Ketika di dalamAutomator.app
, ituAutomator
.Anda sekarang dapat melakukan ini dengan Growl2 ( tersedia dari App Store ). Instal Growl dan aktifkan "Pemberitahuan OS X" (tangkapan layar)
Selain itu, Anda harus menginstal GrowlNotify untuk alat baris perintah untuk mengirim pemberitahuan Growl. Anda dapat mengunduh alat ini secara gratis di halaman Unduh .
Anda sekarang dapat menghasilkan pemberitahuan Growl dari baris perintah, yang akan diteruskan ke Pusat Pemberitahuan. Sebagai contoh:
Perhatikan bahwa saat ini tampaknya tidak mungkin untuk mengubah ikon aplikasi.
sumber
--icon path/to/icon.png
untuk ikon.Saya baru-baru ini bercabang terminal-notifier untuk membangun alat baris perintah untuk menampilkan Pemberitahuan notifikasi (dengan tindakan) dan Balas Jenis Peringatan.
Saya menggunakannya dengan skrip shell dan aplikasi golang untuk mendapatkan jawaban interaktif dari pengguna.
https://github.com/vjeantet/alerter
sumber
@grgarside 's solusi bagus, tetapi rentan terhadap injeksi script, yang bisa menjadi masalah keamanan utama ketika ini digunakan untuk misalnya isi file layar log atau yang serupa.
Ini harus lebih aman:
sumber
I have a "laser"
tanpa diberi tahu bahwa Anda memiliki kesalahan sintaks dengan "mengutip" kata-kata "Anda". Dengan melarikan diri, Anda dapat:script 'I have a "laser"'
Karena Growl tidak gratis, dan terminal-notifier tidak tersedia pada sistem pra-10.8, saya cenderung menggunakan cocoaDialog . Ini gratis dan open source, jadi Anda mungkin dapat juga mendistribusikan bersama skrip Anda.
Jika Anda tidak membutuhkan banyak penyesuaian, Anda juga dapat menggunakan AppleScript
display notification
yang juga dapat Anda hubungi dari shell seperti yang telah disebutkan orang lain.Tetapi berhati-hatilah karena AppleScript tampaknya membutuhkan tanda kutip ganda. Jadi, jika Anda memerlukan variabel, ini tidak akan berfungsi :
Anda harus menggunakan tanda kutip ganda yang diloloskan. Ini jelek tapi berhasil :
sumber
osascript -e 'display notification "Lorem ipsum dolor sit amet" with title "Title"'
(Ini adalah implementasi alternatif berdasarkan jawaban luar biasa @ grgarside.)
AppleScript dapat diartikan secara langsung dengan memasukkan
osascript
garis shebang.Simpan ini sebagai
notify
suatu tempat di jalur Anda, mis./usr/local/bin/notify
, Dan membuatnya dapat dieksekusi (chmod +x notify
). Ia menerima pesan dan judul opsional. Jika salah satu memiliki spasi, bungkus dengan tanda kutip sehingga shell menafsirkannya sebagai argumen tunggal.sumber
Inilah yang keren yang saya gunakan dalam skrip ruby di OS X (sehingga saya bisa memulai skrip dan mendapatkan pembaruan bahkan setelah beralih dari jendela):
sumber
Sebuah alternatif:
Di
.bash_profile
:Gunakan perintah:
sys-notify "title" "message"
sumber
Dokumentasi resmi
https://developer.apple.com/library/content/documentation/LanguagesUtilities/Conceptual/MacAutomationScriptingGuide/DisplayNotifications.html
Menyalin teks di sini, seandainya dokumen dipindahkan atau dihapus.
sumber
Terima kasih, ini hanya yang saya butuhkan untuk beberapa skrip pengguna. Saya membuat sedikit modifikasi untuk menambahkan subtitle dan suara. Jika nilai tidak diberikan, nilai itu diabaikan.
Untuk suara, gunakan nama file suara tanpa ekstensi dari / System / Library / Sounds. Misalnya, untuk menggunakan file Ping.aiff, gunakan Ping untuk $ 4
sumber