An enhancement to vscode appearance. Major feature includes acrylic effect, mica background, reveal effect, flip effect, animations and more! Fully customizable. Designed to be compatible with other color themes.
Get it on VSCode Marketplace Get it on Open-VSX
This is a intrusive theme. Can work with any other color themes.Plz read this document before installation.
Custom SVG is supported.
- Install this extension.
- Open command panel, type in
Frosted Glass Theme: Enable
, press enter. - You can customize this theme in vscode settings.
- Every time vscode updates, you have to re-run
Frosted Glass Theme: Enable
.
If you want to load this theme with other extension or you prefer to maintain the workbench.html
yourself, download the whole inject
directory, then import only the inject\vscode-frosted-glass-theme.js
(with type="module"
). Then remove the <meta http-equiv="Content-Security-Policy" ... />
from workbench.html
(which blocks svg from loading).
You need to set window.titleBarStyle
to custom
to see the effect. Otherwise the effect is very limited.
- The opacity settings will blend into theme colors unless they already have opacity.
Fake mica
is by default turned off. Enable it withfrosted-glass-theme.fakeMica.enabled
setting. You need to change the theme colors as well since this extension does not apply opacity to your theme automatically. Here is an example:There are more examples in"workbench.colorCustomizations": { "[One Dark Pro]": { "menu.selectionBackground": "#ffffff", // Title bar opacity not work because: https://github.com/microsoft/vscode/blob/444d7a4b35745ed7733c700a8008f55cd659eb1d/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts#L682 // "titleBar.activeBackground": "#00000000", "editor.background": "#282c3499", "editorGutter.background": "#00000000", "editor.lineHighlightBackground": "#2c313c4d", "editorPane.background": "#00000000", "tab.inactiveBackground": "#00000000", "editorGroupHeader.tabsBackground": "#282c34cc", "breadcrumb.background": "#00000000", "panel.background": "#282c34cc", "terminal.background": "#00000000", "sideBar.background": "#21252bcc", "sideBarTitle.background": "#00000000", "statusBar.background": "#21252bcc", "statusBar.noFolderBackground": "#21252bcc", "input.background": "#1d1f234d", "dropdown.background": "#21252bcc", "dropdown.border": "#21252b4d", }, }
theme
folder. I welcome everyone to send pull request.
You can also try the commandfrosted-glass-theme.generateThemeMod
to automatically generate a theme, then add the result intocolorCustomizations
.- The
frosted-glass-theme.svg
simply loads svg from a url. The generated svg element is static and only use the css variable frommonaco-workbench
. More svgs can be found inresource
folder. - The
frosted-glass-theme.tintSvg
generate different svgs for each key defined infrosted-glass-theme.filter
and the id on<filter>
is changed toid-key
. Inside svg, you can use a special css variable--fgt-current-background
representing the element's background color. - The
frosted-glass-theme.filter
settings is a object that represents the filter to use with each element. The key is defined insrc-inject/acrylic.ts
s'colorVarList
. The value is of the type:Thetype Filter = { filter: string; disableBackgroundColor: boolean; opacity: number; }; type FilterPart = Partial<Filter>; const value = string | FilterPart | undefined;
disableBackgroundColor
disables backgrounds (the filter should provide it). However,minimap
,decorationsOverviewRuler
andterminalOverlay
are based on canvas and draw their own background color, thus you must specify a filter that does not provide a background color for them.
There is a special keydefault
which acts like a fallback. You can use a special keyword{key}
to represent the current key. Together withtintSvg
you can create different color svg for each element.
For example, you created a svg that contains a<filter>
whoseid
isfgt-acrylic
, and you add it totintSvg
. You can then set a valueurl(#fgt-acrylic-{key})
, so it will automatically use that element's background color. - The
frosted-glass-theme.animation
's key is defined insrc-inject/animation.ts
'sselectorMap
, or the key can also be css selector. The value can be either css animation defined insrc-inject/vscode-frosted-glass-theme.css
'sAnimation
or effect defined insrc-inject/effect/effect.ts
'seffectMap
. However, effects are not affected by css timing function, they are just triggered byanimationstart
event. - You can add your own effect by calling
window._fgtTheme.registerEffect(key: string, func: (e: Element) => void)
. - The default config is in
inject/config.json
.
- Open command panel, type in "Frosted Glass Theme: Disable", press enter.
- Uninstall from the extension panel as usual.
This extension modifies vs\code\electron-sandbox\workbench\workbench.html
to inject files. So use at your own risk.
Also, the extension keeps a backup in vs\code\workbench.*.bak-frosted-glass
in case anything goes wrong.