无名先生 发表于 10 小时前

如何在Termux里实现自动更换本地壁纸

关于Termux的基础使用教程,推荐国光的文章通俗易懂,可以看点基础的就行,软件下载链接在最下面。
Termux使用教程
Termux-api使用教程

进入主题,啰嗦偏小白向。
必要权限:储存空间,自启动,电量优化白名单,壁纸服务。

1.打开Termux,日常检查更新(如果没有飞机请看上面教程自行更换国内源),中间确认无脑输y确认就是了。

termux-setup-storage
pkg upgrade
pkg update


2.安装vim或者nano以及,termux-api包(包是包,请确认软件也必须有安装),y确认安装。

pkg in vim
pkg in nano
pkg in termux-api


3.直接编辑文件,在终端输入
nano wallpaper.sh
或者vim,vim进入后需要先按i才能编辑,这时候不推荐用vim,代码里有一个注释,粘贴进去后面就一直有。
vim wallpaper.sh
进入编辑页面,输入(例子):

#!/data/data/com.termux/files/usr/bin/bash
b=$(ls "/storage/emulated/0/壁纸" | shuf -n 1)
absolute_path=$(realpath /storage/emulated/0/壁纸/$b)
termux-wallpaper -f "$absolute_path"

这段代码表示随机一个sd卡/壁纸目录下的一个文件,你可以自己更改0/后面的(两处),改成自己的目录,注意这段代码不严谨,没有判断是否是图片的命令,所以目录里只能放壁纸图片,是我自己固定日用的。
更严谨简单点的代码,只更改变量WALLPAPER_DIR就行了。

#!/data/data/com.termux/files/usr/bin/bash
#只更改WALLPAPER_DIR就行了
WALLPAPER_DIR="/storage/emulated/0/壁纸"
if [ ! -d "$WALLPAPER_DIR" ]; then
echo "错误:找不到壁纸目录: $WALLPAPER_DIR" >&2
exit 1
fi
if [ ! -r "$WALLPAPER_DIR" ]; then
echo "错误:无法读取壁纸目录: $WALLPAPER_DIR" >&2
exit 1
fi
#    -maxdepth 1只查找当前目录,如果需要查找子目录就将-maxdepth 1删掉。
selected_file=$(find "$WALLPAPER_DIR" -maxdepth 1 -type f \
\( -iname '*.jpg' -o -iname '*.jpeg' -o -iname '*.png' -o -iname '*.bmp' -o -iname '*.webp' \) \
| shuf -n 1)
if [ -z "$selected_file" ]; then
echo "错误:在目录 '$WALLPAPER_DIR' 中没有找到合适的图片文件。" >&2
exit 1
fi
#使用 'termux-wallpaper' 命令设置壁纸
termux-wallpaper -f "$selected_file"

termux-wallpaper -f "目录" :这是一个设置壁纸的命令。
nano按ctrl+x保存,然后再按y,再回车
vim按ecs退出编辑,输入英文的冒号:输入wq回车保存(q!强制退出)。

4.给执行权限
chmod +x wallpaper.sh
手动测试
bash wallpaper.sh

5.安装 Cronie 和 Termux Services
Termux 使用 cronie 作为 cron 的实现,并且推荐使用 termux-services 来管理后台服务(如 cron 守护进程 crond)。
pkg install cronie termux-services

6.启用并启动 Cron 服务
使用 termux-services 来启用并立即启动 crond 服务:

sv-enable crond
sv up crond

可以使用:sv status crond 来检查服务是否正在运行(应该显示 run: crond…)
sv status crond

7.编辑 Crontab 添加定时任务
运行 crontab -e 命令来编辑当前用户的 crontab 文件。
crontab -e
添加任务:

*/20 * * * * bash $HOME/wallpaper.sh

*/20: 代表“每隔 20 分钟”(在每小时的第 0, 20, 40 分钟执行)。
* * * *: 代表“每小时、每天、每月、每周的每一天”。
bash: 指定使用 bash 来执行脚本(即使脚本内部有解释器,显式指定通常更可靠)。
$HOME/wallpaper.sh: 要执行的脚本路径。
8.(可选推荐)添加日志记录: 方便调试,最好将脚本的输出重定向到一个日志文件。修改上面的行如下:
示例:
*/20 * * * * bash $HOME/wallpaper.sh >> $HOME/log.log 2>&1
将标准输出和标准错误输出都重定向输出到log.log

(可选)输出时间和壁纸路径,在代码第二行添加

echo "$(date +'%Y-%m-%d %H:%M:S')"

在代码最后一行添加
echo "$absolute_path"

或者
echo "$selected_file"

这样可以在log.log里看到什么时间运行,以及壁纸路径。


9.(题外)通过url链接设置壁纸,有壁纸api的可以试试,或者抓取哪个网站的,主要是看是不是自己喜欢的壁纸吧。
termux-wallpaper-u "壁纸url链接"


!!!!!!END!!!!!!



软件下载链接(可能需要魔法):
Termux下载地址 个人推荐正式版
Termux-api下载地址 必须的

天天的鸟蛋蛋 发表于 10 小时前

有趣的小知识。 感谢分享。
页: [1]
查看完整版本: 如何在Termux里实现自动更换本地壁纸