
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-wallpaperDynamic Wallpaper 是一款借助 cron 任务调度器、按当前时间自动切换壁纸的轻量级 bash 脚本工具它会读取系统的小时数从 24 张同风格图片中挑出对应的那一张铺满桌面让你从清晨到深夜始终置身于应景的画面中。这篇文章按照准备 → 运行 → 定时 → 排错 → 进阶 → 卸载的完整旅程把 Dynamic Wallpaper 从安装到日常维护的所有要点一次讲透。开箱上手Dynamic Wallpaper 安装前的系统准备Dynamic Wallpaper 的定位是轻量核心就是一个 bash 脚本没有常驻进程也不依赖任何重型框架。它兼容主流的桌面环境GNOME、KDE、XFCE、Cinnamon、MATE 等和窗口管理器前提是你的系统满足两点运行 Linux并且有可用的包管理器。动手之前先把几个必要的依赖补齐。脚本启动时会逐一检查feh、xrandr、crontab是否存在于系统路径中缺一就会直接报错退出所以提前装好能省去后面的排错环节。依赖作用feh在窗口管理器下设置壁纸的核心工具xrandr多显示器 / XFCE 桌面环境下定位屏幕和输出cron/cronie提供定时任务调度能力pywal可选根据壁纸自动提取配色联动终端等应用不同发行版的安装命令略有差异按你所在的系统选择一条执行即可# 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依赖就绪后获取代码并安装git clone https://gitcode.com/gh_mirrors/dy/dynamic-wallpaper cd dynamic-wallpaper ./install.sh安装脚本做的事很简单把images目录和dwall.sh复制到/usr/share/dynamic-wallpaper并在/usr/bin下创建名为dwall的软链接。装完敲一句dwall看到彩色 Banner 和风格列表就说明一切正常了。初次运行认识风格参数与壁纸资源安装完成后第一个动作是查看帮助信息确认哪些风格可用dwall -h输出末尾的 Available styles 部分会列出仓库里所有已内置的壁纸集合共 25 套左右覆盖了从自然风光到城市夜景的各种口味风格主题风格主题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东京夜景选中心仪的风格用-s参数应用dwall -s beach你会看到类似[*] Using style : beach的提示桌面立即切换为当前小时对应的那张图片。这套机制的理解要点在于每个风格目录下都存放了编号 0 到 23 的图片脚本通过date %k拿到当前小时再据此选取同名文件——这就是 Dynamic Wallpaper 能跟着时间走的根本原因。如果你对某种风格拿不定主意也不用急着安装仓库里附带了一个test.sh它使用当前目录下的图片运行效果与安装版完全一致./test.sh -s tokyo自动化进阶Dynamic Wallpaper 定时换壁纸的 cron 配置手动运行只是开胃菜Dynamic Wallpaper 的设计初衷就是配合 cron 这类定时调度器使用——让它每个整点悄悄换一张壁纸你几乎感觉不到它的存在。第一步确保 cron 服务在运行不同发行版的服务名不同先启动并设为开机自启# Debian / Ubuntu sudo systemctl enable --now cron # Arch Linux sudo systemctl enable --now cronie启动后检查服务状态确认处于active (running)systemctl status cron第二步写入每小时执行一次的定时任务编辑当前用户的 crontabcrontab -e在文件末尾追加一行让每个整点执行一次壁纸切换把风格换成你喜欢的0 * * * * /usr/bin/dwall -s beach保存退出后用下面的命令确认任务已经落盘crontab -l | grep dwall看到与刚才一致的那一行就说明定时换壁纸已经生效。从下一个整点开始桌面会每过一个小时自动更新一次。第三步灵活调整切换频率与风格cron 表达式的自由度很高你可以把壁纸当作幻灯片来用需求crontab 表达式每小时整点切换0 * * * * /usr/bin/dwall -s beach每 15 分钟切换*/15 * * * * /usr/bin/dwall -s beach只在白天切换0 7-19 * * * /usr/bin/dwall -s firewatch开机时恢复当前时间壁纸reboot /usr/bin/dwall -s beach想换风格时重新执行crontab -e把那行里的风格名改掉即可无需重装任何东西。排错时刻Dynamic Wallpaper 报错解决的症状—原因—对策流程再顺滑的工具也难免磕绊。下面把新手最常遇到的几种情况统一放进症状 → 原因 → 对策的诊断框架里遇到问题按这个顺序自查即可。症状一手动运行一切正常壁纸却从不自动更换原因绝大多数时候不是脚本坏了而是定时任务根本没配好——要么 crontab 里没有任务要么 cron 服务没有启动。这两种情况的表现都是手动能用、自动失效。对策先查任务是否存在crontab -l | grep dwall若无输出回到上一节补上任务行若任务存在但仍不生效再查服务状态systemctl status cron服务不在运行状态就执行sudo systemctl enable --now cronArch 系把服务名换成cronie重新拉起。症状二运行时报 ERROR: Could not find fehis it installed?原因脚本开头的依赖预检没有通过。它要求feh、xrandr、crontab三个命令同时在系统中可用缺失任意一个都会以同样的句式报错只是报错名称不同。对策缺哪个就装哪个对照上文表格里的发行版命令补齐即可。装完再跑一次dwall -s beach预检通过后就会正常进入壁纸设置环节。症状三报 Invalid style name风格始终应用不上原因传给-s的参数与内置风格列表对不上。常见诱因是拼写错误比如把mojave写成mojava、大小写不符或者安装目录里的图片被改动过。对策先执行dwall -h从 Available styles 部分原样复制一个风格名再试同时确认安装目录完好ls /usr/share/dynamic-wallpaper/images只要目录结构正常风格名与列表一致这条报错就会消失。症状四偶发 Invalid image file 提示原因脚本在风格目录里找不到与当前小时编号匹配的图片文件。通常是自定义壁纸时图片格式不是 jpg/png或文件名没有按 0-23 编号导致。对策检查对应风格目录下的文件命名与扩展名把图片整理成0.jpg、1.jpg这样的规范格式后重试。高手之路Dynamic Wallpaper Wayland 配置与环境变量包装脚本X11 时代装完就能用但在 Wayland 合成器如 sway、hyprland、GNOME Wayland下事情会变得微妙一些——传统 X11 工具无法直接操作 Wayland 的壁纸层需要额外的桥接方案。Wayland 会话的适配思路脚本会读取XDG_SESSION_TYPE环境变量检测到wayland时不再调用 feh而是改用ogurictl守护进程来设置壁纸。因此 Wayland 用户需要额外安装 oguriArch 可通过 AUR 安装oguri-git并保证它在后台运行ogurictl start如果用了 sway建议先停掉默认的swaybg再启动 oguri避免两个进程抢着画壁纸pkill swaybg完成后Wayland 会话下的 cron 任务可以这样写让定时换壁纸照常运转0 * * * * eval ogurictl output * --image $(dwall -s beach | grep image | cut -d -f3)为什么 cron 里的 dwall 总是静默失败不少用户会遇到一个诡异现象手动执行dwall一切顺利放进 crontab 后却毫无反应。原因是 cron 运行在独立的精简环境中不会继承你桌面会话里的环境变量——DISPLAY、XAUTHORITY这类图形环境必需的变量在 cron 里默认是空的脚本自然找不到显示器。解决办法是写一个包装脚本把关键变量在脚本内补全。新建/usr/local/bin/dwall-wrapper.sh#!/bin/bash export DISPLAY:0 export XAUTHORITY$HOME/.Xauthority export DBUS_SESSION_BUS_ADDRESSunix:path/run/user/$(id -u)/bus export XDG_RUNTIME_DIR/run/user/$(id -u) dwall -s beach赋予执行权限chmod x /usr/local/bin/dwall-wrapper.sh然后把 crontab 里的任务行替换为包装脚本路径0 * * * * /usr/local/bin/dwall-wrapper.sh如果不想新建脚本也可以在 crontab 行内用env前缀一次性注入变量0 * * * * env DISPLAY:0 XAUTHORITY/home/你的用户名/.Xauthority /usr/bin/dwall -s beach需要确认自己会话的实际值随时可以用echo $DISPLAY查看多显示器环境下 DISPLAY 可能不是:0以实际输出为准。善后收尾干净卸载与后续资源指引如果你尝试了以上所有方案仍然不顺或者想换一台机器重来Dynamic Wallpaper 的卸载同样干脆。回到仓库目录执行./uninstall.sh脚本会删除/usr/share/dynamic-wallpaper目录和/usr/bin/dwall软链接。别忘了顺手清理定时任务crontab -e删除与 dwall 相关的任务行或直接crontab -r清空全部任务卸载才算真正干净。如果你打算长期使用还有几个小技巧值得收藏自定义壁纸在/usr/share/dynamic-wallpaper/images下新建风格目录把图片命名为0到23jpg 或 png重启桌面即出现在风格列表中相当于把 Dynamic Wallpaper 当成每小时轮播个人照片的幻灯片。配色联动配合-p参数可以让 pywal 从壁纸提取色板终端、状态栏随之变色桌面整体感会强很多。开机恢复在 autostart 或reboot任务里加入dwall -s 你的风格每次登录后壁纸都会回到与当前时间匹配的画面。至此从安装、选风格、配定时到排查报错、适配 Wayland 与补齐环境变量你已经掌握了 Dynamic Wallpaper 的全部核心用法。下一步建议花几分钟通读项目 README 中关于自定义壁纸与 HEIC 图片转换的章节了解更多扩展可能遇到文档没有覆盖的问题带上echo $DESKTOP_SESSION的输出去提交 issue开发者通常很快就能定位。祝你每天开机都能撞见恰好属于这一刻的风景。【免费下载链接】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),仅供参考