我想使用键盘快捷键在通知中心切换“请勿打扰”。
我正在使用BetterTouchTool提供一些额外的键盘快捷键,但它不支持在默认选项中启用/禁用通知。
它具有执行终端命令的选项,因此我在这里问如何从终端启用/禁用“请勿打扰”?
我在带有Automator的OS X Mountain Lion中发现了Schedule'Do Not Disturb'(请勿打扰),我尝试运行命令,但似乎不起作用。
我想使用键盘快捷键在通知中心切换“请勿打扰”。
我正在使用BetterTouchTool提供一些额外的键盘快捷键,但它不支持在默认选项中启用/禁用通知。
它具有执行终端命令的选项,因此我在这里问如何从终端启用/禁用“请勿打扰”?
我在带有Automator的OS X Mountain Lion中发现了Schedule'Do Not Disturb'(请勿打扰),我尝试运行命令,但似乎不起作用。
Answers:
您可以在系统偏好设置->键盘->快捷方式->任务控制中为其设置全局键盘快捷键
或者,如果您绝对希望从命令行使用它,可以使用applescript来执行此操作(假设您设置了要使用的键盘快捷键)cmdshiftoptctrlD。
请注意,您仍必须在“系统偏好设置”中设置键盘命令,此命令才能起作用。
将以下脚本放入文件中,例如〜/ dnd.applescript
ignoring application responses
tell application "System Events" to keystroke "D" using {command down, shift down, option down, control down}
end ignoring
现在,您可以从命令行运行osascript ~/dnd.applescript
以切换DND设置。
屏幕截图:
osascript
。
从OS X 10.10.3开始,此AppleScript将切换“请勿打扰”。无需键盘快捷键:
tell application "System Events" to tell process "SystemUIServer"
key down option
click menu bar item 1 of menu bar 2
key up option
end tell
您可以将其保存为AppleScript并使用来从终端运行它osascript DoNotDisturb.applescript
,也可以通过将其包装在Heredoc中,将其包含在Bash脚本中,如下所示:
#!/bin/bash
osascript <<EOD
tell application "System Events" to tell process "SystemUIServer"
key down option
click menu bar item 1 of menu bar 2
key up option
end tell
EOD
DoNotDisturb
在按住Option
键的同时单击菜单栏中最右边的图块进行切换。
您可以使用defaults命令的参数来简化razvanz提供的答案-currentHost
。
启用请勿打扰:
defaults -currentHost write ~/Library/Preferences/ByHost/com.apple.notificationcenterui doNotDisturb -boolean true defaults -currentHost write ~/Library/Preferences/ByHost/com.apple.notificationcenterui doNotDisturbDate -date "`date -u +\"%Y-%m-%d %H:%M:%S +0000\"`" killall NotificationCenter
(通过https://heyfocus.com/blog/enabling-do-not-disturb-mode/)
禁用请勿打扰:
defaults -currentHost write ~/Library/Preferences/ByHost/com.apple.notificationcenterui doNotDisturb -boolean false killall NotificationCenter
现在,您可以轻松地将其包装为脚本,以启用或禁用“请勿打扰”,该脚本可以在任何人的计算机上运行,而不受系统偏好设置的影响。这是如何执行此操作的示例:
#!/bin/bash
set -eou pipefail
# From https://heyfocus.com/enabling-do-not-disturb-mode and
# /apple/145487
if [[ $(defaults -currentHost read ~/Library/Preferences/ByHost/com.apple.notificationcenterui doNotDisturb) -eq 0 ]]; then
defaults -currentHost write ~/Library/Preferences/ByHost/com.apple.notificationcenterui doNotDisturb -boolean true
defaults -currentHost write ~/Library/Preferences/ByHost/com.apple.notificationcenterui doNotDisturbDate -date "`date -u +\"%Y-%m-%d %H:%M:%S +000\"`"
killall NotificationCenter
echo "Do Not Disturb is enabled. Run $0 to turn it off (OS X will turn it off automatically tomorrow)."
else
defaults -currentHost write ~/Library/Preferences/ByHost/com.apple.notificationcenterui doNotDisturb -boolean false
killall NotificationCenter
echo "Do Not Disturb is disabled. Run $0 to turn it on again."
fi
资料来源:https : //gist.github.com/ryangreenberg/5267f68a8e7b07ea66370b4eb5580ab9
基于James和Zsolt的回答,我创建了一些脚本来打开或关闭(而不是切换)DND状态。他们也不需要任何键绑定或计算机GUID即可工作。
重要说明:请注意,首次运行这些脚本可能需要运行脚本的应用程序的可访问性权限。如果您未在请求中授予许可,则alt/ option按钮将对系统保持按下状态,您需要注销然后重新登录以“取消按下”它。AppleScript先前的答案也是如此。如果脚本被编辑,则将需要撤消并重新授予权限。使用以下方式授予权限:
System Preferences > Security & Privacy > Accessibility > Add your app
对于macOS Sierra和High Sierra,它是menu bar 1
:
开启免打扰ON(禁用通知):
if [[ $(plutil -convert xml1 -o - ~/Library/Preferences/ByHost/com.apple.notificationcenterui.*.plist | grep false) ]]; then
osascript <<EOD
tell application "System Events" to tell process "SystemUIServer"
key down option
click menu bar item 1 of menu bar 1
key up option
end tell
EOD
fi
关闭请勿打扰(启用通知):
if ! [[ $(plutil -convert xml1 -o - ~/Library/Preferences/ByHost/com.apple.notificationcenterui.*.plist | grep false) ]]; then
osascript <<EOD
tell application "System Events" to tell process "SystemUIServer"
key down option
click menu bar item 1 of menu bar 1
key up option
end tell
EOD
fi
对于早期版本的macOS,它是menu bar 2
:
开启免打扰ON(禁用通知):
if [[ $(plutil -convert xml1 -o - ~/Library/Preferences/ByHost/com.apple.notificationcenterui.*.plist | grep false) ]]; then
osascript <<EOD
tell application "System Events" to tell process "SystemUIServer"
key down option
click menu bar item 1 of menu bar 2
key up option
end tell
EOD
fi
关闭请勿打扰(启用通知):
if ! [[ $(plutil -convert xml1 -o - ~/Library/Preferences/ByHost/com.apple.notificationcenterui.*.plist | grep false) ]]; then
osascript <<EOD
tell application "System Events" to tell process "SystemUIServer"
key down option
click menu bar item 1 of menu bar 2
key up option
end tell
EOD
fi
只是要补充一点,您还可以从命令行安排“请勿打扰”,以便每天在设置的时间激活/停用。
设置启用免打扰的时间:
defaults -currentHost write ~/Library/Preferences/ByHost/com.apple.notificationcenterui dndStart -integer <start_time_in_minutes>
设置禁用 DND的时间:
defaults -currentHost write ~/Library/Preferences/ByHost/com.apple.notificationcenterui dndEnd -integer <end_time_in_minutes>
注意:用<start_time_in_minutes>
和替换<end_time_in_minutes>
为所需的值(如下所述)。
要将DND安排在每天的15:00开始并在18:30结束,请执行以下操作:
转换15:00和18:30至分钟得到的价值<start_time_in_minutes>
和<end_time_in_minutes>
。也就是说,将小时数乘以60,然后加上分钟数。
对于15:00将是:15 * 60 + 0 = 900
对于18:30将是:18 * 60 + 30 = 1110
。给我们下面的命令:
defaults -currentHost write ~/Library/Preferences/ByHost/com.apple.notificationcenterui dndStart -integer 900
defaults -currentHost write ~/Library/Preferences/ByHost/com.apple.notificationcenterui dndEnd -integer 1110
killall NotificationCenter # 'resets' Notificatio Center so that it reads the DND change
在詹姆斯的回答的基础上,我也想指出您还可以确定它是打开还是关闭。因此,以下内容将其关闭,如果已经关闭,则不执行任何操作:
if [[ $(plutil -convert xml1 -o - ~/Library/Preferences/ByHost/com.apple.notificationcenterui.000-000-000-000.plist | grep false) ]]; then
osascript <<EOD
tell application "System Events" to tell process "SystemUIServer"
key down option
click menu bar item 1 of menu bar 2
key up option
end tell
EOD
fi
您必须将自己的计算机GUID替换为文件名(那里只有一个文件,因此很容易找出来)