当前位置: 首页 > news >正文

Linux 定时壁纸从零到一:dynamic-wallpaper 安装、自动切换与避坑全指南

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 与 cron

dwall 启动时会在后台做一次"体检",检查fehxrandrcrontab三个命令是否可用,缺任何一个都会直接报错退出。所以最稳妥的顺序是:先把依赖装齐,再装脚本本身。

# 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

输出里会列出全部可用风格:aurorabeachbitdaychihuahuancliffscolonydesertearthexodusfactoryfirewatchforestgradienthomeislandlakelakesidemarketmojavemoonmountainsroomsaharastreettokyo……既有 5K 超清实拍,也有像素风和极简渐变,风格跨度很大。

选定之后,用-s参数套用:

dwall -s beach # 切换到海滩风格 dwall -s mojave # 切换到极简沙漠风格

如果风格名拼写有误,脚本会提示Invalid style name并退出——这也是一种"防呆"设计,避免你误操作改坏壁纸。

beach 风格白天的画面:金黄沙滩配碧蓝海水,下午的桌面就是这种明快的夏日感

顺便提一句,如果你装了 pywal 并希望壁纸配色同步影响终端、状态栏等其他应用,可以加-p参数:

dwall -p -s sahara

让壁纸按时切换:cron 定时任务配置详解

手动运行只能换一次,真正的"动态"要靠 cron 撑起来。配置分三步:

第一步,确认 cron 服务活着。不同发行版服务名略有差异,Arch 系是cronie

systemctl status cronie

如果没在运行,启动并设置开机自启:

sudo systemctl enable cronie --now

第二步,打开当前用户的定时任务表:

export EDITOR=vim crontab -e

第三步,追加一行"每小时整点执行一次"的任务:

0 * * * * /usr/bin/dwall -s firewatch

为什么是0 * * * *?这五个字段从左到右分别是"分钟、小时、日、月、周",所以它表示"每个小时的整点"都跑一次 dwall,恰好和壁纸按小时编号的设计对应。

写完保存后,用crontab -l检查任务是否写入成功。想要换风格也很简单,删除旧行再写新行即可。

定时任务明明存在,壁纸却纹丝不动?先查环境变量

这是最典型的"手动正常、自动失效"场景:你在终端里敲dwall -s xxx一切正常,可 cron 一到点就静默失败。原因在于cron 运行在完全独立的环境中,它不认识你的显示器、也不知道该把画面送到哪。

打个比方:dwall 就像一位外卖骑手,需要"收货地址"才能把餐送到。你在图形会话里登录时,系统已经悄悄把地址(DISPLAYXAUTHORITYDBUS_SESSION_BUS_ADDRESS等)塞给了终端;而 cron 是后台调度员,什么都没给骑手。

解决方案有两种,任选其一:

方案 A:把环境变量写进 cron 任务行。先用echo $DISPLAY查看当前显示编号(通常为:0),再补全任务:

0 * * * * env DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS="unix: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这个壁纸守护进程来中转。

安装并启动 oguri(Arch 系可通过 AUR 安装oguri-git):

ogurictl start

然后在 cron 里通过 oguri 的命令行接口设置壁纸。如果你原本用的是 sway,记得先停掉占着壁纸位的swaybg,否则画面会被它盖住:

pkill swaybg

提示:dwall 在 Wayland 下运行时会主动检查 oguri 进程是否存在,如果没启动会直接提示你"daemon is not running",这时候先ogurictl start就对了。

把生活照变成每小时自动切换的私人壁纸

dwall 也完全支持自定义壁纸集,步骤很简单:

  1. 准备一组图片(支持 jpg / png),按0.jpg1.jpg……23.jpg的规则重命名,对应一天 24 个小时;图片不够 24 张时,可以用软链接补齐;
  2. /usr/share/dynamic-wallpaper/images下新建一个目录(比如mypics),把图片放进去;
  3. 运行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),仅供参考

http://www.jsqmd.com/news/1399549/

相关文章:

  • 从理论到实践:使用dddlib构建完整的组织管理系统案例
  • project-dashboard核心功能解析:项目跟踪与任务管理终极方案
  • 扫描版 PDF 怎么转文字?免费开源的 Umi-OCR 三步搞定批量识别
  • 一学就会:用 TranslucentTB 把 Windows 任务栏变成透明亚克力(5 分钟上手 + 配置速查)
  • NTPClient 使用教程:3 步让 Arduino 设备获得精准的 NTP 时间同步
  • AI应用开发中的虚假引用:智能体引用不存在的文档条款时如何做溯源校验
  • Chiasmodon vs 传统OSINT工具:5大核心优势对比分析
  • 一张照片,复刻任何动作:ComfyUI-MimicMotionWrapper 视频动作迁移完整上手指南
  • Roblox帧率限制怎么解除?从60帧到240帧的FPS解锁入门指南
  • 数据采集卡从入门到精通(4):量化与编码——1LSB、Δ²/12噪声底与6.02N+1.76dB
  • 9678543
  • 告别AI味网页:Taste-Skill 让AI前端设计框架学会真正的设计品味
  • SwiftUI网格布局实战:GridStack三种单元格尺寸方案对比
  • OBS直播看不清你按了什么键?用input-overlay把键盘和手柄操作变成画面
  • 用yuzu Switch模拟器在PC上游玩任天堂游戏:新手从零上手指南
  • 从一堆STL文件到会走路的六足机器人:Hexapod5完整拆解与实战指南
  • 为什么选择Nortix Mail?5大优势让你告别垃圾邮件困扰
  • WebGL着色器中的OpenSimplex2:GLSL实现自然景观渲染的终极教程
  • 数据采集卡从入门到精通(5):SAR逐次逼近型ADC——N次问答定乾坤
  • Roblox被锁60帧玩不爽?开源FPS解锁器rbxfpsunlocker上手全指南
  • Riak KV与传统数据库的区别:为什么分布式存储更适合现代应用?
  • 长沙爱马仕铂金包、凯莉包回收标准,成色配件影响价格详解 - 日常前沿快讯
  • 给自己的网络生活装个“自动挡“:Huginn开源自动化平台快速上手指南
  • 2026广州钻石回收真相:你的卡地亚Panthere猎豹钻戒,品牌溢价在回收时全部清零 - 资讯快报员
  • 国内直连 Cursor:Remote SSH 无配置设置教程
  • PaperQA2 文献问答避坑指南:三阶段上手,让论文库开口说话
  • 给AI装上游戏眼睛:Neuro-sama Among Us AI插件从数据录制到神经网络的完整链路
  • Oboe音频性能测试实用手册:8步玩转OboeTester,揪出卡顿与延迟的真凶
  • 企业AI智能体开发:不踩坑的实用指南
  • Miku-LuaProfiler 实战指南:轻松定位 Lua 性能瓶颈的完整攻略