给 ZCode(Electron 应用)工具栏加一个「更换壁纸」按钮,点击即可一键换图,旁边附带遮罩浓度滑块。
- 工具栏按钮:在 ZCode 左上角工具栏注入一个 🖼️ 图片图标按钮,点击选取最新壁纸并注入
- 遮罩浓度滑块:按钮右侧的滑块,以 5% 为步长调节遮罩浓度(0%–100%),拖动后点击「更换壁纸」即生效
- 遮罩持久化:遮罩浓度会随壁纸一起保存,ZCode 重启后自动恢复上次的浓度
- 壁纸注入:通过 CDP(Chrome DevTools Protocol)将图片设为 ZCode 背景
- 持久化:记住上次设的壁纸,ZCode 重启后自动恢复
- 图片缩放:自动将大图缩到 2560px(JPEG 85%),避免 Electron 渲染卡顿
需要 Node.js >= 18。如果还没装,去 nodejs.org 下载 LTS 版本安装即可。
验证安装:
node --versiongit clone https://github.com/Oct1AtJoe/zcode-toolbar-wallpaper.git
cd zcode-toolbar-wallpaper不会用 git?点 这里 下载 ZIP,解压后进入文件夹即可。
npm install把图片放进 wallpapers/ 目录(支持 .jpg / .jpeg / .png / .webp / .gif / .svg)。
推荐:双击 start.vbs(无黑窗,静默启动)。
或双击 start.bat(有日志输出,便于排错)。
启动脚本会自动完成以下全部步骤:
- 检查 Node.js 是否可用
- 以调试端口 9222 启动 ZCode(已在运行则跳过)
- 缩放
wallpapers/中的图片到wallpapers-thumb/ - 启动后台 HTTP server(端口 18923)
- 恢复上次的壁纸和遮罩浓度
启动后约 3 秒内,ZCode 左上角工具栏会出现按钮和滑块。
再点一次
start.vbs= 停旧 server + 重启(不用去任务管理器杀进程)。
- 🖼️ 按钮:点击后选取
wallpapers/里最新放入的图片作为壁纸 - 滑块:拖动调节遮罩浓度(0% = 无遮罩,100% = 全黑),调好后点 🖼️ 按钮生效
| 问题 | 解决方法 |
|---|---|
| 工具栏没出现按钮 | 等 3 秒;或再双击一次 start.vbs 重启 |
| 找不到 ZCode.exe | 设置环境变量 ZCODE_EXE 指向 ZCode.exe 的完整路径 |
| 端口 9222 被占用 | 关闭占用该端口的程序,或修改 bin/launch-zcode.bat 中的 DEBUG_PORT |
| 想看启动日志 | 双击 start.bat(而非 .vbs),或查看 .start.log 文件 |
| 想移除壁纸 | 运行 npm run remove,或 curl -X POST http://127.0.0.1:18923/api/action -H "Content-Type: application/json" -d "{\"action\":\"remove\"}" |
server 启动后提供以下接口:
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /api/action |
执行动作 |
| GET | /api/status |
查询当前壁纸状态 |
| GET | /api/job/:id |
查询任务状态 |
# 一键换壁纸(选 wallpapers/ 最新图,dim 指定遮罩浓度 0-100,可选)
curl -X POST http://127.0.0.1:18923/api/action \
-H "Content-Type: application/json" \
-d '{"action":"pickWallpaper","dim":60}'
# 重新注入(随机选图)
curl -X POST http://127.0.0.1:18923/api/action \
-H "Content-Type: application/json" \
-d '{"action":"injectImage"}'
# 移除壁纸
curl -X POST http://127.0.0.1:18923/api/action \
-H "Content-Type: application/json" \
-d '{"action":"remove"}'
# 实时调整遮罩透明度 (0-100,不触发换壁纸)
curl -X POST http://127.0.0.1:18923/api/action \
-H "Content-Type: application/json" \
-d '{"action":"setWallpaperDim","alpha":60}'
pickWallpaper的dim参数会随壁纸一起持久化,重启后自动恢复。
| 变量 | 默认值 | 说明 |
|---|---|---|
ZCODE_EXE |
自动探测 | ZCode.exe 的完整路径(探测失败时手动指定) |
ZCODE_DEBUG_PORT |
9222 | ZCode CDP 调试端口 |
ZCODE_DEBUG_HOST |
127.0.0.1 | CDP 主机地址 |
ZCODE_WP_DIM |
60 | 遮罩透明度 (0-100,0=不遮) |
ZCODE_WP_CSS |
- | 直接指定 CSS 文件(跳过随机选图) |
npm test73 个测试覆盖:纯函数(inject/buildExpression、pickButton、resize、state)+ server API 端点。
lib/
cdp.cjs CDP 连接/目标列表
inject.cjs 壁纸注入引擎 (图片 + remove + dim 持久化)
wallpaper-pick.cjs 工具栏按钮 + 遮罩滑块注入
wallpaper-dim.cjs 遮罩变暗(实时调节)
resize.cjs 图片缩放 (sharp)
server.cjs HTTP server (pickWallpaper action)
state.cjs .wallpaper.json 持久化
wallpaper.css UI 透明层 CSS
bin/
launch-zcode.bat 启动 ZCode (带 debug port)
probe.ps1 端口探测脚本
wallpapers/ 放原图
wallpapers-thumb/ 缩图输出 (gitignore)
本项目基于 zzh-learner/zcode-wallpaper 改造而来,在此基础上新增了工具栏按钮、遮罩浓度滑块、dim 持久化等功能。感谢原作者的工作。
MIT
