Комбінація клавіш для відхилення сповіщень


28

Я хотів би мати можливість відхиляти та відкривати сповіщення за допомогою клавіатури

(Не кажучи про відкриття / закриття центру сповіщень)

Чи можливо це? А якщо так, то як?


Ви бачили те оновлення, яке ви просили?
markhunte

Відповіді:


26

Ви можете створити службу Automator, щоб запустити цей Applescript і надати йому ярлик клавіатури в ярликах клавіатури Налаштування системи

Це закриє сповіщення про сповіщення та банери


У Automator виберіть нову послугу

введіть тут опис зображення


Додати дію запустити Applescript

введіть тут опис зображення


і замініть його на:

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

Встановіть "Сервіс отримує [немає вводу]" у [будь-якій програмі] "

Збережіть послугу.


Відкрийте комбінації клавіш у префіксах системи та встановіть свою послугу в розділі "Послуги" введіть тут опис зображення

Тепер будь-який недавно запущений додаток підбере ярлик.

(Примітка. Я сконструював сценарій, щоб протистояти викиду помилки, яка станеться, коли сповіщення / вікна почнуть закриватися.

Відхилення / вікно пронумеровано від 1 до загальної кількості. Але коли вони закриють сценарій, все ще працюватиме старий граф. Але система буде перепризначати індекс вікон.

Отже, коли ми скажемо, що починається з 1 -6, сценарій спробує закрити вікно 1, вікно 2, вікно 3 і так далі. Але система присвоїла номери вікон 1,2,3 останнім вікнам, що залишилися. Але сценарій спробує закрити вікно 4 і видасть помилку, оскільки його не існує. Сценарій зловить це і вирішить його. )


Якщо ви хочете натиснути кнопку "Показати" у повідомленні про сповіщення. ви змінюєте кнопку, натискаючи від 1 до 2.

click button 2 of this_item

У сповіщеннях банера немає кнопки 2.

Але ви можете просто натиснути на вікно.

Таким чином, цей код повинен піклуватися про показ.

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

Дякую, це дійсно круто. Єдине, чого йому не вистачає, це як відкрити сповіщення, а не закривати його ... - це те, що ви можете додати, і я з радістю прийму вашу відповідь!
Дрюдавід

@Drewdavid оновив відповідь :-)
markhunte

1
Drewdavid: У мене є та сама проблема, і я відмовився від її виправлення в розділі Безпека та конфіденційність і просто створив глобальний гарячий ключ через BetterTouchTool.
Без Ермосо

1
Примітка: процес "Центр сповіщень" може бути названий "Центром сповіщень" "Нотифікаційного центру". Система зрозуміє як в Applescript. Зазвичай використовувати ім’я програми в AppleScript. У цьому випадку Центр сповіщень ". Якщо ви використовуєте скрипт do shell або unix, тоді використовуйте фактичну назву процесу" NotificationCenter "
markhunte

1
@Chris, збережіть робочий процес як додаток в Automator. Названо щось на кшталт "Закрити всі Noifications.app" Потім додайте його до Доступності вручну. Потім створіть сервіс, як описано вище, але під час використання Applescript використовуйте: "скажіть програмі" Закрити всі повідомлення ", щоб активувати"
markhunte

5

Не зовсім те, що ви просите:

Ви можете обмежити час, який відображається для типу банерів

Термінал і вставте наступним чином

defaults write com.apple.notificationcenterui bannerTime #

зі знаком # номер замінено на кількість секунд, за якими потрібно банерні сповіщення, а потім увійти та знову ввімкнути.

Для відновлення початкової функції (5 секунд) використовуйте defaults delete com.apple.notificationcenterui bannerTime

Я знаю, ви сказали "ні", але ви можете ввімкнути / вимкнути Повідомлення за допомогою сценарію та призначити йому комбінацію клавіш. Тимчасово відключити Центр сповіщень у Mountain Lion з командного рядка?


Дякуємо за публікацію; тут також варто відзначити обмеження часу :)
Древдавід

Чи працює це у Високій Сьєррі? Я не міг зрозуміти, що це може мати якийсь ефект.
luckman212

1

Оригінальний сценарій від markhunte працює, але зупиняється через кілька вікон. Можливо, список вікон включає лише ті, які зараз видимі. Коли у вас занадто багато, це все не закриє. Я додав цикл за межами основного циклу, щоб запитувати вікна, поки ми не отримаємо кількість вікон, що дорівнює нулю. Ось код:

мій closeNotif () на 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

кінець закрити

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.