Linux 定时壁纸从零到一:dynamic-wallpaper 安装、自动切换与避坑全指南 📅 2026/8/15 17:37:50 Linux 定时壁纸从零到一dynamic-wallpaper 安装、自动切换与避坑全指南【免费下载链接】dynamic-wallpaperA simple bash script to set wallpapers according to current time, using cron job scheduler.项目地址: https://gitcode.com/gh_mirrors/dy/dynamic-wallpaper你有没有想过让桌面壁纸像人的一天一样有作息清晨是柔和的光正午是明亮的蓝入夜变成深邃的星空。dynamic-wallpaper就是这样一个轻量级工具——它用纯 bash 脚本配合 cron 任务调度器根据当前时间自动更换壁纸全程不占资源、不装图形界面非常适合 Linux 新手快速体验随时间呼吸的桌面。这篇文章会带你从零走完整个流程装依赖、跑起来、配置自动切换再把新手最容易踩的坑一次讲透。一个脚本如何读懂时间dwall 的工作原理先别急着敲命令花 30 秒搞清楚它为什么能自动换壁纸后面排错会省很多事。dwall 的核心逻辑其实非常简单项目里的每一套壁纸风格都按0 到 23 编号正好对应一天 24 个小时运行脚本时它执行date %k拿到当前小时数比如现在是下午 3 点就得到15接着去/usr/share/dynamic-wallpaper/images/风格/15.jpg找到对应图片并设置到桌面但脚本只在你运行它的那一刻生效所以需要一个定时闹钟来反复叫醒它——这就是 cron 的职责。一句话总结dwall 负责选对图cron 负责到点执行两者缺一不可。这也解释了为什么文章后面你会反复看到这两个词同时出现。同样是 aurora 风格深夜时桌面会切换到这张紫绿交织的极光画面随真实时间流动安装前先补齐三件套feh、xrandr 与 crondwall 启动时会在后台做一次体检检查feh、xrandr、crontab三个命令是否可用缺任何一个都会直接报错退出。所以最稳妥的顺序是先把依赖装齐再装脚本本身。# Debian / Ubuntu 系 sudo apt install feh x11-xserver-utils cron # Fedora / RHEL 系 sudo dnf install feh xorg-x11-server-utils cronie # Arch Linux 系 sudo pacman -S feh xorg-xrandr cronie为什么是这三个feh负责在窗口管理器下真正把图片铺到桌面xrandr用于多显示器场景下定位屏幕XFCE 桌面尤其依赖它cron则是定时任务的执行引擎。装完之后把仓库克隆到本地并运行安装脚本git clone https://gitcode.com/gh_mirrors/dy/dynamic-wallpaper cd dynamic-wallpaper chmod x install.sh ./install.sh安装脚本会做两件事把images目录和dwall.sh复制到/usr/share/dynamic-wallpaper同时在/usr/bin下创建名为dwall的软链接。所以装好后你可以在任何位置直接敲dwall命令。提示想先试穿再决定买不买仓库里的test.sh可以直接在当前目录运行效果和正式版完全一致适合装之前先看看各风格长什么样。第一次运行从二十多套风格里挑一个安装完成后先看看这个工具能做什么dwall -h输出里会列出全部可用风格aurora、beach、bitday、chihuahuan、cliffs、colony、desert、earth、exodus、factory、firewatch、forest、gradient、home、island、lake、lakeside、market、mojave、moon、mountains、room、sahara、street、tokyo……既有 5K 超清实拍也有像素风和极简渐变风格跨度很大。选定之后用-s参数套用dwall -s beach # 切换到海滩风格 dwall -s mojave # 切换到极简沙漠风格如果风格名拼写有误脚本会提示Invalid style name并退出——这也是一种防呆设计避免你误操作改坏壁纸。beach 风格白天的画面金黄沙滩配碧蓝海水下午的桌面就是这种明快的夏日感顺便提一句如果你装了 pywal 并希望壁纸配色同步影响终端、状态栏等其他应用可以加-p参数dwall -p -s sahara让壁纸按时切换cron 定时任务配置详解手动运行只能换一次真正的动态要靠 cron 撑起来。配置分三步第一步确认 cron 服务活着。不同发行版服务名略有差异Arch 系是croniesystemctl status cronie如果没在运行启动并设置开机自启sudo systemctl enable cronie --now第二步打开当前用户的定时任务表export EDITORvim crontab -e第三步追加一行每小时整点执行一次的任务0 * * * * /usr/bin/dwall -s firewatch为什么是0 * * * *这五个字段从左到右分别是分钟、小时、日、月、周所以它表示每个小时的整点都跑一次 dwall恰好和壁纸按小时编号的设计对应。写完保存后用crontab -l检查任务是否写入成功。想要换风格也很简单删除旧行再写新行即可。定时任务明明存在壁纸却纹丝不动先查环境变量这是最典型的手动正常、自动失效场景你在终端里敲dwall -s xxx一切正常可 cron 一到点就静默失败。原因在于cron 运行在完全独立的环境中它不认识你的显示器、也不知道该把画面送到哪。打个比方dwall 就像一位外卖骑手需要收货地址才能把餐送到。你在图形会话里登录时系统已经悄悄把地址DISPLAY、XAUTHORITY、DBUS_SESSION_BUS_ADDRESS等塞给了终端而 cron 是后台调度员什么都没给骑手。解决方案有两种任选其一方案 A把环境变量写进 cron 任务行。先用echo $DISPLAY查看当前显示编号通常为:0再补全任务0 * * * * env DISPLAY:0 DBUS_SESSION_BUS_ADDRESSunix:path/run/user/1000/bus /usr/bin/dwall -s beach方案 B做一个包装脚本把地址预装好。创建/usr/local/bin/dwall-wrapper.sh#!/bin/bash export DISPLAY:0 export XAUTHORITY$HOME/.Xauthority dwall -s beach给脚本加执行权限后cron 任务就只写一句0 * * * * /usr/local/bin/dwall-wrapper.sh注意DISPLAY在多显示器或远程登录环境下可能不是:0务必以echo $DISPLAY的实际输出为准照抄别人的配置往往会踩坑。Wayland 会话下的特殊处理靠 oguri 中转如果你用的是 Wayland 合成器如 sway、hyprland情况会更特殊feh这类基于 X11 的工具在 Wayland 下基本失效。dwall 对此的应对方案是借助oguri这个壁纸守护进程来中转。安装并启动 oguriArch 系可通过 AUR 安装oguri-gitogurictl start然后在 cron 里通过 oguri 的命令行接口设置壁纸。如果你原本用的是 sway记得先停掉占着壁纸位的swaybg否则画面会被它盖住pkill swaybg提示dwall 在 Wayland 下运行时会主动检查 oguri 进程是否存在如果没启动会直接提示你daemon is not running这时候先ogurictl start就对了。把生活照变成每小时自动切换的私人壁纸dwall 也完全支持自定义壁纸集步骤很简单准备一组图片支持 jpg / png按0.jpg、1.jpg……23.jpg的规则重命名对应一天 24 个小时图片不够 24 张时可以用软链接补齐在/usr/share/dynamic-wallpaper/images下新建一个目录比如mypics把图片放进去运行dwall -s mypics你的私人动态壁纸就上线了。如果你手上是.heic格式的壁纸比如从壁纸社区下载的需要先转换成 jpg 再使用# 先安装转换工具 sudo apt install libheif-examples # Debian/Ubuntu sudo pacman -S libheif # Arch # 批量转换当前目录下的 heic 文件 for file in *.heic; do heif-convert $file ${file/%.heic/.jpg}; done写在最后两个让体验更完整的小习惯最后分享两个锦上添花的用法都很简单但很实用开机自动恢复壁纸把dwall -s 你的风格 写进窗口管理器的自启动文件或追加到~/.bashrc登录后壁纸立刻回到正确的时段画面当成电子相册轮播如果你不想按时间换图也可以把 cron 改成每 15 分钟或每小时执行一次让喜欢的照片轮流登场。到这里你已经完整掌握了 dynamic-wallpaper 的安装、自动化与排错三板斧。剩下的乐趣就是慢慢逛那 20 多套风格挑一套和你的桌面气质最搭的。遇到文中没覆盖的情况翻翻仓库里的 README 和脚本注释往往能找到答案——毕竟它本质上就是一个读得懂的 bash 脚本这也是这类工具最迷人的地方。【免费下载链接】dynamic-wallpaperA simple bash script to set wallpapers according to current time, using cron job scheduler.项目地址: https://gitcode.com/gh_mirrors/dy/dynamic-wallpaper创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考