Macos 电脑关机时将Macbook pro静音
我正在考虑使用Mac的applescript制作一个程序,在系统关闭时使系统静音Macos 电脑关机时将Macbook pro静音,macos,applescript,osx-yosemite,Macos,Applescript,Osx Yosemite,我正在考虑使用Mac的applescript制作一个程序,在系统关闭时使系统静音 虽然我是applescript新手,但我不知道如何使用IF语句来确定系统是否正在关闭。我在谷歌上搜索了一下,发现finder应用程序是“控制”关机的应用程序,但我不知道如何检查状态是否为“关机”。有谁能在这件事上帮助我吗?老实说,最好是制定一个确定性的解决方案。我的意思是,你制作了一个脚本: 使计算机静音 关闭它 然后,使用脚本并创建一个Automator服务,您可以将其分配给某个快捷方式,以便更轻松地使用它。
虽然我是applescript新手,但我不知道如何使用IF语句来确定系统是否正在关闭。我在谷歌上搜索了一下,发现finder应用程序是“控制”关机的应用程序,但我不知道如何检查状态是否为“关机”。有谁能在这件事上帮助我吗?老实说,最好是制定一个确定性的解决方案。我的意思是,你制作了一个脚本:
- 使计算机静音
- 关闭它
- AppleScript没有检测关闭/注销的直接机制
- 它确实有一个机制来创建应用程序,该机制可以对自己被退出做出反应
- 因此,您可以:
- 使用AppleScript创建一个保持打开状态的应用程序(
捆绑包),其中包含一个标准.app
处理程序,您可以在该处理程序中执行所需的操作(on quit
- 确保应用程序在登录时启动——在更简单的情况下,作为登录项启动(通过
,请参见下文),或者作为启动代理启动(请参见),具有更大的灵活性和复杂性系统首选项启动
- 使用AppleScript创建一个保持打开状态的应用程序(
说明:
- 打开
并打开一个新的脚本窗口脚本编辑器
- 粘贴以下代码:
#当应用程序退出时调用此标准处理程序。
辞职
#静音系统音量。
#!!请参见下面的警告。
设置输出静音时的音量
继续退出#向系统发出退出的信号
结束退出
- 将脚本另存为保持打开的应用程序:
- 使用
应用程序文件格式
- 检查
运行处理程序后保持打开状态
- 使用
- 打开
,将新保存的System Preferences>Users&Groups>Login Items
捆绑拖动到列表中,选中其旁边的复选框,使其隐藏*.app
- 从终端运行以下操作:
默认写入/full/path/to/newApp.app/Contents/Info.plist LSUIElement 1
注意:您也可以使用LSBackgroundOnly
,但是LSUIElement
的优点是,如果需要,您仍然可以显示UI元素,例如用于调试
重要:将新应用的完整路径替换为/full/path/to/newApp.app
;只有在Info.plist
文件中指定完整路径时,命令才会起作用
要进行测试,请以交互方式启动新应用程序,并确保未显示停靠图标。(您可以通过活动监视器退出该应用程序。
)
警告:如果意图抑制系统启动声音,在输出静音的情况下设置音量
有两个缺点:
- 如果在关机时碰巧插上了耳机,它将无法工作
- 您必须在启动时取消该卷的静音(但是,您可以在同一应用程序中的on
处理程序中执行此操作)on-run
nvram SystemAudioVolume=%80
,从而绕过上述缺点
您可以从上面的AppleScript应用程序中以管理员权限运行do shell脚本“nvram SystemAudioVolume=%80”用户名“someAdminUsername”密码“matchingAdminPassword”,但您必须硬编码密码,出于安全原因,不建议这样做
替代方法,通过com.apple.loginwindow使用系统范围的注销挂钩
在注销时运行脚本有一种不推荐使用的机制,但在OSX 10.10中仍然有效;如果没有直接的非推荐使用的等效机制,它可能会继续受到支持
请注意,您确实需要管理员权限:
sudo默认写com.apple.loginwindow LogoutHook
必须是可执行文件,如shell脚本;请注意,可执行文件是在根用户的上下文中运行的
如果您想静音启动声音,请从该脚本调用以下shell命令:
nvram SystemAudioVolume=%80#若要以交互方式尝试此操作,请在“sudo”前面加上前缀`
这将使声音静音,直到重新启动后,有效地静音启动声音,而不会保持静音
请注意,
nvram
命令需要root权限,根据定义,这些权限在通过com.apple.loginwindow
注销挂钩运行的脚本中有效;相反,要以交互方式尝试该命令,请使用sudo nvram SystemAudioVolume=%80
-否则,您将得到以下无用的错误消息:nvram:设置变量“SystemAudioVolume”时出错:(iokit/common)如果要使用@mklement0答案中提到的LogoutHook,则出现一般错误
您可以使用普通的Applescript命令在输出静音的情况下设置音量
您只需要将osascript shebang添加到Applescript文档的顶部
i、 e
然后将文件另存为appl
#!/usr/bin/osascript
set volume with output muted
/bin/chmod +x foo.applescript
sudo defaults write com.apple.loginwindow LogoutHook foo.applescript
set volume with output muted
tell application "finder"
shut down
end tell
sudo nano /Library/Scripts/sound-off.sh
#!/bin/bash
osascript -e ‘set volume output muted 1’
sudo nano /Library/Scripts/sound-on.sh
#!/bin/bash
osascript -e ‘set volume 4’
sudo chmod u+x /Library/Scripts/sound-off.sh
sudo chmod u+x /Library/Scripts/sound-on.sh
sudo defaults write com.apple.loginwindow LogoutHook /Library/Scripts/sound-off.sh
sudo defaults write com.apple.loginwindow LoginHook /Library/Scripts/sound-on.sh