解决了床头灯开关离太远导致开关困难的问题

起因:

因为床头灯开关离太远开关不方便,所以我一直都是用桌面的显示器当床头灯来用,而电脑自动锁屏是有时间设置的,我设置的是十分钟,等我躺在床上要等十分钟显示器才会关闭,有时候我等不了这么久,如果手动锁屏,我就要抹黑上床了,怎么办呢?

思考:

看看有没有利用程序的办法来锁定屏幕。然后通过手机发送命令来远程锁定屏幕。

解决:

显然这种问题别人已经遇到过了

Lock screen by API in macOS

@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

演示

Tag:botlifehack Published under (CC) BY-NC-SA
comments powered by Disqus