之前我一直在 Ubuntu 上使用 Damask 自动切换桌面壁纸,其中最喜欢的图片源是 Windows Spotlight。
用了一段时间后,感觉 Spotlight 的图片质量确实不错,但 Damask 有个地方让我越来越不满意:
图片换掉以后,没有自动形成一个方便管理的本地历史图库。
有时候刚看到一张不错的照片,过一会儿自动切换了,再想找回来就比较麻烦。
而我之前已经在使用的 Bing Wallpaper GNOME Extension 恰恰在这方面做得不错。
它原本就支持:
- 自动下载 Bing 每日壁纸;
- 保存已经下载过的图片;
- Previous / Next 前后切换;
- Favorite 收藏;
- Random / Shuffle 随机显示;
- Gallery 图片管理。
官方也明确把"逐渐建立本地图片 collection"和从历史图片中随机轮换作为主要功能。
后来发现已经有人给 Bing Wallpaper 提交了一个很有意思的修改:
把 Bing Wallpaper 改成多图片源架构,并加入 Windows Spotlight。
给 Bing Wallpaper 增加多图片源与 Windows Spotlight 支持的 Pull Request
https://github.com/neffo/bing-wallpaper-gnome-extension/pull/294
也就是说,可以变成:
Bing Wallpaper
├── Bing Image of the Day
└── Windows Spotlight
这样对我来说主要有两个好处:
-
可以少安装一个 Damask;
-
Spotlight 图片可以利用 Bing Wallpaper 原有的本地图库、收藏、前后切换和随机轮播机制。
不过首先要说明:
本文使用的是一个尚未正式进入主线的开发分支,并不是 Extension Manager 中的正式版本。
使用自己编译的 GNOME Extension,意味着遇到问题时不能完全依赖官方版本的支持,需要具备一定的问题定位和恢复能力。
所以我的实际做法是:
先在 Ubuntu 虚拟机测试
↓
确认 Spotlight 正常
↓
确认 Gallery / Shuffle 等功能正常
↓
再修改 Host
如果只是想简单换壁纸,又不熟悉 Git、GNOME Extension 和 Linux 命令行,我反而建议继续使用 Damask,或者等待这个功能正式合入。
一、先备份原来的 Bing Wallpaper
因为开发版和正式版使用的是相同的 Extension UUID:
BingWallpaper@ineffable-gmail.com
所以安装前先备份一下比较稳妥。
先建立备份目录:
mkdir -p ~/Backup/BingWallpaper
备份原来的设置:
dconf dump /org/gnome/shell/extensions/bingwallpaper/ \
> ~/Backup/BingWallpaper/settings.dconf
看看当前扩展:
gnome-extensions info BingWallpaper@ineffable-gmail.com
如果原来的扩展安装在用户目录:
~/.local/share/gnome-shell/extensions/
BingWallpaper@ineffable-gmail.com
也顺手备份:
cp -a \
~/.local/share/gnome-shell/extensions/BingWallpaper@ineffable-gmail.com \
~/Backup/BingWallpaper/
这样后面开发版如果出现问题,至少原来的 Extension 文件和设置都还在。
二、卸载 Damask,避免两个程序互相抢壁纸
我已经在虚拟机里确认 Spotlight 分支可以正常工作,所以迁移到 Host 时就不准备继续保留 Damask 了。
先停止 Damask:
flatpak kill app.drey.Damask
然后卸载:
flatpak uninstall app.drey.Damask
这里我没有使用:
flatpak uninstall --delete-data ...
所以:
~/.var/app/app.drey.Damask/
里的用户数据暂时还保留着。
毕竟现在使用的还是一个开发分支,没有必要一开始就把退路全部清干净。
之所以不让两个程序一起运行也很简单:
Damask
↓
修改 GNOME 当前壁纸
Bing Wallpaper
↓
也修改 GNOME 当前壁纸
如果两个程序都自动运行,最后很容易变成"谁最后修改,桌面就听谁的",问题定位也会变麻烦。
三、准备编译环境
Bing Wallpaper 官方 README 把下面几个包列为构建依赖:
npm
gettext
intltool
zip
这里有个地方需要注意:
不要看到 npm 就直接再执行一次
apt install npm。
我的 Host 本来就通过 NVM 安装了 Node.js/npm:
node -v
npm -v
which node
which npm
结果是:
v24.18.0
11.16.0
/home/ubuser/.nvm/versions/node/v24.18.0/bin/node
/home/ubuser/.nvm/versions/node/v24.18.0/bin/npm
所以完全没有必要再额外安装一套 Ubuntu APT 版本的 npm。
我实际缺的是:
gettext
intltool
因此只安装:
sudo apt install gettext intltool
如果你的机器连 zip 都没有,再补:
sudo apt install zip
原则很简单:
已有的工具不要重复安装,缺什么补什么。
四、下载 Windows Spotlight 分支
进入自己的代码目录:
mkdir -p ~/Codes
cd ~/Codes
下载:
git clone \
--branch multi-provider-support \
--single-branch \
https://github.com/nwkyz/bing-wallpaper-gnome-extension.git \
bing-wallpaper-spotlight
进入:
cd ~/Codes/bing-wallpaper-spotlight
可以确认一下当前版本:
git log -1 --oneline
我这次实际测试到的是:
7e5e35f Multiple providers support & Translation for zh_CN and zh_TW
五、安装
这里其实没必要搞复杂。
先关闭旧版本:
gnome-extensions disable BingWallpaper@ineffable-gmail.com
因为前面已经备份过,可以把用户目录中的旧版本清掉:
rm -rf \
~/.local/share/gnome-shell/extensions/BingWallpaper@ineffable-gmail.com
然后直接使用项目自己的安装脚本:
sh install.sh
就可以了。
脚本会完成构建,并把 Extension 安装到:
~/.local/share/gnome-shell/extensions/
BingWallpaper@ineffable-gmail.com/
我的实际安装日志中也能看到 extension.js、providers.js、prefs.js 等文件被解压到这个目录。
安装完成后,我选择:
注销 Ubuntu,再重新登录。
对于 Wayland 下的 GNOME,这也是比较省心的做法。
重新登录后,可以在扩展管理器里确认 Bing Wallpaper 已经启用:

六、我实际只改了几个设置
Bing Wallpaper 的设置不少,不过我没有全部折腾。
实际主要改了下面几个。

1. Indicator icon
默认那个带 B 字母的图标我总觉得有点怪,看起来甚至有点像抖音的图标。
所以我把:
Indicator icon
改成了第二个:
墙壁样式的图标
放在 GNOME 顶栏里感觉自然一些。
2. Shuffle wallpaper
打开:
Shuffle wallpaper
ON
这样桌面不会永远只显示最新一张图片,而是可以从已经下载的图库里随机选择。
Bing Wallpaper 官方也明确说明,Shuffle 使用的是本地已经保存的图片 collection。
3. Shuffle interval
设置成:
on the hour
也就是:
每小时随机换一次桌面。
注意,这里只是从已经下载到本地的图片中随机选择,并不是每小时去 Microsoft 下载一张新的 Spotlight。
这个区别后面还会说到。
4. Wallpaper source
这是这次最重要的设置:
Wallpaper source
Windows Spotlight
到这里,原来由 Damask 负责的 Windows Spotlight 就正式交给 Bing Wallpaper 了。
5. Always export Bing data
我也打开了:
Always export Bing data
不过目前我的实际测试中:
find ~/Pictures ~/.config ~/.local/share \
-type f -name 'bing.json' 2>/dev/null
没有找到任何:
bing.json
所以现阶段我虽然先把这个选项开着,但不会依赖它做备份或恢复。
值得注意的是,Bing Wallpaper 主线目前还有一个处于 Open、bug + confirmed 状态的 #281,报告的正是 JSON Import / Export 按钮没有效果。
不能简单断定开发分支里的 Always export Bing data 一定就是同一个问题,但至少可以说明:
这个扩展目前的 JSON 导入导出部分并不算特别可靠。
所以先当成附加功能看待即可。

七、把 Bing 和 Spotlight 图片分开
我原来已经积累了一些 Bing 每日壁纸,都直接放在:
~/Pictures/BingWallpaper/
现在既然已经有两个 Provider,我干脆把它们整理一下。
先建立目录:
mkdir -p ~/Pictures/BingWallpaper/bing
mkdir -p ~/Pictures/BingWallpaper/spotlight
然后把之前根目录里的 Bing JPG 移进去:
mv ~/Pictures/BingWallpaper/*.jpg \
~/Pictures/BingWallpaper/bing/
新的 Spotlight 图片则已经开始出现在:
~/Pictures/BingWallpaper/spotlight/
例如:
20260819-spotlight-1b5ca31bad5b9bcf2354fbf9_spotlight.jpg
20260819-spotlight-7def0c66deba666e7cf46534_spotlight.jpg
20260819-spotlight-903138814986141b094000d9_spotlight.jpg
20260819-spotlight-c6e26e4918722b32d6e9e5b6_spotlight.jpg
最后目录看起来就比较清楚了:
Pictures/
└── BingWallpaper/
├── bing/
│ └── ...
│
└── spotlight/
└── ...
这一步只是我自己的文件整理习惯,并不是安装这个扩展的必须步骤。
八、刚安装时 Spotlight 图片比较少怎么办?
切换到 Windows Spotlight 后,我最开始发现:
本地只有几张 Spotlight 图片。
后来才注意到,点击 GNOME 顶栏中的 Bing Wallpaper 图标,最上面有一个:
Refresh Now
可以主动刷新图片源。

刚安装时可以手动点几次:
Refresh Now
让扩展继续请求 Windows Spotlight。
这样本地的:
~/Pictures/BingWallpaper/spotlight/
就可以较快积累一些图片。
当然,并不是每点一次都一定获得一张完全不同的新图,服务端可能返回重复内容,扩展也可能进行去重。
九、Refresh Now 和 Shuffle wallpaper 不是一回事
这一点我觉得很容易搞混。
我的设置是:
Shuffle wallpaper = ON
Shuffle interval = on the hour
它的意思其实是:
本地已经下载的图片
↓
每小时随机选择一张
↓
设置为桌面
Bing Wallpaper 官方对 Shuffle 的描述也是从 stored Bing images 中随机选择。
而:
Refresh Now
才是:
访问在线图片源
↓
请求 Windows Spotlight
↓
取得新的内容
所以简单理解:
Refresh Now
↓
负责"进货"
Shuffle
↓
负责"从库存里随机挑一张"
这样就非常清楚了。
十、为什么 Refresh Now 下面显示 <No refresh scheduled>?
我刚切换到 Spotlight 后,顶栏菜单里显示:
Refresh Now
<No refresh scheduled>
最开始我还以为是不是哪里没有设置好。
实际上它表达的是:
当前没有安排下一次在线 Refresh 的时间。
这不是 Shuffle 的时间。
因为:
Shuffle interval = on the hour
只是每小时切换一次本地图片。
并不代表:
每小时去 Spotlight 下载一次
Bing Wallpaper 原来的设计本身也强调不会持续轮询 Bing,而是只在预计图片更新时重新尝试下载。
而设置界面也没有提供一个:
Refresh Spotlight every ...
这样的自定义选项。
因此现阶段如果想主动获取更多 Spotlight 图片,只能使用顶栏菜单里的 Refresh Now。
现在我的使用方式很简单:
想增加 Spotlight 新图
↓
Refresh Now
已经有一批本地图
↓
Shuffle 每小时随机切换
日常使用完全够了。
十一、目前的实际体验
这样折腾以后,我现在的壁纸链路已经从:
Damask
↓
Windows Spotlight
↓
当前桌面
变成:
Windows Spotlight
↓
Bing Wallpaper
↓
下载到本地
↓
Spotlight 图片库
↓
Previous / Next
Favorite
Random / Shuffle
↓
GNOME Desktop
而 Bing Wallpaper 本身又仍然保留 Bing Image of the Day 这个 Provider。
所以一个 Extension 就可以负责:
Bing
+
Windows Spotlight
这正是我想要的效果。
接上篇《Ubuntu 26.04 顶部面板优化:用 Top Panel Logo 补上一个高效入口-CSDN博客》,目前我的 Ubuntu 26.04 桌面分工继续简化。
|------------|-------------------------------|
| 功能 | 工具 |
| 显示缩放 | GNOME Fractional Scaling 125% |
| 应用启动与窗口切换 | Ubuntu Dock |
| 顶部快捷入口 | Top Panel Logo |
| 桌面模糊效果 | Blur My Shell |
| 壁纸下载,展示和切换 | Bing Wallpaper |
下面是随机切换后的几张桌面效果:



十二、如果开发版出了问题怎么恢复?
因为前面已经做了备份,所以回退其实不复杂。
先停掉当前开发版:
gnome-extensions disable BingWallpaper@ineffable-gmail.com
删除:
rm -rf \
~/.local/share/gnome-shell/extensions/BingWallpaper@ineffable-gmail.com
把原来的 Extension 恢复回去:
cp -a \
~/Backup/BingWallpaper/BingWallpaper@ineffable-gmail.com \
~/.local/share/gnome-shell/extensions/
恢复原来的设置:
dconf load /org/gnome/shell/extensions/bingwallpaper/ \
< ~/Backup/BingWallpaper/settings.dconf
然后:
gnome-extensions enable BingWallpaper@ineffable-gmail.com
注销并重新登录即可。
如果连 Damask 也想恢复:
flatpak install flathub app.drey.Damask
因为之前卸载时没有删除 ~/.var/app/app.drey.Damask 数据,回退也相对容易。
最后
这次折腾最开始只是一个很小的问题:
Damask 刚刚显示的那张好看 Spotlight 照片去哪了?
结果最后变成了:
Windows Spotlight
+
Bing Wallpaper 的本地图库
+
Favorite
+
Previous / Next
+
Shuffle
从功能上来说,这套组合确实比我之前同时使用 Damask 和 Bing Wallpaper 更符合自己的需求。
不过本文最大的前提还是那句话:
目前使用的是尚未正式进入主线的开发代码。
因此我并不建议所有 Ubuntu 用户直接在主力系统照着修改。
我的做法是:
VM 测试
↓
确认功能
↓
准备备份和回退方案
↓
再修改 Host
对一个每天真正使用的主力系统来说,我觉得这比"看见新功能就直接装"靠谱得多。
另外,目前这个版本还有两个我观察到的不完善之处:
Spotlight 在线自动 Refresh Schedule
→ 还不够完善
JSON Export
→ 实测暂时不能依赖
但它们并不影响核心功能。
目前最实用的组合反而非常简单:
Windows Spotlight
+
Refresh Now 获取新图
+
Shuffle 每小时随机看本地图
+
本地自动保存
这已经基本解决了我最初安装 Damask 时想解决的问题。