#shutdown #sleep #pmset

app scheduleoff

围绕 pmset schedule 的包装,以便轻松设置近期休眠和关机时间

1 个不稳定版本

0.1.0 2023年3月15日

#19#shutdown

MIT 许可证

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 的信息,我建议查看这篇教程

取消计划关机/睡眠

您有两个选择

  1. 等待 10 分钟倒计时对话框。
  2. 使用 pmset

对于选项 2,请参阅上面的链接教程,但您需要输入类似于以下内容:sudo pmset schedule cancel shutdown "03/13/2023 15:27:41"

sudo

您仍然需要输入密码才能使用 scheduleoff,因为它使用了 sudo。如果您觉得这很烦人,那么有(至少)两个选项

  1. 配置它,以便您可以使用 Touch ID 进行 sudo
  2. 让它如此设置,以至于 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