vs code无原生透明开关,透明效果分三层:窗口级(系统api)、编辑器区域(workbench.colorcustomizations配#rrggbbaa/rgba)、背景图层(插件dom注入);混用易致闪屏、发虚或失效。

VS Code 没有原生“背景透明度”开关,所谓透明效果实际是三种不同层级的实现方式混用——窗口级(系统 API)、编辑器区域(CSS 颜色值)、背景图层(插件 DOM 注入)。选错层级或混搭会导致闪屏、文字发虚、重启失效,甚至根本没反应。
workbench.colorCustomizations 是最稳的编辑器区域透明方案
这是唯一跨平台、无需插件、不改二进制文件、重启即生效的方式。它只改 editor.background、sideBar.background、terminal.integrated.background 等 CSS 颜色值,不碰窗口层,兼容所有 VS Code 版本(包括 1.86+)。
- 颜色必须用带 alpha 的格式:
"#1e1e1e80"(十六进制最后两位是透明度)或"rgba(30, 30, 30, 0.7)";"#1e1e1e"这种纯 RGB 格式无效 -
terminal.integrated.background不会继承editor.background,必须单独设 - 某些主题(如 One Dark Pro)会强制覆盖
editor.background,优先用#RRGGBBAA格式可绕过解析歧义 - 透明度过低(如
#00000000)在深色主题下会让文字几乎不可读,建议从#1e1e1e90(约 56% 不透明)起步调试
Windows 上唯一靠谱的窗口级透明:vscode-transparency 补丁
不是插件,是 Electron 层补丁,直接调用 DWM API 实现 Acrylic/Mica 模糊 + alpha 通道。GlassIt-VSC 等插件在 Windows 上已基本失效,且新版 VS Code(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"会直接关闭透明通道 - 补丁版本和 VS Code 版本强绑定,2026 年 8 月当前稳定组合是 VS Code 1.86.2 + vscode-transparency v1.12.3
macOS 原生窗口透明:GlassIt-VSC 插件
它不改配置、不注入 CSS,而是直接调用 NSWindow.setAlphaValue_(),响应快、重启保留设置,但只作用于主窗口容器,侧边栏、终端、面板内容仍为实色。
- 安装后需手动配快捷键,例如在
keybindings.json中加:{"key": "cmd+shift+up", "command": "glassit.increase"} - 透明值范围是 0.1~1.0;低于 0.3 时深色主题下标题栏文字可能看不清
- Rosetta 模式运行 VS Code 可能触发渲染异常,执行
GlassIt: Set Opacity输入1.0可立即恢复 - 对 Dock 缩略图、Mission Control 效果无控制力,设
"window.nativeTabs": false可缓解缩略图不生效问题
Linux 用户该用 Picom 而不是改 settings.json
VS Code 在 Linux 下无法通过 workbench.colorCustomizations 实现真正窗口透明,因为 X11/Wayland 合成器才是控制窗口 alpha 的源头。Picom 是目前最稳定的选择。
- 配置示例:
opacity-rule = [ "85:class_g *= 'Code' && !focused", "95:class_g *= 'Code' && focused" ] - 必须确保 Picom 已启动:
picom --config ~/.config/picom.conf & - class_g 匹配的是窗口类名,VS Code 默认为
Code,可通过xprop | grep CLASS确认 - 启用
transparent-clipping = true才能让透明规则对子窗口(如终端面板)生效
真正麻烦的不是怎么设,而是搞清你到底要哪一层透明:是让壁纸透出来(窗口级),还是只让编辑器区域变半透(CSS 层),抑或叠加一张带透明度的图(DOM 层)。混用这三者,视觉割裂感比不透明还难受。











