是否可以通过编程方式访问 VSCode 主题属性?比如,一个人可以使用 VS Code API 来更改主题颜色吗?

Is it possible to access VS Codes theme properties programatically? Like, can a person use the VS Code API to change a theme color?

以编程方式访问 VSCode 主题属性

是否可以通过编程和动态方式 get & set V.S 的颜色。代码 主题属性 使用V.S。代码 API?


下面的代码片段演示了使用 VSCode API 及其方法 getConfiguration(),更改设置。我希望像这个片段这样的东西可以通过编程改变主题颜色来工作,但无济于事。


    const workbenchConfig = vscode.workspace.getConfiguration('workspace');
    const themeColor = workbenchConfig.get(`colorTheme.${themeProperty}`);

    console.log(themeColor)

 
    // The argument colorTheme.${someColor} would is obviously replaced with the       
    // theme's property that I want to access.



我想访问与 workbench.ColorCustomizations 设置访问相同的对象,使用上面的代码片段。我的想法是我可以在相同范围内设置主题颜色,即由 workbench.colorCustomizations 设置使用,但我的尝试没有成功。


这个话题已经有一段时间了。这取决于您想在哪里以及如何使用它。在网络视图中,您可以将主题颜色作为 Theme Color reference 中列出的 css 变量访问,并在您的网络视图中使用它们。

在 API 中您可以获得一些 workbench 颜色,例如:

const wb_color = new vscode.ThemeColor ( 'activityBar.background' ) 

虽然这可能用途有限。您还可以使用

获得 window 的主题种类(例如浅色、深色、高对比度)
const theme = window.activeColorTheme.kind

我不知道以编程方式设置颜色的正确方法。也许在这个问题下有一些骇人听闻的解决方案,在这里处理这个问题: https://github.com/Microsoft/vscode/issues/32813