![如何在 OS X 中关闭盖子时关闭应用程序](https://linux22.com/image/1375128/%E5%A6%82%E4%BD%95%E5%9C%A8%20OS%20X%20%E4%B8%AD%E5%85%B3%E9%97%AD%E7%9B%96%E5%AD%90%E6%97%B6%E5%85%B3%E9%97%AD%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F.png)
我有一台 MacBook Air。我经常使用 Microsoft 的 RDP 客户端连接到虚拟工作站。我需要在合上盖子时自动关闭此 RDP 会话(退出 RDP),然后 OS X 进入睡眠状态。
如何实现这一功能?
答案1
有几个工具可以让你拦截 OS X 的电源状态变化:
Sleep Watcher 安装
让我们用 Sleep Watcher 试试。从 Bernhard Baehr 的主页下载该工具并按照安装说明进行操作:假设您将下载的文件解压到桌面,从终端窗口调用以下命令:
sudo mkdir -p /usr/local/sbin /usr/local/share/man/man8
sudo cp ~/Desktop/sleepwatcher_2.2.1/sleepwatcher /usr/local/sbin
sudo cp ~/Desktop/sleepwatcher_2.2.1/sleepwatcher.8 /usr/local/share/man/man8
这将安装sleepwatcher
二进制文件和手册页。系统将提示您输入管理员密码。
创建睡眠脚本
现在,让我们创建一个名为的睡眠脚本~/.sleep
。它将包含机器进入睡眠状态时(即当盖子关闭时)运行的命令。
touch ~/.sleep
open -e !$
在此文件中,添加以下内容:
osascript -e 'tell application "Remote Desktop Connection" to quit'
这将通过 AppleScript 命令退出 Microsoft RDP 应用程序。您可以对任何应用程序执行此操作,只要您根据其标题更改名称即可。保存文件。现在我们需要使其可执行:
chmod +x ~/.sleep
测试睡眠脚本
现在通过首先启动 RDP 程序,然后在终端中运行以下命令来测试您的脚本:
/usr/local/sbin/sleepwatcher --verbose --sleep ~/.sleep
这不会输出任何内容,因此请让 RDP 和 Sleep Watcher 保持运行,然后合上 MacBook 的盖子。等待几秒钟,直到它真正进入睡眠状态。然后再次唤醒它。RDP 关闭了吗?太棒了!出了什么问题吗?查看命令的输出sleepwatcher
以获取有关失败位置的提示。
您现在可以按下终端来取消睡眠监测器CtrlC。
在后台运行脚本
为了让 Sleep Watcher 始终运行,您需要将其设为 LaunchDaemon。通过复制示例配置和rc
脚本创建一个新的配置文件。
sudo cp ~/Desktop/sleepwatcher_2.2.1/config/de.bernhard-baehr.sleepwatcher-20compatibility.plist /Library/LaunchDaemons/de.bernhard-baehr.sleepwatcher.plist
sudo cp ~/Desktop/sleepwatcher_2.2.1/config/rc.* /etc
现在使用以下命令加载配置文件launchd
:
sudo launchctl load /Library/LaunchDaemons/de.bernhard-baehr.sleepwatcher.plist
这就是您所需要的。现在,.sleep
只要您的 Mac 进入睡眠状态,该文件就会始终被执行。