背景
用mac的人都知道,平常都不怎么喜欢关机,一般都是下班后直接电脑合盖走人,上班后打开盖直接搬砖,主打一个简单省事儿,但是有个蛋疼的问题就是,在电脑合盖后,电脑只是进入了睡眠模式,mac在睡眠模式下是不会关闭蓝牙的,这样就会发生当我们下班了上地铁上想打开耳机连手机刷会儿抖音B站时,发现mac抢先一步先自动连接上了耳机,导致手机没有办法连接耳机了,只能被迫要不打开电脑关闭蓝牙,要不就重新适配一下耳机,强行断开与电脑的连接,重新连接耳机,就比较蛋疼
所以就想有没有一种办法在电脑合盖时,自动关闭蓝牙,带你呢打开盖时,自动打开蓝牙,这样就不会有以上的烦恼了。
在网上搜了下教程,可以通过sleepwatcher+blueutil的方式实现这个需求,记录如下:
步骤
1、安装sleepwatcher
使用brew的方式安装,正常mac自带brew,如找不到命令,请自行安装
brew install sleepwatcher
2、自启动设置
需要加入自启动,这样方便电脑开机时,自动运行该服务,无需手动启动
brew services start sleepwatch
3、检查进程启动状态
ps -ef|grep sleepwatcher
可以看到进程已经启动,并且-s -w分别制定了 在睡眠状态(-s)下执行的文件和在唤醒状态(-w)下执行的文件,分别是用户根目录下的.sleep 和.wake文件;
如下图
4、blueutil安装
通过brew的方式安装blueutil,这个主要是来控制蓝牙的关闭和开启的
brew install blueutil
也可以通过 github 的方式下载blueutil源码包自行编译,具体编译过程可参考blueutil的readme文档,也很简单
5、.sleep和.wake编写
接下来可以通过编写.sleep和.wake 文件来做我们想做的事儿了,这里我们来实现控制蓝牙的开关 分别编写.sleep 和.wake文件,进入用户根目录,查看目录下是否存在.sleep 和.wake文件,如果不存在,请自行创建,创建完成后,设置权限为可执行权限
touch ~/.sleep
touch ~/.wake
chmod -x ~/.sleep
chmod -x ~/.wake
分别编写.sleep 和.wake文件,内容如下 .sleep文件:
/opt/homebrew/Cellar/blueutil/2.9.1/bin/blueutil -p 0
.wake文件:
/opt/homebrew/Cellar/blueutil/2.9.1/bin/blueutil -p 1
6、测试
接下来可以模拟测试,耳机连接蓝牙,合盖,确认是否耳机断开连接,
然后打开电脑,查看电脑状态,是否蓝牙已开启
7. 关闭wifi
当然,我们可以在文件里做一些别的事儿,比如在mac睡眠或者唤醒时关闭蓝牙的同时也关闭wifi,那么可以分别在对应的文件里填如下命令 .sleep文件:
networksetup -setairportpower en0 off
.wake文件:
until networksetup -getairportpower en0 | grep On > /dev/null
do
networksetup -setairportpower en0 on
sleep 1
done
/opt
附一份完整的文件
.sleep
## 关闭wifi
networksetup -setairportpower en0 off
## 关闭蓝牙
/opt/homebrew/Cellar/blueutil/2.9.1/bin/blueutil -p 0
.wake
## 打开wifi
until networksetup -getairportpower en0 | grep On > /dev/null
do
networksetup -setairportpower en0 on
sleep 1
done
## 打开蓝牙
/opt/homebrew/Cellar/blueutil/2.9.1/bin/blueutil -p 1
收尾,感谢阅读~