1 个不稳定版本
0.1.0 | 2023年3月15日 |
---|
#19 在 #shutdown
11KB
83 行
scheduleoff
围绕 pmset schedule
的包装,以便轻松设置近期休眠和关机时间。
动机
随着 macOS Ventura 的推出,苹果惊人地决定从电池首选项面板中移除通过便捷的 UI 来安排休眠、关机或重启的功能,而是指示用户 使用终端。
我经常喜欢在睡前安排我的 Mac 在大约一个小时后关机,以便在睡觉时有背景音乐。我不想在睡觉时进行日期时间计算(或者实际上任何时候),也不想在终端中打开,也不想发出 sudo
命令并输入我的密码,也不想在脑海中记住 pmset
的名称,更不用说它的语法了。
昨晚,我打开了终端并运行了以下命令
sudopmset schedule shutdown"$(date -v+50M'+%D %T')"
以设置 50 分钟后的关机。正是苹果用户友好的可靠性让我一直回来。
scheduleoff
做什么
与其键入上面看到的这堆废话,我写了 scheduleoff
,作为它的包装,简化了上面的调用为
scheduleoff shutdown50
额外细节
如果你使用了苹果移除的旧界面,你会记得实际上有一个 10 分钟倒计时对话框在预定时间弹出,让你选择取消或立即继续。 pmset
,因此 scheduleoff
,也有这个功能。
为什么叫 scheduleoff
?
好吧,我过去几天一直在使用 pmset
,仍然记不住它的名字。似乎有一个比赛,从命令行工具中删除尽可能多的字符,这在现代世界中的自动补全似乎已经过时了。它应该安排东西,所以我想到“schedule”加上什么,它只处理休眠和关机的启动,所以我想到,“off”。我想我会想,“它是‘schedule’加上什么,对吧?”然后在我的终端中键入“sch[TAB]”,然后暂停,然后“[TAB][TAB]”以查看以“sch”开头的所有内容弹出,然后看到“scheduleoff”,键入“sched[TAB]”,然后它就会工作(对我而言)。
用法
scheduleoff
的预期用例是近期的一次性关机或休眠安排。因此,唯一的选择是
scheduleoff shutdownMINUTES
scheduleoff sleepMINUTES
其中 MINUTES
代表一些分钟数,例如 scheduleoff sleep 90
。
MINUTES
必须大于 0,因为如果它是 0,那么你的计划时间将因为已经过去而被 pmset
错过。
对于旧计划用户界面可以处理的任何其他方面,您需要找到其他工具或使用 pmset
。关于如何使用 pmset
的信息,我建议查看这篇教程。
取消计划关机/睡眠
您有两个选择
- 等待 10 分钟倒计时对话框。
- 使用
pmset
对于选项 2,请参阅上面的链接教程,但您需要输入类似于以下内容:sudo pmset schedule cancel shutdown "03/13/2023 15:27:41"
。
sudo
您仍然需要输入密码才能使用 scheduleoff
,因为它使用了 sudo
。如果您觉得这很烦人,那么有(至少)两个选项
- 配置它,以便您可以使用 Touch ID 进行
sudo
。 - 让它如此设置,以至于
sudo pmset
不需要密码。
我选择了选项 2。以下是我所做事情的描述,尽管我建议您 阅读其他资源以熟悉过程,因为出错会导致不良后果。
无密码 sudo
概述
这相当于使用添加了以下行的与 sudo
相关的文件进行自定义
swpease ALL = (root) NOPASSWD: /usr/bin/pmset
您需要将 "swpease" 替换为您自己的用户名。如果您不确定,可以在终端中使用 whoami
。我想您也可以使用 which pmset
验证 pmset
是否在相同的位置。
要将此行添加到您应该添加此行的文件中,请使用 sudo visudo
,这将进入文件的 vim
编辑器(您在开始之前应该知道如何使用 vim
)。这是 极其重要的,不要犯错误。从 visudo
文档中
visudo 在编辑后解析 sudoers 文件,如果存在语法错误,则不会保存更改。在发现错误后,visudo 将打印出错误发生的行号(s)的消息,并且用户将收到“现在怎么办?”提示。此时,用户可以输入 'e' 重新编辑 sudoers 文件,'x' 退出而不保存更改,或者 'Q' 退出并保存更改。应该非常小心地使用 'Q' 选项,因为如果 visudo 认为存在语法错误,sudo 也会,这样直到错误修复之前,没有人可以再次运行 sudo。如果在检测到语法错误后输入 'e' 编辑 sudoers 文件,光标将放置在发生错误的行上(如果编辑器支持此功能)。
资源
依赖关系
~1.2–1.8MB
~34K SLoC