阅读 829

macOS睡眠自动关闭蓝牙和Wi-Fi,唤醒自动打开。让你的macOS待机更省电

前言

macOS盖屏后,有时候还是保持蓝牙和Wi-Fi的连接,待机待着没电了?

如何让macOS盖屏后,自动关闭Wi-Fi和蓝牙,在唤醒时又自动开启蓝牙和Wi-Fi呢?

很简单,部署一个脚本,再合盖睡眠时候自动关闭蓝牙和Wi-Fi,在唤醒时候打开即可。

知识储备

其实,并不是什么高端的方法,主要是使用Homebrew实现,Homebrew主要有三个库:

  • brew:这个是Homebre最初的库,维护其他库。

  • Homebrew-core:Homebrew的核心库,大部分的软件、工具包都是由这个仓库进行安装。

  • Homebrew-cask:Homebrew的预编译库,部分软件,或者非主流版本,由这个仓库进行安装。

一般的主流第三方源,比如:阿里源、网易源和清华源等,都有上述三个库,但是其实还有其他库,有些第三方源没有。

比如:Homebrew-service库->github.com/Homebrew/ho…

这个库的作用很简单:通过launchctl,进而管理macOS的后台任务和开机任务。

launchctl

用过Linux的小伙伴,可能会知道Linux上的systemctl,使用这个工具,可以挂起后台任务,设置开机自启等等。

什么?你还不知道,或者不了解systemctl?没事,下次给大家介绍。(又挖一个坑~~)

launchctl使用有点复杂(可能是因为习惯了systemctl?)

使用说明书

当然,你也可以看官方文档:support.apple.com/zh-cn/guide…

但是我觉得,官方文档,写的就不是很详细和友好了。总的来说:

  • launchctl使用.plist文件作为配置文件,配置文件存放地址,参考下文表格。

  • launchctl实际上是用来管理launchd的。作用和systemctl类似。

文件夹用途
/系统/资源库/LaunchDaemonsApple 提供的系统守护进程
/系统/资源库/LaunchAgentsApple 提供的基于每个用户且所有用户适用的代理
/资源库/LaunchDaemons第三方系统守护进程
/资源库/LaunchAgents基于每个用户且所有用户适用的第三方代理
~/资源库/LaunchAgents仅适用于登录用户的第三方代理

有机会,和大家介绍介绍怎么手写;现在,我们可以使用Homebrew-service进行配置。

部署脚本

首先下载这个脚本到本地:SleepAndAutoBluetoothAndWifi

下载到本地并解压

脚本修改自:github.com/dreamncn/Sl…

你也可以使用Git克隆项目到本地,结果一样。

之后打开Terminal,使用cd命令进入解压好的文件夹内。

Opt1:Homebrew安装(推荐)

前文有讲解,Homebrew的Homebrew-service,使用Homebrew安装就是用Homebrew-service进行包管理:

我们进入终端内,运行脚本:

zsh install.sh 复制代码

运行脚本

之后就安装完成了。盖下屏幕。等5min后打开屏幕,看看在解锁前,状态栏上的Wi-Fi是否为关闭状态,是则为脚本启动成功。

Opt2:配置安装(不推荐)

相信还是有极少部分macOS用户是没安装Homebrew,这边提供手动安装的方式,但是不推荐。主要原因:

  • 配置安装,不方便管理包(尤其是卸载的时候)

  • macOS区分架构,配置安装需要区分

这边脚本里为半自动配置,未测试:

我们进入终端内,运行脚本:

zsh install-without-brew.sh 复制代码

之后就安装完成了。盖下屏幕。等5min后打开屏幕,看看在解锁前,状态栏上的Wi-Fi是否为关闭状态,是则为脚本启动成功。

你也可以手动配置.plist文件,其实就在项目内:

plist文件

底层原理

原理很简单,依赖两个工具包:

  • blueutil

  • Sleepwatcher

Sleepwatcher是两个自动脚本服务,分别是:

  • ~/.sleep

  • ~/.wakeup

也就是自动在macOS睡眠和唤醒执行的脚本。配合blueutil来实现对Wi-Fi和蓝牙的控制,实现macOS自动睡眠关闭Wi-Fi和蓝牙,唤醒打开。

如何卸载

运行uninstall.sh脚本即可。 或者手动删除相关文件:

Homebrew方法安装:

brew services stop sleepwatcher brew uninstall sleepwatcher brew uninstall blueutil cd ~ sudo rm -rf .sleep sudo rm -rf .wakeup 复制代码

非Homebrew方法安装:

sudo launchctl unload /Library/LaunchDaemons/de.bernhard-baehr.sleepwatcher-20compatibility-localuser.plist sudo launchctl kill sleepwatcher sudo rm -rf /Library/LaunchDaemons/de.bernhard-baehr.sleepwatcher-20compatibility-localuser.plist  sudo rm -rf /usr/local/sbin/sleepwatcher sudo rm -rf /usr/local/bin/blueutil sudo rm -rf /usr/local/share/man/man8/sleepwatcher.8 sudo rm -rf .sleep sudo rm -rf .wakeup 复制代码

END

这就是本次分享的内容了嗷。主要就是介绍这些。有机会,深度讲解讲解Linux上的systemctl,以及macOS上的launchctl

真不错,又挖坑了~~


作者:Mintimate
链接:https://juejin.cn/post/7057723273827581959


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐