Pintasan keyboard untuk mengabaikan pemberitahuan

27

Saya ingin dapat mengabaikan dan membuka notifikasi dengan keyboard

(Tidak berbicara tentang membuka / menutup pusat notifikasi)

Apakah ini mungkin? Dan jika demikian, bagaimana?

Drewdavid
sumber
Apakah Anda melihat pembaruan yang Anda minta?
markhunte

Jawaban:

25

Anda dapat membuat layanan Automator untuk menjalankan Applescript ini dan memberinya pintasan keyboard di pintasan Keyboard Preferensi Sistem

Ini akan menutup Pemberitahuan dan spanduk Pemberitahuan


Di Automator pilih layanan baru

masukkan deskripsi gambar di sini


Tambahkan Tindakan Jalankan Applescript

masukkan deskripsi gambar di sini


dan ganti kodenya dengan:

my closeNotif()
on closeNotif()

    tell application "System Events"
        tell process "Notification Center"
            set theWindows to every window
            repeat with i from 1 to number of items in theWindows
                set this_item to item i of theWindows
                try
                    click button 1 of this_item
                on error

                    my closeNotif()
                end try
            end repeat
        end tell
    end tell

end closeNotif

Setel 'Layanan menerima [tanpa input] di [aplikasi apa pun]'

Simpan layanan.


Buka pintasan Keyboard di System prefs dan atur layanan Anda di bawah 'Layanan' masukkan deskripsi gambar di sini

Sekarang aplikasi apa pun yang baru diluncurkan akan mengambil pintasan.

(Catatan: Saya menyusun skrip untuk melawan melemparkan kesalahan yang akan terjadi ketika pemberitahuan / jendela mulai menutup.

Otifikasi / jendela diberi nomor 1 hingga jumlah total. Tetapi ketika mereka menutup skrip akan tetap bekerja dari hitungan lama. Tetapi sistem akan menetapkan ulang indeks windows.

Jadi di mana kita katakan mulai dari 1-6 skrip akan mencoba dan menutup jendela 1, jendela 2, jendela 3 dan seterusnya. Tetapi sistem telah menetapkan kembali nomor jendela 1,2,3 ke jendela terakhir yang tersisa. Tetapi skrip akan mencoba dan menutup jendela 4 dan melemparkan kesalahan karena tidak ada. Script akan menangkap ini dan menanganinya. )


Jika Anda ingin mengklik tombol 'Tampilkan' pada Pemberitahuan Peringatan. Anda mengubah tombol yang Anda klik dari 1 menjadi 2.

click button 2 of this_item

Pemberitahuan spanduk tidak memiliki tombol 2.

Tapi Anda bisa mengklik jendela.

Jadi kode ini harus mengurus Menampilkan.

my closeNotif()
on closeNotif()

    tell application "System Events"
        tell process "Notification Center"
            set theWindows to every window
            repeat with i from 1 to number of items in theWindows
                set this_item to item i of theWindows
                set cnt to count buttons of this_item
                try
                    if cnt > 1 then

                        click button 2 of this_item
                    else
                        click this_item
                    end if
                on error

                    closeNotif()
                end try
            end repeat
        end tell
    end tell

end closeNotif
markhunte
sumber
Terima kasih, ini sangat keren. Satu hal yang hilang adalah bagaimana juga membuka notifikasi daripada menutupnya ... adalah sesuatu yang dapat Anda tambahkan, dan saya akan dengan senang hati menerima jawaban Anda!
Drewdavid
@Drewdavid memperbarui jawabannya :-)
markhunte
1
Drewdavid: Saya mengalami masalah yang sama, dan berhenti memperbaikinya di bawah Keamanan & Privasi dan hanya menyiapkan hot-key global melalui BetterTouchTool.
Bez Hermoso
1
Catatan: proses "Pusat Pemberitahuan" dapat dinamai "Pusat Pemberitahuan" dari "Pusat Pemberitahuan". Sistem akan memahami keduanya dalam Applescript. Adalah normal untuk menggunakan nama aplikasi di AppleScript. Dalam hal ini Notification Center ". Jika Anda menggunakan script shell atau unix, gunakan nama proses yang sebenarnya" NotificationCenter "
markhunte
1
@ Chris, simpan alur kerja sebagai Aplikasi di Automator. Dinamakan sesuatu seperti "Tutup Semua Noifikasi.app" Kemudian tambahkan ke Aksesibilitas secara manual. Kemudian buat layanan seperti yang dijelaskan di atas tetapi dalam menjalankan, gunakan Applescript: "beri tahu aplikasi" Tutup Semua Noifikasi "untuk mengaktifkan"
markhunte
6

Tidak cukup apa yang Anda minta:

Anda dapat membatasi waktu yang ditampilkan untuk jenis spanduk

Terminal dan tempel berikut ini

defaults write com.apple.notificationcenterui bannerTime #

dengan tanda # number diganti dengan jumlah detik yang Anda inginkan agar pemberitahuan banner tetap ada, lalu logout dan hidupkan kembali.

Untuk mengembalikan fungsi asli (5 detik) gunakan defaults delete com.apple.notificationcenterui bannerTime

Saya tahu Anda mengatakan tidak ada: tetapi Anda bisa siklus Pemberitahuan on / off dengan naskah dan menetapkan keyboard pintas untuk itu. Nonaktifkan Pusat Pemberitahuan sementara di Mountain Lion dari baris perintah?

Ruskes
sumber
Terima kasih telah memposting; batas waktu juga perlu diperhatikan di sini :)
Drewdavid
Apakah ini berhasil di High Sierra? Saya tidak bisa mendapatkan efek apa pun.
luckman212
0

Script asli oleh markhunte berfungsi tetapi berhenti setelah beberapa jendela. Mungkin saja daftar windows hanya termasuk yang saat ini terlihat. Ketika Anda memiliki terlalu banyak, ini tidak akan menutup semua. Saya menambahkan loop di luar loop utama untuk meminta jendela sampai kita mendapatkan jumlah jendela nol. Ini kodenya:

closeNotif saya () di closeNotif ()

tell application "System Events"
    tell process "Notification Center"
        set theWindows to every window
        set nWindows to number of items in theWindows
        repeat until nWindows is 0
            repeat with i from 1 to number of items in theWindows
                set this_item to item i of theWindows
                try
                    click button 1 of this_item
                    delay 0.2
                on error

                    my closeNotif()
                end try
            end repeat
            set theWindows to every window
            set nWindows to number of items in theWindows
        end repeat
    end tell
end tell

end closeNotif

Sandhitsu Das
sumber