Notification Center Styler Configuration Schema & Options
Complete technical reference for top-level YAML configuration directives, token mechanics, and process host nuances supported by windows-11-notification-center-styler.
1. Complete Top-Level Schema Definition
theme: '' # Built-in preset theme name (empty string for custom suite theme)
styleConstants: # Shared token definitions and XAML object brushes
- TokenName=ScalarValue # Scalar tokens (e.g., margins, radii, dimensions)
- TokenName:=<XAML Object> # Complex XAML object brushes (WindhawkBlur, LinearGradientBrush)
themeResourceVariables: # Global theme resource brush replacements across host process
- variableKey: ResourceKeyName
value: "{ThemeResource ...}"
controlStyles: # Target selectors and styling rules applied to visual tree nodes
- target: SelectorExpression
styles:
- Property=ScalarValue
- Property:=<InlineXAML>
- Property@VisualState=Value
- Property:= # Empty value clears/resets the property
[!NOTE] Unsupported Keys: Unlike the Start Menu and File Explorer stylers, the Notification Center Styler does not support
webContentStyles,backgroundTranslucentEffect, orexplorerFrameContainerHeight.
2. Process Host Dual-Targeting: ShellExperienceHost vs ShellHost
A critical architectural aspect of styling the Notification Center on modern Windows 11 builds is the process migration:
- Windows 11 21H2, 22H2, and 23H2: Quick Settings and Notification Center run inside
ShellExperienceHost.exe. - Windows 11 24H2 (build 26100+): Quick Settings migrated into a dedicated host process,
ShellHost.exe, while toast notifications and certain legacy flyouts may still instantiate withinShellExperienceHost.exe.
windows-11-notification-center-styler automatically attaches to both process hosts. However, when inspecting elements using the hybrid C++/Python toolchain or UWPSpy, verify you are inspecting the appropriate process for your active build:
# Querying Quick Settings on Win11 24H2:
python tools/inspect_xaml.py -p ShellHost.exe --find ControlCenterRegion
3. Deep Dive: styleConstants Token Mechanics
Tokens in windows-11-notification-center-styler define reusable design values across visual targets.
Illustrative styleConstants Examples
[!NOTE] The names and values below are placeholders — define your own tokens. What matters is the shape of each declaration.
styleConstants:
# Blur & Glass Materials
- MyBlur=<WindhawkBlur BlurAmount="20" TintColor="#10808080"/>
- MySurfaceFill=<WindhawkBlur BlurAmount="20" TintColor="{ThemeResource SystemChromeMediumColor}" TintOpacity="0.7" />
- MyOverlay=<WindhawkBlur BlurAmount="30" TintColor="{ThemeResource SystemChromeMediumColor}" TintOpacity="0.8" />
- MyBackground=$MySurfaceFill
# Border Lighting & Accents
- MyRimBrush=<LinearGradientBrush StartPoint="0,0" EndPoint="0,1"><GradientStop Color="#60808080" Offset="0.0" /><GradientStop Color="#40808080" Offset="1" /></LinearGradientBrush>
- MySoftBrush=<WindhawkBlur BlurAmount="8" TintColor="#909090" TintOpacity="0.3"/>
- MyOverlayFill=<AcrylicBrush TintColor="{ThemeResource SystemAltLowColor}" TintOpacity="1" TintLuminosityOpacity="0.8" FallbackColor="{ThemeResource CardStrokeColorDefaultSolid}" />
- MyHoverFill=<AcrylicBrush TintColor="{ThemeResource SystemAltLowColor}" TintOpacity="1" TintLuminosityOpacity="0.5" FallbackColor="{ThemeResource CardStrokeColorDefaultSolid}" />
- MyAccentFill=<AcrylicBrush TintColor="{ThemeResource SystemAccentColor}" TintOpacity="1" TintLuminosityOpacity="0.5" FallbackColor="{ThemeResource CardStrokeColorDefaultSolid}" />
- MyElementFill=<SolidColorBrush Color="{ThemeResource SystemAltLowColor}" Opacity="0.25" />
# Geometric Scale
- MyRimThickness=0,1,0,1
- MyRadiusLarge=16 # Outermost flyout frame
- MyRadius=8 # Cards, tiles, and headers
- MyRadiusSmall=4 # Buttons and small controls
- MyImageSize=42
4. Double-Blur Mitigation Pattern
A common defect when styling UWP flyouts with custom WindhawkBlur is double-blurring, which produces an overly muddy or dark surface. In windows-11-notification-center-styler, this occurs because Windows renders a default system acrylic plate inside RootGridBorder.
To prevent double-blurring:
- Apply
WindhawkBlurto the outer container: ```yaml- target: Grid#ControlCenterRegion
styles:
- Background:=$MySurfaceFill
- BorderBrush:=$MyRimBrush
- BorderThickness=$MyRimThickness
- CornerRadius=$MyRadiusLarge
- Shadow:= ```
- target: Grid#ControlCenterRegion
styles:
- Collapse or clear the internal plate:
```yaml
- target: ControlCenter.ControlCenterView > Grid#RootGrid > Border#RootGridBorder
styles:
- Background:=
```
- Background:=
- target: ControlCenter.ControlCenterView > Grid#RootGrid > Border#RootGridBorder
styles: