以编程方式检测浅色与深色主题

时间:2019-11-08 15:11:44

标签: visual-studio-code

是否可以通过编程方式检测VSCode中当前主题是亮还是暗?

用例:

我正在开发VSCode扩展,它将添加Hovers到编辑器中,并且我希望在悬停中具有图标。但是,悬停的背景会根据当前的颜色主题而变化,因此我需要选择要根据颜色主题显示的图标。

您可以在VSCode中的其他几个地方以以下形式指定图标网址:

let icon = {
    light: "uri for light icon",
    dark: "uri for dark icon",
};

因此,很明显,VSCode具有浅色主题与深色主题的概念。

这类似于this question,但回答的AFAIK仅适用于Web视图,并且this VSCode issue关闭后也会出现此问题

1 个答案:

答案 0 :(得分:1)

从VS代码1.40开始,没有用于此的API。请file a feature request

但是,如果您今天真的很想要此信息,则可以阅读当前用户的"workbench.colorTheme"设置并将其映射为暗/亮。无需对编码进行硬编码,而是使用contributes遍历所有已知扩展的vscode.extensions.all.map(ext => ext.packageJSON)来查找它。这是一个示例主题贡献(您感兴趣的属性是uiTheme):

{
    ...
    "contributes": {
        "themes": [
            {
                "label": "Red",
                "uiTheme": "vs-dark",
                "path": "./themes/Red-color-theme.json"
            }
        ]
    }
}