dynamic-wallpaper 动态壁纸完整排障指南:一次讲清安装、cron 调度与 Wayland 环境配置

📅 2026/8/15 17:45:54
dynamic-wallpaper 动态壁纸完整排障指南:一次讲清安装、cron 调度与 Wayland 环境配置
dynamic-wallpaper 动态壁纸完整排障指南一次讲清安装、cron 调度与 Wayland 环境配置【免费下载链接】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 都会经历这样的困惑明明安装成功dwall -s beach手动执行也提示正常可桌面壁纸就是一动不动。这个基于 bash 编写、靠 cron 调度器按当前时间自动换壁纸的轻量工具原理并不复杂问题往往出在依赖缺失、任务未注册或显示环境不匹配这几个环节上。下面按安装 → 首次运行 → 自动调度 → 环境适配这条真实使用动线把新手最常踩的坑逐个拆解照着做就能自己搞定。安装阶段报找不到依赖先补齐 dynamic-wallpaper 必备组件现象运行dwall或dwall -s 风格名时终端直接抛出类似[!] ERROR: Could not find feh, is it installed?的红色报错并退出。根因dynamic-wallpaper 在工作前会检查三个核心依赖——feh负责在窗口管理器下设置壁纸、crontab提供调度能力、xrandrXFCE 等桌面读取显示器参数时需要。缺了任何一个脚本都会拒绝执行。解决步骤根据你的发行版补装组件即可。发行版安装命令对应组件Debian / Ubuntusudo apt install feh x11-xserver-utils cronfeh、xrandr、cronFedora / RHELsudo dnf install feh xorg-x11-server-utils croniefeh、xrandr、cronArch Linuxsudo pacman -S feh xorg-xrandr croniefeh、xrandr、cron效果验证重新执行dwall -h不再报错并正常打印帮助信息说明依赖已就位。若你打算使用-p参数配合 pywal 生成配色还需额外安装pywal可选不影响基础功能。首次运行提示 Invalid style name如何验证风格目录与名称现象输入dwall -s mountain后返回[!] Invalid style name : mountain, exiting...怀疑是不是风格名记错了。根因脚本会拿传入的参数去和/usr/share/dynamic-wallpaper/images下的目录名逐一比对名字拼错、大小写不符或目录缺失都会触发该报错。比如项目里实际叫mountains而非mountain一字之差就会失败。解决步骤用dwall -h查看帮助输出的 Available styles 一节会列出全部 25 个内置风格包括aurora、beach、desert、firewatch、tokyo等直接从列表复制名称最稳妥。若列表与预期不符检查安装目录ls /usr/share/dynamic-wallpaper/images确认对应风格子目录确实存在。用正确名称执行例如dwall -s beach或dwall -s firewatch。效果验证终端出现[*] Using style : beach的提示壁纸立即切换为当前时段对应的画面说明风格调用成功。壁纸到点不换检查 dynamic-wallpaper 的 cron 任务是否就位现象dwall -s beach手动跑完全正常但过了整点壁纸毫无变化仿佛从没设置过自动调度。根因dynamic-wallpaper 本身不做轮询它依赖 cron 在每小时第 0 分钟触发dwall。cron 服务没运行、任务没写入自动换壁纸自然无从谈起。解决步骤先确认任务是否已注册crontab -l | grep dwall有输出说明已配置无输出则继续下一步。用crontab -e打开编辑器追加一行整点任务把风格名换成你想要的0 * * * * dwall -s beach保存后可用crontab -l复核。确认调度服务本身处于运行状态systemctl status cron。若显示未运行执行sudo systemctl start cron并sudo systemctl enable cron设置开机自启Arch 上对应服务名为cronie.service启动命令为sudo systemctl enable cronie.service --now。效果验证等待下一个整点或临时把分位改成当前分钟验证一次壁纸应自动切换为该时段画面。Wayland 会话下动态壁纸不生效用 oguri 接管显示环境现象在 GNOME Wayland、sway、hyprland 等 Wayland 会话中dwall执行后壁纸没有变化与 X11 下的表现截然不同。根因feh依赖 X11 协议无法直接在 Wayland 合成器上设置壁纸。dynamic-wallpaper 检测到XDG_SESSION_TYPEwayland时会改用oguri守护进程来完成设置因此必须先把它跑起来。解决步骤安装 oguriArch 用户可通过 AUR 安装oguri软件包名oguri-git其他发行版请查阅对应源或从源码构建。启动守护进程ogurictl start。若你是 sway 用户先结束原有的壁纸进程pkill swaybg避免两者互相覆盖。为 Wayland 环境单独配置 cron 任务让整点通过 oguri 应用壁纸0 * * * * eval ogurictl output * --image $(dwall -s beach | grep image | cut -d -f3)其中dwall输出的路径会被提取后交给 oguri 渲染。效果验证手动执行上述命令一次壁纸即时更新观察pidof oguri有返回值说明守护进程在运行整点自动切换即可生效。cron 里环境变量丢失为 dynamic-wallpaper 配置 DISPLAY 与 XAUTHORITY现象终端里dwall -s beach一切正常cron 任务也确认存在可整点依旧不换图日志里也没有明显错误——这是最隐蔽的一类问题。根因cron 以精简环境运行不会继承图形会话的DISPLAY、XAUTHORITY等变量脚本拿到了当前时间却找不到该往哪个屏幕输出于是静默失败。解决步骤先查清当前会话的真实取值echo $DISPLAY通常为:0多显示器环境可能不同。创建包装脚本/usr/local/bin/dwall-wrapper.sh把关键变量显式导出#!/bin/bash export DISPLAY:0 export XAUTHORITY$HOME/.Xauthority dwall -s beach赋予执行权限sudo chmod x /usr/local/bin/dwall-wrapper.sh。更新 cron 任务改为调用包装脚本0 * * * * /usr/local/bin/dwall-wrapper.sh效果验证再次等待整点触发壁纸应按时切换。若仍失败可在脚本内临时追加echo $(date) run /tmp/dwall.log查看 cron 是否真的调用了脚本。兜底方案重新安装 dynamic-wallpaper如果以上排查都无法解决问题可以直接重装一次往往能覆盖安装不全或目录损坏的情况git clone https://gitcode.com/gh_mirrors/dy/dynamic-wallpaper cd dynamic-wallpaper ./install.sh想彻底清理时运行./uninstall.sh即可。动手重装前不妨先跑一遍仓库自带的test.sh做本地验证确认脚本在当前环境可以工作再决定是否正式安装。小结与进阶方向dynamic-wallpaper 的排障其实就三条主线依赖要齐、cron 要注册、显示环境要匹配。依赖缺失看安装章节自动换图失效先查任务再查服务Wayland 或 cron 环境特殊就分别交给 oguri 和包装脚本处理。想让壁纸库更贴合个人口味可以按 README 的说明自制 0-23 号图片放入风格目录或把dwall -s 风格 写进桌面自启动项实现登录即恢复壁纸。更多细节可查阅项目内的 README.md、核心脚本 dwall.sh、安装脚本 install.sh 与卸载脚本 uninstall.sh。【免费下载链接】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),仅供参考