peacock插件颜色绑定窗口实例而非显示器或项目路径,多显示器新开窗口需手动执行“peacock: change color”命令设色;唯一自动同步方式是将"peacock.color"写入项目级.vscode/settings.json并以该文件夹为根打开。

Peacock 插件不支持跨显示器同步颜色
Peacock 的颜色是绑定到「窗口实例」的,不是绑定到显示器、系统主题或工作区路径。你在显示器 A 打开一个 VSCode 窗口并设为 #FF6B6B,在显示器 B 新开一个窗口——哪怕打开同一文件夹,它默认仍是灰色,必须手动再执行一次 Peacock: Change Color。
这不是 bug,而是设计:VSCode 每个窗口是独立进程实例,Peacock 为每个实例单独维护颜色状态,没有跨窗口广播机制。所谓“多显示器同步”,本质是“多个窗口间手动保持一致”,没有自动同步这回事。
- 颜色值只写入当前窗口对应的工作区
.vscode/settings.json(如果是文件夹打开)或用户设置(如果是无文件夹窗口) - 如果你用的是
code .命令从终端启动,每次都是新窗口,不会继承上一个窗口的颜色 -
peacock.preserveColorOnClose只对“同一窗口关闭再重开”有效,不影响其他显示器上的新窗口
想让所有显示器上的 VSCode 窗口颜色一致,得靠工作区配置
唯一可靠的方式,是把颜色声明写死在项目级 .vscode/settings.json 里,然后确保所有目标窗口都以该文件夹为根目录打开(即用 File > Open Folder,而不是双击单个文件)。
示例配置:
{
"peacock.color": "#4ECDC4"
}
这样只要打开这个文件夹,无论在哪台显示器、哪个窗口,都会加载该颜色。但注意:
- 多根工作区(multi-root workspace)下,整个窗口统一染色,不会按子文件夹分别应用
- Git 提交时会把
.vscode/settings.json一起提交,团队成员拉代码后自动生效——适合区分 dev/test/prod 环境 - 如果该文件被
.gitignore忽略,或者你本地改了但没 commit,那其他显示器/设备就看不到这个颜色
Windows/macOS/Linux 下标题栏颜色失效的常见原因
即使设置了 peacock.color,标题栏没变色,大概率不是同步问题,而是平台限制或主题冲突:
- macOS:必须把
Window: Title Bar Style设为custom(默认是native),否则系统接管标题栏,Peacock 无法绘制 - Linux(GNOME/KDE):桌面环境强制统一标题栏样式,Peacock 只能影响
tab.activeBorder、侧边栏顶部等可渲染区域 - 某些主题(如
Material Theme)重绘了 UI 容器层,会遮盖 Peacock 的着色效果;临时换回Default Dark+验证是否主题导致 - VSCode 版本低于 1.70 时,
peacock.color在工作区设置中可能被忽略,建议保持最新稳定版
真正需要“多显示器同步”的场景,其实该用 Settings Sync + 主题统一
如果你的目标是“所有显示器上的 VSCode 看起来一样”,重点不在 Peacock,而在基础主题一致性:
- 先用 Settings Sync 同步
workbench.colorTheme和扩展列表,确保所有窗口用同一套主题(比如One Dark Pro) - 再配合
workbench.colorCustomizations统一关键 UI 色(如statusBar.background、sideBar.background),这些是全局生效的 - Peacock 只用于叠加区分——比如 dev 窗口标蓝、prod 窗口标红,但它依赖底层主题稳定;如果基础主题都没同步好,Peacock 就像在沙上画线
最易被忽略的一点:Settings Sync 默认不启用 UI State,而 workbench.colorTheme 属于 UI State 范畴。没勾选它,主题根本不同步,Peacock 再怎么设色也救不回割裂感。











