
让你的 Qoder 编辑器拥有个性化背景图,支持全屏/侧边栏/面板等多区域、图片轮播、暗色主题自适应。
### 目录
- [@TOC(目录)](#目录 @TOC 为什么需要这个插件 原因一:文件完整性校验 (Checksum) 原因二:扩展 API 差异 原因三:文件协议差异 我们的解决方案 功能特性 效果展示 全屏背景 多区域背景 下载与安装 下载 安装 配置与使用 快速开始 使用自己的图片 开启轮播 多区域同时配置 使用内置图片 支持的 5 个区域 配置参数 图片路径格式 应用配置 技术原理简述 注入方式 图片处理 轮播实现 暗色主题自适应 常见问题 许可协议)
- [为什么需要这个插件](#目录 @TOC 为什么需要这个插件 原因一:文件完整性校验 (Checksum) 原因二:扩展 API 差异 原因三:文件协议差异 我们的解决方案 功能特性 效果展示 全屏背景 多区域背景 下载与安装 下载 安装 配置与使用 快速开始 使用自己的图片 开启轮播 多区域同时配置 使用内置图片 支持的 5 个区域 配置参数 图片路径格式 应用配置 技术原理简述 注入方式 图片处理 轮播实现 暗色主题自适应 常见问题 许可协议)
- [原因一:文件完整性校验 (Checksum)](#目录 @TOC 为什么需要这个插件 原因一:文件完整性校验 (Checksum) 原因二:扩展 API 差异 原因三:文件协议差异 我们的解决方案 功能特性 效果展示 全屏背景 多区域背景 下载与安装 下载 安装 配置与使用 快速开始 使用自己的图片 开启轮播 多区域同时配置 使用内置图片 支持的 5 个区域 配置参数 图片路径格式 应用配置 技术原理简述 注入方式 图片处理 轮播实现 暗色主题自适应 常见问题 许可协议)
- [原因二:扩展 API 差异](#目录 @TOC 为什么需要这个插件 原因一:文件完整性校验 (Checksum) 原因二:扩展 API 差异 原因三:文件协议差异 我们的解决方案 功能特性 效果展示 全屏背景 多区域背景 下载与安装 下载 安装 配置与使用 快速开始 使用自己的图片 开启轮播 多区域同时配置 使用内置图片 支持的 5 个区域 配置参数 图片路径格式 应用配置 技术原理简述 注入方式 图片处理 轮播实现 暗色主题自适应 常见问题 许可协议)
- [原因三:文件协议差异](#目录 @TOC 为什么需要这个插件 原因一:文件完整性校验 (Checksum) 原因二:扩展 API 差异 原因三:文件协议差异 我们的解决方案 功能特性 效果展示 全屏背景 多区域背景 下载与安装 下载 安装 配置与使用 快速开始 使用自己的图片 开启轮播 多区域同时配置 使用内置图片 支持的 5 个区域 配置参数 图片路径格式 应用配置 技术原理简述 注入方式 图片处理 轮播实现 暗色主题自适应 常见问题 许可协议)
- [我们的解决方案](#目录 @TOC 为什么需要这个插件 原因一:文件完整性校验 (Checksum) 原因二:扩展 API 差异 原因三:文件协议差异 我们的解决方案 功能特性 效果展示 全屏背景 多区域背景 下载与安装 下载 安装 配置与使用 快速开始 使用自己的图片 开启轮播 多区域同时配置 使用内置图片 支持的 5 个区域 配置参数 图片路径格式 应用配置 技术原理简述 注入方式 图片处理 轮播实现 暗色主题自适应 常见问题 许可协议)
- [功能特性](#目录 @TOC 为什么需要这个插件 原因一:文件完整性校验 (Checksum) 原因二:扩展 API 差异 原因三:文件协议差异 我们的解决方案 功能特性 效果展示 全屏背景 多区域背景 下载与安装 下载 安装 配置与使用 快速开始 使用自己的图片 开启轮播 多区域同时配置 使用内置图片 支持的 5 个区域 配置参数 图片路径格式 应用配置 技术原理简述 注入方式 图片处理 轮播实现 暗色主题自适应 常见问题 许可协议)
- [效果展示](#目录 @TOC 为什么需要这个插件 原因一:文件完整性校验 (Checksum) 原因二:扩展 API 差异 原因三:文件协议差异 我们的解决方案 功能特性 效果展示 全屏背景 多区域背景 下载与安装 下载 安装 配置与使用 快速开始 使用自己的图片 开启轮播 多区域同时配置 使用内置图片 支持的 5 个区域 配置参数 图片路径格式 应用配置 技术原理简述 注入方式 图片处理 轮播实现 暗色主题自适应 常见问题 许可协议)
- [全屏背景](#目录 @TOC 为什么需要这个插件 原因一:文件完整性校验 (Checksum) 原因二:扩展 API 差异 原因三:文件协议差异 我们的解决方案 功能特性 效果展示 全屏背景 多区域背景 下载与安装 下载 安装 配置与使用 快速开始 使用自己的图片 开启轮播 多区域同时配置 使用内置图片 支持的 5 个区域 配置参数 图片路径格式 应用配置 技术原理简述 注入方式 图片处理 轮播实现 暗色主题自适应 常见问题 许可协议)
- [多区域背景](#目录 @TOC 为什么需要这个插件 原因一:文件完整性校验 (Checksum) 原因二:扩展 API 差异 原因三:文件协议差异 我们的解决方案 功能特性 效果展示 全屏背景 多区域背景 下载与安装 下载 安装 配置与使用 快速开始 使用自己的图片 开启轮播 多区域同时配置 使用内置图片 支持的 5 个区域 配置参数 图片路径格式 应用配置 技术原理简述 注入方式 图片处理 轮播实现 暗色主题自适应 常见问题 许可协议)
- [下载与安装](#目录 @TOC 为什么需要这个插件 原因一:文件完整性校验 (Checksum) 原因二:扩展 API 差异 原因三:文件协议差异 我们的解决方案 功能特性 效果展示 全屏背景 多区域背景 下载与安装 下载 安装 配置与使用 快速开始 使用自己的图片 开启轮播 多区域同时配置 使用内置图片 支持的 5 个区域 配置参数 图片路径格式 应用配置 技术原理简述 注入方式 图片处理 轮播实现 暗色主题自适应 常见问题 许可协议)
- [下载](#目录 @TOC 为什么需要这个插件 原因一:文件完整性校验 (Checksum) 原因二:扩展 API 差异 原因三:文件协议差异 我们的解决方案 功能特性 效果展示 全屏背景 多区域背景 下载与安装 下载 安装 配置与使用 快速开始 使用自己的图片 开启轮播 多区域同时配置 使用内置图片 支持的 5 个区域 配置参数 图片路径格式 应用配置 技术原理简述 注入方式 图片处理 轮播实现 暗色主题自适应 常见问题 许可协议)
- [安装](#目录 @TOC 为什么需要这个插件 原因一:文件完整性校验 (Checksum) 原因二:扩展 API 差异 原因三:文件协议差异 我们的解决方案 功能特性 效果展示 全屏背景 多区域背景 下载与安装 下载 安装 配置与使用 快速开始 使用自己的图片 开启轮播 多区域同时配置 使用内置图片 支持的 5 个区域 配置参数 图片路径格式 应用配置 技术原理简述 注入方式 图片处理 轮播实现 暗色主题自适应 常见问题 许可协议)
- [配置与使用](#目录 @TOC 为什么需要这个插件 原因一:文件完整性校验 (Checksum) 原因二:扩展 API 差异 原因三:文件协议差异 我们的解决方案 功能特性 效果展示 全屏背景 多区域背景 下载与安装 下载 安装 配置与使用 快速开始 使用自己的图片 开启轮播 多区域同时配置 使用内置图片 支持的 5 个区域 配置参数 图片路径格式 应用配置 技术原理简述 注入方式 图片处理 轮播实现 暗色主题自适应 常见问题 许可协议)
- [快速开始](#目录 @TOC 为什么需要这个插件 原因一:文件完整性校验 (Checksum) 原因二:扩展 API 差异 原因三:文件协议差异 我们的解决方案 功能特性 效果展示 全屏背景 多区域背景 下载与安装 下载 安装 配置与使用 快速开始 使用自己的图片 开启轮播 多区域同时配置 使用内置图片 支持的 5 个区域 配置参数 图片路径格式 应用配置 技术原理简述 注入方式 图片处理 轮播实现 暗色主题自适应 常见问题 许可协议)
- [使用自己的图片](#目录 @TOC 为什么需要这个插件 原因一:文件完整性校验 (Checksum) 原因二:扩展 API 差异 原因三:文件协议差异 我们的解决方案 功能特性 效果展示 全屏背景 多区域背景 下载与安装 下载 安装 配置与使用 快速开始 使用自己的图片 开启轮播 多区域同时配置 使用内置图片 支持的 5 个区域 配置参数 图片路径格式 应用配置 技术原理简述 注入方式 图片处理 轮播实现 暗色主题自适应 常见问题 许可协议)
- [开启轮播](#目录 @TOC 为什么需要这个插件 原因一:文件完整性校验 (Checksum) 原因二:扩展 API 差异 原因三:文件协议差异 我们的解决方案 功能特性 效果展示 全屏背景 多区域背景 下载与安装 下载 安装 配置与使用 快速开始 使用自己的图片 开启轮播 多区域同时配置 使用内置图片 支持的 5 个区域 配置参数 图片路径格式 应用配置 技术原理简述 注入方式 图片处理 轮播实现 暗色主题自适应 常见问题 许可协议)
- [多区域同时配置](#目录 @TOC 为什么需要这个插件 原因一:文件完整性校验 (Checksum) 原因二:扩展 API 差异 原因三:文件协议差异 我们的解决方案 功能特性 效果展示 全屏背景 多区域背景 下载与安装 下载 安装 配置与使用 快速开始 使用自己的图片 开启轮播 多区域同时配置 使用内置图片 支持的 5 个区域 配置参数 图片路径格式 应用配置 技术原理简述 注入方式 图片处理 轮播实现 暗色主题自适应 常见问题 许可协议)
- [使用内置图片](#目录 @TOC 为什么需要这个插件 原因一:文件完整性校验 (Checksum) 原因二:扩展 API 差异 原因三:文件协议差异 我们的解决方案 功能特性 效果展示 全屏背景 多区域背景 下载与安装 下载 安装 配置与使用 快速开始 使用自己的图片 开启轮播 多区域同时配置 使用内置图片 支持的 5 个区域 配置参数 图片路径格式 应用配置 技术原理简述 注入方式 图片处理 轮播实现 暗色主题自适应 常见问题 许可协议)
- [支持的 5 个区域](#目录 @TOC 为什么需要这个插件 原因一:文件完整性校验 (Checksum) 原因二:扩展 API 差异 原因三:文件协议差异 我们的解决方案 功能特性 效果展示 全屏背景 多区域背景 下载与安装 下载 安装 配置与使用 快速开始 使用自己的图片 开启轮播 多区域同时配置 使用内置图片 支持的 5 个区域 配置参数 图片路径格式 应用配置 技术原理简述 注入方式 图片处理 轮播实现 暗色主题自适应 常见问题 许可协议)
- [配置参数](#目录 @TOC 为什么需要这个插件 原因一:文件完整性校验 (Checksum) 原因二:扩展 API 差异 原因三:文件协议差异 我们的解决方案 功能特性 效果展示 全屏背景 多区域背景 下载与安装 下载 安装 配置与使用 快速开始 使用自己的图片 开启轮播 多区域同时配置 使用内置图片 支持的 5 个区域 配置参数 图片路径格式 应用配置 技术原理简述 注入方式 图片处理 轮播实现 暗色主题自适应 常见问题 许可协议)
- [图片路径格式](#目录 @TOC 为什么需要这个插件 原因一:文件完整性校验 (Checksum) 原因二:扩展 API 差异 原因三:文件协议差异 我们的解决方案 功能特性 效果展示 全屏背景 多区域背景 下载与安装 下载 安装 配置与使用 快速开始 使用自己的图片 开启轮播 多区域同时配置 使用内置图片 支持的 5 个区域 配置参数 图片路径格式 应用配置 技术原理简述 注入方式 图片处理 轮播实现 暗色主题自适应 常见问题 许可协议)
- [应用配置](#目录 @TOC 为什么需要这个插件 原因一:文件完整性校验 (Checksum) 原因二:扩展 API 差异 原因三:文件协议差异 我们的解决方案 功能特性 效果展示 全屏背景 多区域背景 下载与安装 下载 安装 配置与使用 快速开始 使用自己的图片 开启轮播 多区域同时配置 使用内置图片 支持的 5 个区域 配置参数 图片路径格式 应用配置 技术原理简述 注入方式 图片处理 轮播实现 暗色主题自适应 常见问题 许可协议)
- [技术原理简述](#目录 @TOC 为什么需要这个插件 原因一:文件完整性校验 (Checksum) 原因二:扩展 API 差异 原因三:文件协议差异 我们的解决方案 功能特性 效果展示 全屏背景 多区域背景 下载与安装 下载 安装 配置与使用 快速开始 使用自己的图片 开启轮播 多区域同时配置 使用内置图片 支持的 5 个区域 配置参数 图片路径格式 应用配置 技术原理简述 注入方式 图片处理 轮播实现 暗色主题自适应 常见问题 许可协议)
- [注入方式](#目录 @TOC 为什么需要这个插件 原因一:文件完整性校验 (Checksum) 原因二:扩展 API 差异 原因三:文件协议差异 我们的解决方案 功能特性 效果展示 全屏背景 多区域背景 下载与安装 下载 安装 配置与使用 快速开始 使用自己的图片 开启轮播 多区域同时配置 使用内置图片 支持的 5 个区域 配置参数 图片路径格式 应用配置 技术原理简述 注入方式 图片处理 轮播实现 暗色主题自适应 常见问题 许可协议)
- [图片处理](#目录 @TOC 为什么需要这个插件 原因一:文件完整性校验 (Checksum) 原因二:扩展 API 差异 原因三:文件协议差异 我们的解决方案 功能特性 效果展示 全屏背景 多区域背景 下载与安装 下载 安装 配置与使用 快速开始 使用自己的图片 开启轮播 多区域同时配置 使用内置图片 支持的 5 个区域 配置参数 图片路径格式 应用配置 技术原理简述 注入方式 图片处理 轮播实现 暗色主题自适应 常见问题 许可协议)
- [轮播实现](#目录 @TOC 为什么需要这个插件 原因一:文件完整性校验 (Checksum) 原因二:扩展 API 差异 原因三:文件协议差异 我们的解决方案 功能特性 效果展示 全屏背景 多区域背景 下载与安装 下载 安装 配置与使用 快速开始 使用自己的图片 开启轮播 多区域同时配置 使用内置图片 支持的 5 个区域 配置参数 图片路径格式 应用配置 技术原理简述 注入方式 图片处理 轮播实现 暗色主题自适应 常见问题 许可协议)
- [暗色主题自适应](#目录 @TOC 为什么需要这个插件 原因一:文件完整性校验 (Checksum) 原因二:扩展 API 差异 原因三:文件协议差异 我们的解决方案 功能特性 效果展示 全屏背景 多区域背景 下载与安装 下载 安装 配置与使用 快速开始 使用自己的图片 开启轮播 多区域同时配置 使用内置图片 支持的 5 个区域 配置参数 图片路径格式 应用配置 技术原理简述 注入方式 图片处理 轮播实现 暗色主题自适应 常见问题 许可协议)
- [常见问题](#目录 @TOC 为什么需要这个插件 原因一:文件完整性校验 (Checksum) 原因二:扩展 API 差异 原因三:文件协议差异 我们的解决方案 功能特性 效果展示 全屏背景 多区域背景 下载与安装 下载 安装 配置与使用 快速开始 使用自己的图片 开启轮播 多区域同时配置 使用内置图片 支持的 5 个区域 配置参数 图片路径格式 应用配置 技术原理简述 注入方式 图片处理 轮播实现 暗色主题自适应 常见问题 许可协议)
- [许可协议](#目录 @TOC 为什么需要这个插件 原因一:文件完整性校验 (Checksum) 原因二:扩展 API 差异 原因三:文件协议差异 我们的解决方案 功能特性 效果展示 全屏背景 多区域背景 下载与安装 下载 安装 配置与使用 快速开始 使用自己的图片 开启轮播 多区域同时配置 使用内置图片 支持的 5 个区域 配置参数 图片路径格式 应用配置 技术原理简述 注入方式 图片处理 轮播实现 暗色主题自适应 常见问题 许可协议)
为什么需要这个插件
vscode-background 是 VS Code 生态中非常受欢迎的背景图扩展(100 万+ 安装量),但它 无法在 Qoder 中正常工作。经过对源码的深入分析,我们发现了 3 个关键原因:
原因一:文件完整性校验 (Checksum)
Qoder 的 featureFlags.json 中包含关键文件的 SHA256 校验值:
json
{
"checksums": {
"vs/workbench/workbench.desktop.main.js": "RC5k/103qaDF...",
"vs/workbench/workbench.desktop.main.css": "ZzndmPa1h/vb...",
"vs/code/electron-browser/workbench/workbench.html": "HMczP8qp+nYZ..."
}
}
vscode-background v2 通过向 workbench.desktop.main.js 末尾追加 JavaScript 代码来注入背景图样式。修改后文件校验值不匹配,Qoder 会触发安全告警甚至拒绝加载。
原因二:扩展 API 差异
vscode-background 是标准 VS Code 扩展,依赖 vscode.workspace.getConfiguration() 等 API 读取配置。Qoder 虽然基于 VS Code fork,但其扩展环境可能不完整兼容所有 VS Code API,导致扩展激活失败或配置读取异常。
原因三:文件协议差异
VS Code 使用 vscode-file://vscode-app/ 协议访问本地文件,而 Qoder 的 product.json 中 urlProtocol 是 qoder。虽然 Qoder 内部 JS 仍然使用 vscode-file(因为是 fork),但扩展环境中的 vscode.Uri 行为可能不同,导致本地图片路径解析失败。
我们的解决方案
针对以上问题,我们开发了 Qoder Background --- 一个 Qoder 专属的背景图扩展:
| 对比 | vscode-background | Qoder Background |
|---|---|---|
| 注入目标 | workbench.desktop.main.js |
workbench.html(不受 JS checksum 影响) |
| 注入方式 | JS 追加 → 运行时创建 <style> |
HTML 中直接插入 <style> 标签 |
| 图片处理 | vscode-file:// 协议 |
本地图片转 base64 data URL(不依赖协议) |
| 告警处理 | 无特殊处理 | CSS 隐藏 checksum 告警(14 种语言) |
| 运行时依赖 | 需要 VS Code API | 无运行时依赖,纯 CSS 方案 |
功能特性
- 多区域背景 --- 全屏 / 侧边栏 / 面板 / 编辑器 / 辅助栏,每个区域独立配置
- 内置图片 --- 开箱即用,安装后无需配置即可看到默认背景
- 文件夹扫描 --- 指定文件夹路径,自动扫描所有图片用于轮播
- 轮播模式 --- 纯 CSS
@keyframes动画实现,零 JS 性能消耗 - 随机展示 --- 每次应用配置时随机打乱图片顺序
- 暗色主题自适应 --- 浅色主题正常叠加,深色主题自动切换
mix-blend-mode: screen - CSP 兼容 --- 本地图片自动转 base64 内嵌,绕过 Electron 安全策略
- settings.json 配置 --- 通过 Qoder 原生设置系统管理所有参数
效果展示
全屏背景

多区域背景

下载与安装
下载
| 版本 | 下载链接 | 说明 |
|---|---|---|
| v0.1.0 | qoder-background-0.1.3.vsix | 首发版本,含内置图片 |
发行包说明:下载的文件是一个文件夹,包含:
qoder-background-0.1.3.vsix--- 扩展安装包README.md/README.en.md--- 中英文使用说明images/logo.jpg--- 插件 Logo
安装
方式一:命令行安装(推荐)
bash
qoder --install-extension qoder-background-0.1.3.vsix
方式二:图形界面安装
- 打开 Qoder
- 按
Ctrl+Shift+P→ 输入Extensions: Install from VSIX... - 选择下载的
.vsix文件 - 按
Ctrl+Shift+P→Reload Window重载窗口
安装后默认即可看到全屏背景图(使用内置图片),无需任何配置。
配置与使用
快速开始
安装后打开设置文件:Ctrl+Shift+P → Open Settings (JSON)
使用自己的图片
json
{
"qoder-background.fullscreen": {
"images": ["D:/my-wallpapers"],
"opacity": 0.1,
"size": "cover",
"position": "center"
}
}
开启轮播
json
{
"qoder-background.fullscreen": {
"images": ["D:/my-wallpapers"],
"opacity": 0.15,
"interval": 10,
"random": true
}
}
每 10 秒自动切换一张背景图,随机顺序。
多区域同时配置
json
{
"qoder-background.fullscreen": {
"images": ["D:/fullscreen-bg.jpg"],
"opacity": 0.1
},
"qoder-background.sidebar": {
"images": ["D:/sidebar-bg.jpg"],
"opacity": 0.08
},
"qoder-background.editor": {
"images": ["D:/editor-bg.png"],
"useFront": false
}
}
使用内置图片
json
{
"qoder-background.fullscreen": {
"images": ["builtin:images"],
"opacity": 0.1,
"interval": 10
}
}
支持的 5 个区域
| 区域 | 配置键 | 说明 |
|---|---|---|
| 全屏 | qoder-background.fullscreen |
覆盖整个编辑器窗口 |
| 侧边栏 | qoder-background.sidebar |
左侧文件资源管理器区域 |
| 面板 | qoder-background.panel |
底部终端/输出/问题面板 |
| 辅助栏 | qoder-background.auxiliarybar |
右侧大纲/Copilot 等面板 |
| 编辑器 | qoder-background.editor |
代码编辑区域(支持前景/背景模式) |
配置参数
全局配置:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
qoder-background.enabled |
boolean | true |
全局开关。设为 false 后扩展不注入任何样式 |
qoder-background.autoApply |
boolean | true |
自动应用开关 。true=监听 settings.json 变化并自动注入背景图;false=关闭自动监听,需要手动执行命令 |
全屏区域 (fullscreen) 专属参数:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
images |
string\[\] | ["builtin:images"] |
图片路径列表 |
opacity |
number | 0.1 |
透明度(0~1),推荐 0.05~0.3 |
size |
string | cover |
背景尺寸(cover / contain / 具体尺寸) |
position |
string | center |
背景位置 |
interval |
number | 0 |
轮播间隔秒数,0 = 不轮播 |
random |
boolean | false |
随机展示 |
轮播说明 :当
interval > 0且images包含多张图片时启用,纯 CSS 实现,最多 10 张。仅全屏区域支持轮播。
侧边栏 / 面板 / 辅助栏 参数:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
images |
string\[\] | [] |
图片路径列表(仅支持单图,取第一张) |
opacity |
number | 0.1 |
透明度,推荐 0.05~0.15 |
size |
string | cover |
背景尺寸 |
position |
string | center |
背景位置 |
注意 :这些区域不支持轮播 ,
interval和random参数无效。
编辑器区域 专属参数:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
images |
string\[\] | [] |
图片路径列表(仅支持单图,取第一张) |
useFront |
boolean | true |
true=图片在代码上方,false=在下方 |
注意 :编辑器区域不支持轮播 ,没有
opacity/size/position参数。
图片路径格式
| 格式 | 示例 | 说明 |
|---|---|---|
| 本地文件 | "D:/photos/bg.jpg" |
绝对路径,自动转 base64 |
| 文件夹 | "D:/my-wallpapers" |
自动扫描所有图片 |
| 内置图片 | "builtin:images" |
扩展自带的图片文件夹 |
| 网络图片 | "https://example.com/bg.jpg" |
仅 HTTPS |
应用配置
修改 settings.json 后,需要应用才能生效(配置变更不会自动写入 workbench.html):
- 命令面板 :
Ctrl+Shift+P→Background: 应用背景图并重载→Reload Window - 状态栏按钮 :点击右下角
Background按钮 - 自动提示 :
autoApply开启时,保存设置后自动注入并重载 - 快捷脚本 :
node apply-from-settings.js(开发调试用)
技术原理简述
注入方式
采用 HTML 注入而非 JS 注入:
- vscode-background v2 向
workbench.desktop.main.js追加 JS 代码 → 触发 Qoder 的 checksum 校验 - 我们向
workbench.html插入<style>标签 → 不受 JS checksum 影响 - workbench.html 的 CSP 允许
'unsafe-inline'样式,天然兼容
图片处理
本地图片自动转为 base64 data URL:
用户配置: "D:/wallpapers/bg.jpg"
↓ normalizeImagePath()
文件读取 → toString('base64')
↓
data:image/jpeg;base64,/9j/4AAQSkZJRg...
↓
写入 CSS: background-image: url('data:...')
这样绕过了 Qoder CSP 中 img-src 不包含 file: 协议的限制。
轮播实现
由于 CSP 的 script-src 不允许 'unsafe-inline',无法注入 JS,因此轮播采用纯 CSS 方案:
- 多图层叠加:
body::after+body::before+div元素 - 每个图层关联独立的
@keyframes动画 - 通过 opacity 关键帧控制同一时刻只显示一个图层
- 图片间有平滑淡入淡出过渡
暗色主题自适应
css
body { --qoder-bg-mix-blend-mode: unset; }
body:has(> .monaco-workbench.vs-dark) { --qoder-bg-mix-blend-mode: screen; }
通过 CSS :has() 选择器检测深色主题的 .vs-dark 类,自动切换混合模式,避免在暗色背景上图片不可见。
常见问题
Q: 修改设置后不生效?
A: 需要执行 Background: 应用背景图并重载 命令或 Reload Window。如果 autoApply 为 true,保存后会自动应用。
Q: 背景图太淡/太浓?
A: 调整 opacity 值。推荐:全屏 0.05~0.3,侧边栏/面板 0.05~0.15。
Q: 轮播不工作?
A: 确保 interval > 0 且 images 有多张图片(或指向含多张图片的文件夹)。轮播最多 10 张。
Q: 提示"安装似乎已损坏"?
A: 正常现象,扩展已自动隐藏该告警。如仍出现,可安装 vscode-fix-checksums。
Q: Qoder 更新后背景消失了?
A: Qoder 升级会覆盖 workbench.html。升级后重新执行 Background: 应用背景图并重载 即可恢复。
许可协议
MIT License