随着人们对自动化的需求越来越高,越来越多的 Mac 用户开始使用脚本来完成各种任务。而在这些任务中,设置锁屏界面上的信息是一件非常实用的事情,比如留下一些鼓励的话语,提醒自己带伞,或是放上一张漂亮的照片等等。今天,我将介绍如何使用自动化脚本来修改你的 Mac 锁屏界面信息。
在这篇文章中,我们将使用两个文件:一个 Bash 脚本和一个 cron 定时执行。Bash 脚本将从 Jinrishici API 中获取随机诗句和天气信息,并将它们格式化为字符串。然后我们将使用 cron 来启动该脚本,并将生成的字符串作为锁屏界面信息。
安装 jq
首先,我们需要安装一个称为 jq 的 JSON 解析器,它将帮助我们从 Jinrishici API 返回的 JSON 数据中提取所需的信息。你可以通过 Homebrew 来安装它,Homebrew 是一个 Mac 上的包管理器。在终端中输入以下命令来安装 jq:
brew install jq创建 set_welcome_message.sh 设置个性化信息
依赖
- 📜今日诗词-一言API 提供了获取随机诗词和天气的信息
- 🤏curl 一个常用的命令行工具,可以用于发送HTTP请求并获取响应数据
- 🕵️jq一个轻量级的命令行JSON处理器,可以用于解析、查询和转换JSON格式的数据
接下来,创建 /usr/local/bin/set_welcome_message.sh 文件,并将以下代码复制到文件中:
bash 脚本 /usr/local/bin/set_welcome_message.sh
#!/bin/bash
exec &>/usr/local/bin/set_welcome_message.log
set -x
# JINRISHICI API token
JINRISHICI_TOKEN="PCFIlf/WgXatH9QG/VWPQOdKzJgYpW1V"
# Get a random poem from JINRISHICI API
poem_info=$(/usr/bin/curl -s -H "X-User-Token: $JINRISHICI_TOKEN" 'https://v2.jinrishici.com/sentence' | /opt/homebrew/bin/jq -r '.data | "『\(.content)』——《\(.origin.title)》\(.origin.dynasty)·\(.origin.author)"' || echo "无法获取诗词内容")
# Get location and weather information
weather_info=$(/usr/bin/curl -s "https://v2.jinrishici.com/info" | /opt/homebrew/bin/jq -r '.data | "📌\(.region),☁️天气\(.weatherData.weather) \(.weatherData.temperature)℃,🧭\(.weatherData.windDirection)\(.weatherData.windPower)级,💨风速\(.weatherData.visibility)/h"' || echo "无法获取天气信息")
# Get current date and hour
current_hour=$(date +"%_H" | tr -d ' ')
# Set greeting message based on current time
if [ ${current_hour} -ge 0 ] && [ ${current_hour} -lt 6 ] || [ ${current_hour} -eq 23 ]; then
greeting="🌙 深夜了,亲爱的宝贝,早点睡觉哦~"
elif [ ${current_hour} -ge 6 ] && [ ${current_hour} -lt 12 ]; then
greeting="🌤 早上好,亲爱的宝贝,新的一天开始了!"
elif [ ${current_hour} -ge 12 ] && [ ${current_hour} -lt 18 ]; then
greeting="☀️ 下午好,亲爱的宝贝,休息一下吧~"
else
greeting="🍵 亲爱的宝贝,工作再忙,也要记得休息一会儿~"
fi
# Create login window text with the poem, author, and weather information
formatted_text="${greeting}\n${weather_info}\n${poem_info}"
echo ${formatted_text}
# Set login window text
defaults write /Library/Preferences/com.apple.loginwindow LoginwindowText "$formatted_text"
终端执行 sudo /usr/local/bin/set_welcome_message.sh,我们就可以使用快捷键 Control + Command + Q 快速锁定屏幕,查看效果了。
这里,我们设置了一个执行日志/usr/local/bin/set_welcome_message.log,我们可以查看执行失败的原因。
注意:我们使用了curl、jq,需要使用 which 获取绝对路径,然后替换脚本里的curl和jq。
which curl
which jq创建 com.set_welcome_message.plist 后台自动化执行脚本
关键点
- 后台执行脚本
- 使用root
关于后台执行脚本的几种方案
macOS 有很多后台执行脚本的方式,以下是其中的一些:
| 文件类型 | 存放位置 | 作用 |
| LaunchAgent | ~/Library/LaunchAgents/ | 当特定用户登录时,启动一些程序 |
| cron | /usr/lib/cron/tabs/ | 按照一定的时间周期性地运行程序 |
LaunchAgents 和 LaunchDaemons:这是 macOS 中最常用的后台脚本执行方式。它们是由系统启动,可以在后台运行,并在满足一些条件时自动运行脚本。LaunchAgents 用于当前用户的任务,而 LaunchDaemons 用于系统级别的任务。
cron:cron 是一个 Unix 和类 Unix 系统上的后台进程,用于定期执行任务。它可以通过命令行配置,也可以使用 GUI 应用程序进行配置。
Automator:Automator 是 macOS 上的一个自动化工具,可以创建自定义的工作流程并自动化执行各种任务。它支持许多不同的操作,并且可以与其他应用程序和脚本集成。
shell 脚本:使用 shell 脚本可以在 macOS 上执行各种自动化任务,包括文件处理、系统管理和数据转换等。
Python、Ruby、Perl 等脚本语言:macOS 默认安装了一些编程语言,如 Python、Ruby、Perl 等,这些语言可以用来编写脚本,执行各种自动化任务。
使用 cron 每分钟执行 bash 脚本
使用sudo crontab -e -u root编辑 cron 列表,添加0 * * * * /usr/local/bin/set_welcome_message.sh,这样,我们就可以每分钟执行一次。
总结
通过使用bash脚本和cron定时执行,我们可以很容易地自定义 macOS 的锁屏界面。这里,我们可以使用了 Jinrishici API 获取诗词和天气信息,并将它们放在登录窗口中,你也可以挖掘更多方法呈现个性化内容(比如:从公开图库获取图片并设置壁纸),为我们的 macOS 的使用带来更多乐趣和实用性。
