当你离开 Mac 时,用自动化脚本让你的锁屏界面变得更有趣 🚀💻

8,104 阅读4分钟

随着人们对自动化的需求越来越高,越来越多的 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 设置个性化信息

依赖

  1. 📜今日诗词-一言API 提供了获取随机诗词和天气的信息
  2. 🤏curl 一个常用的命令行工具,可以用于发送HTTP请求并获取响应数据
  3. 🕵️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,我们可以查看执行失败的原因。

创建 com.set_welcome_message.plist 后台自动化执行脚本

关键点

  1. 后台执行脚本
  2. 使用root

关于后台执行脚本的几种方案

macOS 有很多后台执行脚本的方式,以下是其中的一些:

文件类型存放位置作用
LaunchAgent~/Library/LaunchAgents/当特定用户登录时,启动一些程序
LaunchDaemon/Library/LaunchDaemons/系统启动时启动一些程序
StartupItem/Library/StartupItems/ 和 /System/Library/StartupItems/系统启动时启动一些程序
cron/usr/lib/cron/tabs/按照一定的时间周期性地运行程序
at/usr/lib/at/在指定的时间运行程序
  1. LaunchAgents 和 LaunchDaemons:这是 macOS 中最常用的后台脚本执行方式。它们是由系统启动,可以在后台运行,并在满足一些条件时自动运行脚本。LaunchAgents 用于当前用户的任务,而 LaunchDaemons 用于系统级别的任务。

  2. cron:cron 是一个 Unix 和类 Unix 系统上的后台进程,用于定期执行任务。它可以通过命令行配置,也可以使用 GUI 应用程序进行配置。

  3. Automator:Automator 是 macOS 上的一个自动化工具,可以创建自定义的工作流程并自动化执行各种任务。它支持许多不同的操作,并且可以与其他应用程序和脚本集成。

  4. shell 脚本:使用 shell 脚本可以在 macOS 上执行各种自动化任务,包括文件处理、系统管理和数据转换等。

  5. 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 的使用带来更多乐趣和实用性。