Peacock 插件颜色不自动跨窗口生效,需为每个窗口单独设置或写入工作区配置;标题栏/活动栏未变色主因是未执行“Peacock: Change Color”命令,且 macOS 需设 Window: Title Bar Style 为 custom,Linux 桌面环境及部分主题可能限制染色效果。

Peacock 插件的颜色不自动跨窗口生效,必须为每个窗口单独设置或写死在工作区配置里;靠用户级设置、英文色名、rgb() 值或双击文件打开,都会导致颜色失效。
为什么标题栏/活动栏没变色?
最常见原因是根本没执行着色命令——peacock.color写进 settings.json 只是存值,不触发渲染。另外几个关键点:
- macOS 用户需确认
Window: Title Bar Style设为custom;设成native时系统接管标题栏,Peacock 无法染色 - Linux(如 GNOME)桌面环境会强制统一标题栏样式,此时只有
tab.activeBorder和侧边栏顶部能响应颜色 - 某些主题(如 Material Theme)重绘了 UI 容器,可能遮盖 Peacock 效果
-
peacock.color值只接受十六进制格式(如#FF6B6B),不支持英文色名(如blue)或rgb()函数
怎么让颜色随项目自动恢复?
颜色不会“记住项目”,只绑定窗口实例或工作区配置。要实现“打开某文件夹就自动上色”,必须满足两个条件:
- 以文件夹方式打开(
File > Open Folder或终端执行code .),不能双击单个文件启动 VSCode - 把
"peacock.color": "#4ECDC4"明确写进该工作区根目录下的.vscode/settings.json(不是用户级settings.json) - 可选:启用
peacock.preserveColorOnClose为true,仅对同一窗口关闭再重开有效,不影响其他显示器上的新窗口
多显示器或多窗口打开同一项目,颜色为何不一致?
Peacock 的颜色绑定的是「VSCode 窗口实例」,不是显示器、项目路径或系统主题。这意味着:
- 你在显示器 A 打开一个窗口并设为
#FF6B6B,在显示器 B 新开一个窗口——哪怕打开同一文件夹,它默认仍是灰色 - 每个窗口是独立进程实例,Peacock 没有跨窗口广播机制,所谓“同步”只能靠手动或配置驱动
- 唯一可靠的方式是把
"peacock.color"写死在项目级.vscode/settings.json,并确保所有目标窗口都以该文件夹为根目录打开 - 多根工作区(multi-root workspace)下,整个窗口被视为一个单位染色,不会按子文件夹分别处理
团队协作时提交 .vscode/settings.json 有哪些坑?
提交 .vscode/settings.json 能让团队成员打开即见标识色(比如 dev 用蓝色、prod 用红色),但容易忽略三点:
-
.vscode/常被项目级.gitignore排除,需显式取消忽略(例如删掉.gitignore中的.vscode/行) - Peacock 自动生成的配置可能连带写入
workbench.statusBar.background等衍生项,干扰团队统一主题策略 - 建议加
"peacock.affectStatusBar": false抑制状态栏着色,避免视觉冲突
真正起效的颜色绑定发生在工作区配置和窗口实例之间,而不是抽象的“项目”或“环境”。很多人卡在第一步:没执行 Peacock: Change Color 命令,就直接改 JSON,结果标题栏纹丝不动——这是最常被跳过的实操动作。











