如何在 OS X 中关闭盖子时关闭应用程序

如何在 OS X 中关闭盖子时关闭应用程序

我有一台 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 进入睡眠状态,该文件就会始终被执行。

相关内容