Answers:
您可以创建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
设置“服务在[任何应用程序]中接收[无输入]”
保存服务。
在系统偏好设置中打开键盘快捷键,然后在“服务”下为您的服务设置
现在,任何新启动的应用程序都会选择快捷方式。
(注意:我对脚本进行了结构设计,以防止引发通知/窗口开始关闭时将发生的错误。
otifications /窗口编号为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中的Notification Center?
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