Ответы:
Вы можете создать службу 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
Не совсем то, что вы просите:
Вы можете ограничить время, отображаемое для типа баннеров, с помощью
Терминал и вставьте в следующее
defaults write com.apple.notificationcenterui bannerTime #
с заменой знака # на количество секунд, в течение которых вы хотите, чтобы уведомления о баннере появлялись, затем выходили из системы и снова включались.
Для восстановления оригинальной функции (5 секунд) используйте defaults delete com.apple.notificationcenterui bannerTime
Я знаю, что ты сказал нет, но ты мог цикл Уведомление вкл / выкл со скриптом и назначение ему сочетания клавиш. Временно отключить Центр уведомлений в Mountain Lion из командной строки?
Оригинальный скрипт от 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
конец closeNotif