This utility returns the full glass effect to the window frame, just like glass8 did.
Note
Currently only the following official versions of Windows are supported.
- Windows 10 20H2
- Windows 10 21H2
- Windows 10 22H2
- Windows 11 21H2
- Windows 11 22H2
- Windows 11 23H2
- Windows 11 24H2
Important
This software is intended for advanced users only. If you are a beginner and you do not have deeper knowledge of Windows (such as registry editing etc.) you should not install this software.
For the average users, you should consider using DWMBlurGlass.
- Extract the files from the Release page to
C:\
, better not put it in any other location. Important thing is that you must place all files in writable location (i.e. not inProgram Files
), because DWM process does not run under user's credential. If you don't do this, OpenGlass will not be able to download symbols or create debug logs! If you worry about the security, you can change the permission of OpenGlass.dll files to be writable by Administrators group only and leave it read-only to others. - Run
install.cmd
as administrator, this will create a scheduled task for you to run the OpenGlass host process which will inject DLL into DWM for you and also maintains that user settings are correctly loaded. - Run
startup.cmd
as administrator, this will run the host process manually. - When you use it for the first time or just after updating your system, OpenGlass will try to download the symbol files and you will see its symbol downloading dialog, just be patient for about 15s. When the symbol files are ready, enjoy!
- If OpenGlass is unable to download symbols, you can try running the
symchk-prepare-symbols.cmd
. - When you want to stop using OpenGlass or update the version of OpenGlass, running
shutdown.cmd
will remove the effects of OpenGlass for you and exit the host process. At this time, you can either replace the OpenGlass files or continue to rununinstall.cmd
and manually delete the remaining files to complete the uninstallation. - When your desktop freezes, you can try pressing Ctrl+Win+Shift+X to force the DWM process to terminate and generate a crash dump.
- When you experience a crash, OpenGlass is supposed to generate a large memory dump file in the
dumps
directory of the folder where it is located, please submit it to the developer if possible, this can help fix known or potential issues.
What are the DWM symbols and where to get them?
I see "Your DWM is incompatible" message. What to do?
OpenGlass works by injecting re-implemented code into several DWM functions. This can be achieved only when the absolute location of each function is known. These locations are described in special files called "program database" and you can recognize them by their .PDB extension. They contain set of all public DWM variables and functions (which are called symbols) together with their memory offsets (relative locations) and other information. OpenGlass is able to load these files from "symbols" directory stored in your OpenGlass installation directory, find appropriate symbol and compute absolute memory location.
Since the DWM functions are in different locations for each version of Windows, OpenGlass has to load their location from the external program databases. The best practice to know more and to get symbol files is reading Microsoft's documentation (you will need symbol files for dwmcore.dll and udwm.dll). The most important thing is that the version of the program database must correspond to the used DWM library version.
This can be easily done using the Windows Registry Editor in the branch HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\DWM
. You can find there already existing values with name ColorizationXXX
(where XXX represents an individual settable component) intended for active windows. If you create same values with suffix Inactive (i.e. ColorizationXXXInactive
), such settings will be applied to inactive windows.
But remember that colorization of the frame is also influenced by used theme. Majority of the themes have set opacity of inactive frames to 20%.
You can change the settings of OpenGlass via editing the Windows registry.
Important
Unless specified, the options below are stored in HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\DWM
(per-user) and HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\DWM
(global). OpenGlass prefers to read the settings in the HKCU.
When certain keys do not exist, OpenGlass uses the pre-defined default values.
Key Name | Type | Description |
---|---|---|
ColorizationColor ColorizationColorInactive |
DWORD | ARGB color used for the glass effect, alpha value is ignored. ℹ️ ColorizationColorInactive is only used when GlassType =0x0 |
ColorizationColorOverride | DWORD | Same as ColorizationColor , but OpenGlass prefers to use this item. It is optional.ℹ️ The reason this value exists is that some of the functions in uxtheme.dll since Windows 10 continually reset the value of this key, and you want to have it fixed. |
ColorizationAfterglow ColorizationColorBalance ColorizationAfterglowBalance ColorizationBlurBalance |
DWORD | Composition parameters for aero shader effect. ℹ️ Only used when GlassType =0x1 |
ColorizationAfterglowOverride ColorizationColorBalanceOverride ColorizationAfterglowBalanceOverride ColorizationBlurBalanceOverride |
DWORD | Same as above, but OpenGlass prefers to use these. They are optional. ℹ️ The reason these values exist is that some of the functions in uxtheme.dll since Windows 10 continually reset the values of some keys, and you want to have them fixed. |
GlassOpacity GlassOpacityInactive |
DWORD | The intensity of the color (0-100%). ℹ️ Only used when GlassType =0x0 |
ColorizationColorCaption ColorizationColorCaptionInactive |
DWORD | Color used for drawing window titles. Format is 0xBBGGRR. |
ColorizationOpaqueBlend | DWORD | Controls the transparency of glass effect. |
ColorizationOpaqueBlendColor | DWORD | ARGB base color used for opaque blending, alpha value is ignored. |
Key Name | Type | Description |
---|---|---|
GlassType | DWORD | The type of glass effect.
|
GlassOverrideAccent | DWORD | Overrides surfaces with accent blur with OpenGlass effects, I.E: the taskbar. |
CustomThemeReflection | String | path to file with texture that is stretched over whole desktop and rendered above glass regions (default is Aero Glass Win7 reflection texture) |
ColorizationGlassReflectionIntensity ColorizationGlassReflectionIntensityInactive |
DWORD | The intensity of reflection effect (0-100%). Default value is 0%. |
ColorizationGlassReflectionParallaxIntensity | DWORD | The parallax intensity of the reflection effect (I.E when moving the windows side to side). Default value is 13%. |
ColorizationGlassReflectionPolicy | DWORD | Controls where reflections should be rendered.
|
BlurDeviation | DWORD | Standard deviation for gaussian blur, default=30 (which means σ=3.0) Value 0 results in non-blurred transparency. |
BlurOptimization | DWORD | Quality of gaussian blur
|
RoundRectRadius | DWORD | The radius of glass geometry, Win8=0, Win7=6 |
CustomThemeMaterial | String | path to file with texture that is rendered (tiled) above glass regions (default is Acrylic noise texture) |
MaterialOpacity | DWORD | opacity of material texture (default = 0) |
Key Name | Type | Description |
---|---|---|
CaptionButtons | DWORD | Changes caption buttons sizes and the opacity of the button glyphs.
|
CenterCaption | DWORD | Controls how title bar text is aligned.
|
TextGlowMode | DWORD | Specifies how window caption glow effect will be rendered
|
CustomThemeAtlas | String | path to PNG file with theme resource (bitmap must have exactly the same layout as msstyle theme you are using!) |
DisableModernBorders | DWORD | Disable modern rounded window borders.
ℹ️ Only valid in Win11 |
The following registry items are located only in HKLM\Software\Microsoft\Windows\DWM
, you should NOT change the settings in this section unless you know what you are doing.
Key Name | Type | Description |
---|---|---|
DisableGlassOnBattery | DWORD |
|
DisableMemoryDump | DWORD |
|
DisabledHooks | DWORD | Controls which module's hooks are disabled, which will also control the availability of features.
ℹ️ Unless you want to ensure compatibility with third-party applications, you should not modify this key. |
When Desktop Windows Manager wants to draw frame controls (such as minimize/maximize/close buttons, frame shadow etc.), it uses images which are stored in your current theme. Normally, you would need to edit your theme and install UxTheme patch to be able to change the appearance of windows frames. OpenGlass comes with a feature that you can change these images directly without editing the theme. Just provide custom *.png image, point to it with CustomThemeAtlas registry settings and restart DWM.EXE process. The windows frames will be drawn using your custom image now. Just beware that the layout of theme resource depends on the current system theme. If you do not keep this layout, your frames will be rendered incorrectly.
Starting with the version 2.0, you can provide additional layout data by supplying a *.png.layout file in the folder where *.png atlas image is stored. OpenGlass will then ignore current theme layout and use data in this file. The description of the file format is:
- each line has format "x;y;z=a,b,c,d"
- x, y, z specify the part, its state and the property respectively
- a, b, c, d specify position rectangle in atlas image (for z = 8002) or the part sizing/content margins (for z = 3601/3602)
- see example layout file for description of individual part identifiers
- see MSDN documentation of GetThemeRect and GetThemeMargins function for further information
- line "CaptionHeight=n" allows you to change the size of caption buttons to "n" pixels
- everything after # is considered to be the comment and is ignored
Why is there no blur effect in the region/window/etc.?
Is it possible to enable the blur effect on the taskbar (Alt-Tab window, any other window etc.) ?
Remember that DWM is the rendering engine only and OpenGlass is the extension for it. It will apply glass effect only on the regions which are marked to have blur behind. It does not alter any region behavior on its own. If some application wants to have glass effect somewhere, it must enable it explicitly. The taskbar belongs to Windows Explorer shell, thus you must enable blur behind on your own by calling DWM API function DwmEnableBlurBehindWindow
. Blur effect will also apply tint of glass color.
Windows 8+ Desktop Window Manager contains new feature called accent. It is a kind of effect which makes whole window fully transparent with tint of glass color. This effect is enabled on the taskbar by default. If you enable blur behind the taskbar but don't disable accent effect (using SetWindowCompositionAttribute
API function), you may notice that it will be much more colorized, because the color of both effects will be simply added together.
If you are not familiar with DWM programming API, you can use any of the existing tools that have option to call the DwmEnableBlurBehindWindow
function, such as OpenShell, StartIsBack or StartAllBack.
Also remember that taskbar appearance is influenced by used theme where texture used for the taskbar is different from the atlas texture used for windows frames rendering.
OpenGlass does not provide any GUI nor commands to explicitly reload the configuration, you may consider using glass8's heritage AeroGlassGUI.exe
to refresh some of the settings.
However, it's actually quite easy to do so in C/C++.
PostMessage(FindWindow(TEXT("Dwm"), nullptr), WM_THEMECHANGED, 0, 0); // refresh part of the settings related to theme
PostMessage(FindWindow(TEXT("Dwm"), nullptr), WM_DWMCOLORIZATIONCHANGED, 0, 0); // refresh part of the settings related to color/backdrop
Tip
It is better to refresh only the corresponding part of the registry items, otherwise it will slow down the system.
Provided by @aubymori
Wallpaper: metalheart jawn #2 by @kfh83
Specifies the Remote Desktop Protocol: Composited Remoting V2, which displays the contents of the Windows-based desktop running on one machine on a second machine connected to the first via a network.
From there I can get a glimpse of how udwm and dwmcore interact in Windows 7 and how the relevant data structures are defined.
Detours is a software package for monitoring and instrumenting API calls on Windows.
VC-LTL is an open source CRT library based on the MS VCRT that reduce program binary size and say goodbye to Microsoft runtime DLLs, such as msvcr120.dll, api-ms-win-crt-time-l1-1-0.dll and other dependencies.
The Windows Implementation Libraries (WIL) is a header-only C++ library created to make life easier for developers on Windows through readable type-safe C++ interfaces for common Windows coding patterns.
Saved me some decompiling and reverse engineering time thanks to ADeltaX's blog!
The software was developed in free time and is now open source under the GPLv3 license.
Since Desktop Window Manager does not provide any official support for its extensibility, OpenGlass internally uses many undocumented techniques to achieve the desired effect. Although these techniques have been developed precisely with an emphasis on stability, performance and compatibility, it may happen that some future Windows update will break it. The developer cannot ensure that OpenGlass will be fully functional in such case but he will do its best to make it work as soon as possible.
If you are satisfied with my work, please consider donating via Ko-fi to support OpenGlass. By donation you agree with the following statements:
- You donate voluntarily without a claim for consideration.
- You donate as a natural person.