DDE 通过命令定时更换桌面壁纸和锁屏壁纸

背景

先前从 wallhaven 上抓了几千张图,想写个脚本 5 分钟更换一下桌面和锁屏壁纸

桌面壁纸命令更换已有相关资料,主要难点在锁屏壁纸的更换上

备份原有文件

/var/cache/image-blur 中新建一个 backup 文件夹,将里面所有图片移动到 backup

sudo mkdir -p /var/cache/image-blur/backup
sudo mv /var/cache/image-blur/* /var/cache/image-blur/backup
sudo rm -f /usr/share/wallpapers/deepin/desktop.jpg
sudo rm -f /usr/share/backgrounds/deepin/desktop.jpg

脚本

set.py

随机选择一张图片,设置成桌面壁纸脚本

import os
import random

path = '/home/limstash/Pictures/Wallpaper/wallhaven' //images path
filename = random.sample(os.listdir(path), 1)

image = path + "/" + filename[0]
os.system('gsettings set com.deepin.wrap.gnome.desktop.background picture-uri '+image+'')

print(image)

run.sh

cron 执行脚本 (需要 root 权限)

#!/bin/bash

declare -x DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus"

rm -f /var/cache/image-blur/*

image=`sudo -u limstash -E python3 /home/limstash/Pictures/Wallpaper/scripts/set.py`

cp -f $image /usr/share/wallpapers/deepin/desktop.jpg
cp -f $image /usr/share/backgrounds/deepin/desktop.jpg

注意,其中的 DBUS_SESSION_BUS_ADDRESS 需要按需更改
可以打开终端,输入 declare -x 查询对应的值

sudo 的执行用户同样也需更改成对应用户

定时自动执行

确保 cron 已经安装

sudo crontab -e
*/5 * * * * /home/limstash/Pictures/Wallpaper/scripts/run.sh