VS Code 窗口透明分三类:主窗口级(Windows 用 vscode-transparency 补丁,macOS 用 GlassIt-VSC)、编辑器区域 CSS 透明(workbench.colorCustomizations)、背景图叠加层透明(Background Cover 插件),混用易致视觉割裂。

VS Code 无法通过纯配置实现真正意义上的窗口透明,所谓“透明背景”实际分三类:主窗口级透明(依赖系统 API)、编辑器区域 CSS 层透明(workbench.colorCustomizations)、背景图叠加层透明(插件注入 DOM)。选错方案会导致无效、闪屏、文字发虚或重启失效。
Windows 下唯一稳定窗口级透明:vscode-transparency 补丁
Electron 渲染限制下,插件如 glassit-vsc 在 Windows 上已基本失效;vscode-transparency 是目前唯一能调用 DWM API 实现 Acrylic/Mica 模糊+alpha 通道的方案。
- 必须匹配 VSCode 版本:2026 年 4 月起,VSCode 1.86+ 需用补丁 v1.12+,否则报错
Cannot find module 'vs/base/common/platform' - 配置写在
%APPDATA%\Code\User\settings.json中:"transparency.opacity": 0.85、"transparency.blur": "acrylic" - 必须禁用硬件加速:启动时加参数
--disable-gpu,否则模糊失效或闪烁 -
window.titleBarStyle必须设为"custom";设成"native"会直接关闭透明通道
macOS 上可用的原生窗口透明:GlassIt-VSC
它不改配置、不注入 CSS,而是直接调用 NSWindow.setAlphaValue_(),响应快且重启保留设置,但仅作用于主窗口容器,不影响侧边栏/终端内容渲染。
- 安装后需手动配置快捷键:在
keybindings.json中添加{"key": "cmd+shift+up", "command": "glassit.increase"}等 - 透明值范围是
0.1(极透)到1.0(完全不透明);低于0.3时深色主题下标题栏文字可能难以辨认 - Rosetta 模式运行 VSCode 可能触发渲染异常,执行
GlassIt: Set Opacity输入1.0可立即恢复 - 该插件对 Dock 缩略图、Mission Control 效果无控制力,禁用原生标签页
"window.nativeTabs": false可缓解缩略图不生效问题
跨平台通用的编辑器区域透明:workbench.colorCustomizations
这是最安全、兼容性最好的方式,只改编辑器、终端、侧边栏等 UI 元素的 CSS 背景色,不触碰窗口层,所有系统都支持。
- 颜色值必须用
#RRGGBBAA(如"#1e1e1e80")或rgba(r,g,b,a)(如"rgba(30,30,30,0.7)"),其中AA或a控制透明度 -
editor.background和terminal.integrated.background必须分开设置,后者不会继承前者 - 某些主题(如 One Dark Pro)会在内部强制覆盖
editor.background,建议优先用#RRGGBBAA格式避免解析歧义 - 修改后无需重启,保存
settings.json即刻生效
背景图 + 透明效果:Background Cover 插件
它通过合法 DOM 注入伪元素实现背景图,不是改 workbench.colorCustomizations,也不是伪造 backgroundImage 配置项——那个字段根本不存在,VSCode 会静默忽略。
-
backgroundCover.imagePath必须是绝对路径,Windows 也得用正斜杠:"C:/Users/you/Pictures/bg.jpg",含中文或空格必须加双引号 -
backgroundCover.opacity控制图层透明度,推荐0.08–0.15;超过0.2代码会被盖住,插件还会自动 fallback 到0.3 - 想让终端/侧边栏也透出同一张图,得额外配:
"terminal.integrated.background": "#00000000"和"sideBar.background": "#00000000" - 切勿同时启用
Background Cover和Custom CSS and JS Loader或老版background插件,CSS 规则冲突会导致图片忽隐忽现
最容易被忽略的是层级关系:窗口透明、UI 区域透明、背景图透明,三者互不感知,混用时视觉割裂明显。比如开了 vscode-transparency 又配了 editor.background,结果编辑区比窗口还“透”,底下桌面直接穿出来——这不是 bug,是三个透明通道各自生效的必然结果。











