起因:
因为床头灯开关离太远开关不方便,所以我一直都是用桌面的显示器当床头灯来用,而电脑自动锁屏是有时间设置的,我设置的是十分钟,等我躺在床上要等十分钟显示器才会关闭,有时候我等不了这么久,如果手动锁屏,我就要抹黑上床了,怎么办呢?
思考:
看看有没有利用程序的办法来锁定屏幕。然后通过手机发送命令来远程锁定屏幕。
解决:
显然这种问题别人已经遇到过了
@Mecki 的回答在 macOS Mojave 10.14.6 上依旧可行。
接下来就是怎么远程发送命令了。我还是依靠我比较熟悉的http,在本地开一个http server来处理请求,验证请求采用 基于时间的一次性密码算法
那么手机端如何发送命令呢?写一个app吗?有点麻烦。我决定使用 telegram bot,因为我之前写的一款DDNS工具就使用过这个bot。
遇到的困难:
本地的http程序写好了,如何让他在 macOS 上开机自动运行并保持启动呢?
找了一圈资料,虽然不难,但是各说各话,不明所以。
我发现这个网站资料还是比较全面的说明,建议完整阅读: https://launchd.info
下面是我 plist 文件示例
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.example.app</string>
<key>ProgramArguments</key>
<array>
<string>/Users/your/app</string>
</array>
<key>KeepAlive</key>
<true/>
<key>StandardErrorPath</key>
<string>/Users/example/app.log</string>
<key>StandardOutPath</key>
<string>/Users/example/app.log</string>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/usr/bin:/bin:/usr/sbin:/sbin:/Users/your/gowork/bin</string>
</dict>
</dict>
</plist>
推荐阅读:
apple官方文档 Creating Launch Daemons and Agents