mirror of
https://github.com/Raphire/Win11Debloat.git
synced 2026-05-18 19:56:25 +00:00
Starting from this commit, Win11Debloat will automatically create a registry backup every time the script is run. This registry backup can be used to revert any registry changes made by the script.
1054 lines
79 KiB
XML
1054 lines
79 KiB
XML
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:shell="clr-namespace:System.Windows.Shell;assembly=PresentationFramework"
|
|
Title="Win11Debloat"
|
|
MinWidth="860" MinHeight="600"
|
|
ResizeMode="CanResize"
|
|
SnapsToDevicePixels="True"
|
|
WindowStartupLocation="CenterScreen"
|
|
WindowStyle="None"
|
|
AllowsTransparency="False"
|
|
Background="{DynamicResource BgColor}"
|
|
Foreground="{DynamicResource FgColor}">
|
|
<shell:WindowChrome.WindowChrome>
|
|
<shell:WindowChrome ResizeBorderThickness="5"
|
|
CaptionHeight="32"
|
|
CornerRadius="8"
|
|
GlassFrameThickness="0"
|
|
UseAeroCaptionButtons="False"/>
|
|
</shell:WindowChrome.WindowChrome>
|
|
<Window.Resources>
|
|
<!-- Sort column header hover style -->
|
|
<Style x:Key="SortHeaderBtnStyle" TargetType="StackPanel">
|
|
<Setter Property="Opacity" Value="1.0"/>
|
|
<Setter Property="Background" Value="Transparent"/>
|
|
<Style.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter Property="Opacity" Value="0.75"/>
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
<!-- TextBlock Label Style -->
|
|
<Style x:Key="LabelStyle" TargetType="TextBlock">
|
|
<Setter Property="Foreground" Value="{DynamicResource FgColor}"/>
|
|
<Setter Property="FontSize" Value="12"/>
|
|
<Setter Property="Margin" Value="0,0,0,2"/>
|
|
</Style>
|
|
|
|
<!-- Label Border Style for ComboBox labels -->
|
|
<Style x:Key="LabelBorderStyle" TargetType="Border">
|
|
<Setter Property="CornerRadius" Value="4"/>
|
|
<Setter Property="Padding" Value="6,2"/>
|
|
<Setter Property="Margin" Value="-4,-2,-4,0"/>
|
|
<Setter Property="Background" Value="Transparent"/>
|
|
<Setter Property="HorizontalAlignment" Value="Stretch"/>
|
|
</Style>
|
|
|
|
<!-- Category card border style -->
|
|
<Style x:Key="CategoryCardBorderStyle" TargetType="Border">
|
|
<Setter Property="BorderBrush" Value="{DynamicResource BorderColor}"/>
|
|
<Setter Property="BorderThickness" Value="1"/>
|
|
<Setter Property="CornerRadius" Value="4"/>
|
|
<Setter Property="Background" Value="{DynamicResource CardBgColor}"/>
|
|
<Setter Property="Padding" Value="16,12,16,2"/>
|
|
<Setter Property="Margin" Value="0,0,0,16"/>
|
|
</Style>
|
|
|
|
<!-- Category header text style -->
|
|
<Style x:Key="CategoryHeaderTextBlock" TargetType="TextBlock">
|
|
<Setter Property="FontWeight" Value="Bold"/>
|
|
<Setter Property="FontSize" Value="16"/>
|
|
<Setter Property="Margin" Value="0,0,0,13"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource FgColor}"/>
|
|
</Style>
|
|
|
|
<!-- Category header icon style -->
|
|
<Style x:Key="CategoryHeaderIcon" TargetType="TextBlock">
|
|
<Setter Property="FontFamily" Value="Segoe Fluent Icons"/>
|
|
<Setter Property="FontSize" Value="19"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource FgColor}"/>
|
|
<Setter Property="Margin" Value="0,0,8,12"/>
|
|
<Setter Property="VerticalAlignment" Value="Center"/>
|
|
</Style>
|
|
|
|
<!-- Category help link button/text styles -->
|
|
<Style x:Key="CategoryHelpLinkButtonStyle" TargetType="Button">
|
|
<Setter Property="Background" Value="Transparent"/>
|
|
<Setter Property="BorderBrush" Value="Transparent"/>
|
|
<Setter Property="BorderThickness" Value="0"/>
|
|
<Setter Property="Padding" Value="0"/>
|
|
<Setter Property="Margin" Value="6,1,0,13"/>
|
|
<Setter Property="VerticalAlignment" Value="Center"/>
|
|
<Setter Property="Focusable" Value="False"/>
|
|
<Setter Property="IsTabStop" Value="False"/>
|
|
<Setter Property="Cursor" Value="Hand"/>
|
|
<Setter Property="FocusVisualStyle" Value="{x:Null}"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource ButtonBg}"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="Button">
|
|
<Border Background="Transparent" BorderBrush="Transparent" BorderThickness="0">
|
|
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
|
</Border>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
<Style.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter Property="Foreground" Value="{DynamicResource ButtonHover}"/>
|
|
</Trigger>
|
|
<Trigger Property="IsPressed" Value="True">
|
|
<Setter Property="Foreground" Value="{DynamicResource ButtonPressed}"/>
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
|
|
<Style x:Key="CategoryHelpLinkTextStyle" TargetType="TextBlock">
|
|
<Setter Property="FontSize" Value="12"/>
|
|
<Setter Property="FontWeight" Value="Bold"/>
|
|
<Setter Property="VerticalAlignment" Value="Center"/>
|
|
<Setter Property="Foreground">
|
|
<Setter.Value>
|
|
<Binding RelativeSource="{RelativeSource AncestorType=Button}" Path="Foreground"/>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<!-- Overview changes text style -->
|
|
<Style x:Key="OverviewNoChangesTextStyle" TargetType="TextBlock">
|
|
<Setter Property="Foreground" Value="{DynamicResource FgColor}"/>
|
|
<Setter Property="Margin" Value="0,0,0,8"/>
|
|
<Setter Property="FontSize" Value="12"/>
|
|
<Setter Property="FontStyle" Value="Italic"/>
|
|
</Style>
|
|
|
|
<Style x:Key="OverviewChangeBulletStyle" TargetType="TextBlock">
|
|
<Setter Property="Foreground" Value="{DynamicResource FgColor}"/>
|
|
<Setter Property="Margin" Value="0,0,0,8"/>
|
|
<Setter Property="FontSize" Value="12"/>
|
|
<Setter Property="TextWrapping" Value="Wrap"/>
|
|
</Style>
|
|
|
|
<!-- TextBox Style for search -->
|
|
<Style TargetType="TextBox">
|
|
<Setter Property="CaretBrush" Value="{DynamicResource FgColor}"/>
|
|
</Style>
|
|
|
|
<!-- User TextBox Style with disabled state -->
|
|
<Style x:Key="UserTextBoxStyle" TargetType="TextBox">
|
|
<Setter Property="CaretBrush" Value="{DynamicResource FgColor}"/>
|
|
<Setter Property="Background" Value="Transparent"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource FgColor}"/>
|
|
<Setter Property="BorderThickness" Value="0"/>
|
|
<Setter Property="FontSize" Value="13"/>
|
|
<Setter Property="Margin" Value="1,0,0,1"/>
|
|
<Setter Property="VerticalAlignment" Value="Center"/>
|
|
<Setter Property="Padding" Value="0"/>
|
|
<Style.Triggers>
|
|
<Trigger Property="IsEnabled" Value="False">
|
|
<Setter Property="Background" Value="{DynamicResource ButtonDisabled}"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource ButtonTextDisabled}"/>
|
|
<Setter Property="Opacity" Value="0.6"/>
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
|
|
<!-- User TextBox Border Style with disabled state -->
|
|
<Style x:Key="UserTextBoxBorderStyle" TargetType="Border">
|
|
<Setter Property="Background" Value="{DynamicResource ComboBgColor}"/>
|
|
<Setter Property="BorderBrush" Value="{DynamicResource ButtonBorderColor}"/>
|
|
<Setter Property="BorderThickness" Value="1"/>
|
|
<Setter Property="CornerRadius" Value="4"/>
|
|
<Setter Property="Padding" Value="8,6"/>
|
|
<Style.Triggers>
|
|
<Trigger Property="IsEnabled" Value="False">
|
|
<Setter Property="Background" Value="{DynamicResource ButtonDisabled}"/>
|
|
<Setter Property="BorderBrush" Value="{DynamicResource BorderColor}"/>
|
|
<Setter Property="Opacity" Value="0.6"/>
|
|
</Trigger>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter Property="Background" Value="{DynamicResource ComboHoverColor}"/>
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
|
|
<!-- TextBlock style for App ID column in apps table -->
|
|
<Style x:Key="AppIdTextStyle" TargetType="TextBlock">
|
|
<Setter Property="Foreground" Value="{DynamicResource AppIdColor}"/>
|
|
<Setter Property="TextTrimming" Value="CharacterEllipsis"/>
|
|
<Setter Property="VerticalAlignment" Value="Center"/>
|
|
</Style>
|
|
|
|
<!-- TextBlock style for App Name column in apps table -->
|
|
<Style x:Key="AppNameTextStyle" TargetType="TextBlock">
|
|
<Setter Property="TextTrimming" Value="CharacterEllipsis"/>
|
|
<Setter Property="VerticalAlignment" Value="Center"/>
|
|
</Style>
|
|
|
|
<!-- TextBlock style for Description column in apps table -->
|
|
<Style x:Key="AppDescTextStyle" TargetType="TextBlock">
|
|
<Setter Property="TextTrimming" Value="CharacterEllipsis"/>
|
|
<Setter Property="VerticalAlignment" Value="Center"/>
|
|
<Setter Property="Margin" Value="8,0,8,0"/>
|
|
</Style>
|
|
|
|
<!-- Column widths for the app table rows and header (dot | name | description | id) -->
|
|
<GridLength x:Key="AppTableDotColWidth">16</GridLength>
|
|
<GridLength x:Key="AppTableNameColWidth">151</GridLength>
|
|
<GridLength x:Key="AppTableDescColWidth">1*</GridLength>
|
|
<GridLength x:Key="AppTableIdColWidth">261</GridLength>
|
|
|
|
<!-- Recommendation dot shape style for app table rows -->
|
|
<Style x:Key="AppRecommendationDotStyle" TargetType="Ellipse">
|
|
<Setter Property="Width" Value="9"/>
|
|
<Setter Property="Height" Value="9"/>
|
|
<Setter Property="HorizontalAlignment" Value="Left"/>
|
|
<Setter Property="VerticalAlignment" Value="Center"/>
|
|
</Style>
|
|
|
|
<!-- Container style for each dynamically-created app table row -->
|
|
<Style x:Key="AppTableRowStyle" TargetType="Grid">
|
|
<Setter Property="Margin" Value="0,1,0,0"/>
|
|
</Style>
|
|
|
|
<!-- Progress step indicator fill colors -->
|
|
<SolidColorBrush x:Key="ProgressActiveColor" Color="#0067c0"/>
|
|
<SolidColorBrush x:Key="ProgressInactiveColor" Color="#808080"/>
|
|
|
|
<!-- Validation feedback colors for username input -->
|
|
<SolidColorBrush x:Key="ValidationErrorColor" Color="#c42b1c"/>
|
|
<SolidColorBrush x:Key="ValidationSuccessColor" Color="#28a745"/>
|
|
|
|
<!-- Title Bar Button Style -->
|
|
<Style x:Key="TitleBarButton" TargetType="Button">
|
|
<Setter Property="Background" Value="Transparent"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource FgColor}"/>
|
|
<Setter Property="BorderThickness" Value="0"/>
|
|
<Setter Property="Width" Value="46"/>
|
|
<Setter Property="Height" Value="32"/>
|
|
<Setter Property="FontFamily" Value="Segoe Fluent Icons"/>
|
|
<Setter Property="FontSize" Value="10"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="Button">
|
|
<Border Background="{TemplateBinding Background}" BorderThickness="0" CornerRadius="0,8,0,0">
|
|
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
|
</Border>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
<Style x:Key="CloseButton" TargetType="Button" BasedOn="{StaticResource TitleBarButton}">
|
|
<Style.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter Property="Background" Value="{DynamicResource CloseHover}"/>
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
<Style x:Key="TitlebarButton" TargetType="Button" BasedOn="{StaticResource TitleBarButton}">
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="Button">
|
|
<Border Background="{TemplateBinding Background}" BorderThickness="0" CornerRadius="0">
|
|
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
|
</Border>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
<Style.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter Property="Background" Value="{DynamicResource TitlebarButtonHover}"/>
|
|
</Trigger>
|
|
<Trigger Property="IsPressed" Value="True">
|
|
<Setter Property="Background" Value="{DynamicResource TitlebarButtonPressed}"/>
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
|
|
<!-- SearchBox Border Style -->
|
|
<Style x:Key="SearchBoxBorderStyle" TargetType="Border">
|
|
<Setter Property="Background" Value="{DynamicResource ComboBgColor}"/>
|
|
<Setter Property="BorderBrush" Value="{DynamicResource ButtonBorderColor}"/>
|
|
<Setter Property="BorderThickness" Value="1"/>
|
|
<Setter Property="CornerRadius" Value="4"/>
|
|
<Setter Property="Width" Value="300"/>
|
|
<Setter Property="Padding" Value="8,6"/>
|
|
<Style.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter Property="Background" Value="{DynamicResource ComboHoverColor}"/>
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
|
|
<!-- ContextMenu Style -->
|
|
<Style TargetType="ContextMenu">
|
|
<Setter Property="Background" Value="{DynamicResource CardBgColor}"/>
|
|
<Setter Property="BorderBrush" Value="{DynamicResource BorderColor}"/>
|
|
<Setter Property="BorderThickness" Value="1"/>
|
|
<Setter Property="Padding" Value="4"/>
|
|
<Setter Property="HasDropShadow" Value="True"/>
|
|
<Setter Property="HorizontalOffset" Value="-12"/>
|
|
<Setter Property="VerticalOffset" Value="-12"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="ContextMenu">
|
|
<Border Margin="12">
|
|
<Border Background="{TemplateBinding Background}"
|
|
BorderBrush="{TemplateBinding BorderBrush}"
|
|
BorderThickness="{TemplateBinding BorderThickness}"
|
|
CornerRadius="4"
|
|
Padding="{TemplateBinding Padding}">
|
|
<Border.Effect>
|
|
<DropShadowEffect BlurRadius="12" Opacity="0.25" ShadowDepth="4"/>
|
|
</Border.Effect>
|
|
<StackPanel IsItemsHost="True"/>
|
|
</Border>
|
|
</Border>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<!-- MenuItem Style -->
|
|
<Style TargetType="MenuItem">
|
|
<Setter Property="Foreground" Value="{DynamicResource FgColor}"/>
|
|
<Setter Property="Background" Value="Transparent"/>
|
|
<Setter Property="Padding" Value="8,6"/>
|
|
<Setter Property="Height" Value="32"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="MenuItem">
|
|
<Border Background="{TemplateBinding Background}"
|
|
BorderThickness="0"
|
|
CornerRadius="4"
|
|
Padding="{TemplateBinding Padding}">
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="24"/>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<ContentPresenter Grid.Column="0" ContentSource="Icon"
|
|
VerticalAlignment="Center"
|
|
HorizontalAlignment="Center"/>
|
|
<ContentPresenter Grid.Column="1" ContentSource="Header"
|
|
VerticalAlignment="Center"
|
|
Margin="8,0,0,1"/>
|
|
</Grid>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsHighlighted" Value="True">
|
|
<Setter Property="Background" Value="{DynamicResource ComboItemHoverColor}"/>
|
|
</Trigger>
|
|
<Trigger Property="IsPressed" Value="True">
|
|
<Setter Property="Background" Value="{DynamicResource ComboItemSelectedColor}"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
</Window.Resources>
|
|
|
|
<Border x:Name="MainBorder" BorderBrush="{DynamicResource BorderColor}"
|
|
BorderThickness="1"
|
|
CornerRadius="8"
|
|
Background="{DynamicResource BgColor}"
|
|
Margin="0">
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="32"/>
|
|
<RowDefinition Height="*"/>
|
|
</Grid.RowDefinitions>
|
|
|
|
<!-- Resize Borders -->
|
|
<Rectangle x:Name="ResizeLeft" Width="5" HorizontalAlignment="Left" Fill="Transparent" Cursor="SizeWE" Grid.Row="0" Grid.RowSpan="2" Panel.ZIndex="100" Visibility="Collapsed" IsHitTestVisible="False"/>
|
|
<Rectangle x:Name="ResizeRight" Width="5" HorizontalAlignment="Right" Fill="Transparent" Cursor="SizeWE" Grid.Row="0" Grid.RowSpan="2" Panel.ZIndex="100" Visibility="Collapsed" IsHitTestVisible="False"/>
|
|
<Rectangle x:Name="ResizeTop" Height="5" VerticalAlignment="Top" Fill="Transparent" Cursor="SizeNS" Grid.Row="0" Panel.ZIndex="100" Visibility="Collapsed" IsHitTestVisible="False"/>
|
|
<Rectangle x:Name="ResizeBottom" Height="5" VerticalAlignment="Bottom" Fill="Transparent" Cursor="SizeNS" Grid.Row="1" Panel.ZIndex="100" Visibility="Collapsed" IsHitTestVisible="False"/>
|
|
<Rectangle x:Name="ResizeTopLeft" Width="8" Height="8" HorizontalAlignment="Left" VerticalAlignment="Top" Fill="Transparent" Cursor="SizeNWSE" Grid.Row="0" Panel.ZIndex="101" Visibility="Collapsed" IsHitTestVisible="False"/>
|
|
<Rectangle x:Name="ResizeTopRight" Width="8" Height="8" HorizontalAlignment="Right" VerticalAlignment="Top" Fill="Transparent" Cursor="SizeNESW" Grid.Row="0" Panel.ZIndex="101" Visibility="Collapsed" IsHitTestVisible="False"/>
|
|
<Rectangle x:Name="ResizeBottomLeft" Width="8" Height="8" HorizontalAlignment="Left" VerticalAlignment="Bottom" Fill="Transparent" Cursor="SizeNESW" Grid.Row="1" Panel.ZIndex="101" Visibility="Collapsed" IsHitTestVisible="False"/>
|
|
<Rectangle x:Name="ResizeBottomRight" Width="8" Height="8" HorizontalAlignment="Right" VerticalAlignment="Bottom" Fill="Transparent" Cursor="SizeNWSE" Grid.Row="1" Panel.ZIndex="101" Visibility="Collapsed" IsHitTestVisible="False"/>
|
|
|
|
<!-- Custom Title Bar -->
|
|
<Grid Grid.Row="0" x:Name="TitleBar">
|
|
<Border x:Name="TitleBarBackground" Background="{DynamicResource BgColor}" CornerRadius="8,8,0,0">
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Grid.Column="0"
|
|
Text="Win11Debloat"
|
|
Foreground="{DynamicResource FgColor}"
|
|
VerticalAlignment="Center"
|
|
Margin="12,0,0,0"
|
|
FontSize="12"/>
|
|
<StackPanel Grid.Column="1" Orientation="Horizontal">
|
|
<Button x:Name="KofiBtn" shell:WindowChrome.IsHitTestVisibleInChrome="True" Content="" FontFamily="Segoe Fluent Icons" FontSize="15" Style="{StaticResource TitlebarButton}" ToolTip="Support the creator" AutomationProperties.Name="Support the creator"/>
|
|
<Button x:Name="MenuBtn" shell:WindowChrome.IsHitTestVisibleInChrome="True" Content="" FontFamily="Segoe Fluent Icons" FontSize="15" Style="{StaticResource TitlebarButton}" ToolTip="Options" AutomationProperties.Name="Options">
|
|
<Button.ContextMenu>
|
|
<ContextMenu x:Name="MainMenu">
|
|
<ContextMenu.Resources>
|
|
<Style x:Key="{x:Static MenuItem.SeparatorStyleKey}" TargetType="Separator">
|
|
<Setter Property="Margin" Value="4,6"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="Separator">
|
|
<Border Height="1" Background="{DynamicResource BorderColor}" SnapsToDevicePixels="True" HorizontalAlignment="Stretch"/>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
</ContextMenu.Resources>
|
|
<MenuItem x:Name="ImportConfigBtn" Header="Import config" AutomationProperties.Name="Import configuration">
|
|
<MenuItem.Icon>
|
|
<TextBlock Text="" FontFamily="Segoe Fluent Icons" FontSize="16" Foreground="{DynamicResource FgColor}"/>
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
<MenuItem x:Name="ExportConfigBtn" Header="Export config" AutomationProperties.Name="Export configuration">
|
|
<MenuItem.Icon>
|
|
<TextBlock Text="" FontFamily="Segoe Fluent Icons" FontSize="16" Foreground="{DynamicResource FgColor}"/>
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
<MenuItem x:Name="RestoreBackupBtn" Header="Restore backup" AutomationProperties.Name="Restore registry backup">
|
|
<MenuItem.Icon>
|
|
<TextBlock Text="" FontFamily="Segoe Fluent Icons" FontSize="16" Foreground="{DynamicResource FgColor}"/>
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
<Separator />
|
|
<MenuItem x:Name="MenuDocumentation" Header="Documentation" AutomationProperties.Name="Documentation">
|
|
<MenuItem.Icon>
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="16" Foreground="{DynamicResource FgColor}"/>
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
<MenuItem x:Name="MenuReportBug" Header="Report a bug" AutomationProperties.Name="Report a bug">
|
|
<MenuItem.Icon>
|
|
<TextBlock Text="" FontFamily="Segoe Fluent Icons" FontSize="16" Foreground="{DynamicResource FgColor}"/>
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
<MenuItem x:Name="MenuLogs" Header="Logs" AutomationProperties.Name="Logs">
|
|
<MenuItem.Icon>
|
|
<TextBlock Text="" FontFamily="Segoe Fluent Icons" FontSize="16" Foreground="{DynamicResource FgColor}"/>
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
<MenuItem x:Name="MenuAbout" Header="About" AutomationProperties.Name="About">
|
|
<MenuItem.Icon>
|
|
<TextBlock Text="" FontFamily="Segoe Fluent Icons" FontSize="16" Foreground="{DynamicResource FgColor}"/>
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
</ContextMenu>
|
|
</Button.ContextMenu>
|
|
</Button>
|
|
<Button x:Name="CloseBtn" shell:WindowChrome.IsHitTestVisibleInChrome="True" Content="" Style="{StaticResource CloseButton}" ToolTip="Close" AutomationProperties.Name="Close"/>
|
|
</StackPanel>
|
|
</Grid>
|
|
</Border>
|
|
</Grid>
|
|
|
|
<!-- Main Content with Tabs -->
|
|
<Grid Grid.Row="1" x:Name="ContentGrid">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="*"/>
|
|
<RowDefinition Height="Auto"/>
|
|
</Grid.RowDefinitions>
|
|
|
|
<TabControl Grid.Row="0" Background="Transparent" BorderThickness="0" Margin="0" Padding="0" Name="MainTabControl">
|
|
<TabControl.Resources>
|
|
<Style TargetType="TabItem">
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="TabItem">
|
|
<Border Name="Border" Background="{DynamicResource SecondaryButtonBg}" BorderThickness="0" CornerRadius="0" Padding="10,10" Margin="0">
|
|
<ContentPresenter ContentSource="Header" HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsSelected" Value="True">
|
|
<Setter TargetName="Border" Property="Background" Value="{DynamicResource ButtonBg}"/>
|
|
<Setter Property="Foreground" Value="White"/>
|
|
</Trigger>
|
|
<Trigger Property="IsSelected" Value="False">
|
|
<Setter Property="Foreground" Value="{DynamicResource FgColor}"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
</TabControl.Resources>
|
|
<TabControl.ItemContainerStyle>
|
|
<Style TargetType="TabItem">
|
|
<Setter Property="Visibility" Value="Collapsed"/>
|
|
</Style>
|
|
</TabControl.ItemContainerStyle>
|
|
|
|
<!-- Home Tab -->
|
|
<TabItem Header="Home" x:Name="HomeTab">
|
|
<Grid>
|
|
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" Width="600">
|
|
<!-- Logo -->
|
|
<Viewbox Width="220" Height="220" Margin="0,32,0,10" HorizontalAlignment="Center">
|
|
<Grid Width="220" Height="220">
|
|
<!-- Windows logo style icon -->
|
|
<Path x:Name="LogoFallback" Data="M0,0 L80,0 L80,80 L0,80 Z M90,0 L170,0 L170,80 L90,80 Z M0,90 L80,90 L80,170 L0,170 Z M90,90 L170,90 L170,170 L90,170 Z"
|
|
Fill="{DynamicResource ButtonBg}" Stretch="Uniform" Margin="10"/>
|
|
<!-- Sparkle effects -->
|
|
<Canvas HorizontalAlignment="Right" VerticalAlignment="Bottom" Width="45" Height="45" Margin="0,0,2,2">
|
|
<Path Canvas.Left="10" Canvas.Top="16" Data="M12,0 L14,10 L24,12 L14,14 L12,24 L10,14 L0,12 L10,10 Z"
|
|
Fill="{DynamicResource AccentColor}" Width="38" Height="38" Stretch="Uniform"/>
|
|
<Path Canvas.Left="0" Canvas.Top="0" Data="M6,0 L7,5 L12,6 L7,7 L6,12 L5,7 L0,6 L5,5 Z"
|
|
Fill="{DynamicResource AccentColor}" Width="20" Height="20" Stretch="Uniform"/>
|
|
<Path Canvas.Left="35" Canvas.Top="8" Data="M4,0 L5,3 L8,4 L5,5 L4,8 L3,5 L0,4 L3,3 Z"
|
|
Fill="{DynamicResource AccentColor}" Width="15" Height="15" Stretch="Uniform"/>
|
|
</Canvas>
|
|
<!-- Actual logo image if available -->
|
|
<Image x:Name="LogoImage" Stretch="Uniform"/>
|
|
</Grid>
|
|
</Viewbox>
|
|
|
|
<!-- Title -->
|
|
<TextBlock Text="Welcome to Win11Debloat" FontSize="28" FontWeight="Bold" Foreground="{DynamicResource FgColor}" HorizontalAlignment="Center" Margin="0,0,0,10"/>
|
|
<TextBlock TextWrapping="Wrap" Foreground="{DynamicResource FgColor}" FontSize="16" LineHeight="22" HorizontalAlignment="Center" Margin="0,0,0,30">
|
|
<Run Text="Your clean Windows experience is just a few clicks away!"/>
|
|
</TextBlock>
|
|
|
|
<!-- Action Buttons -->
|
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Margin="0,20,0,0">
|
|
<Button x:Name="HomeDefaultModeBtn" Width="180" Height="50" Style="{DynamicResource PrimaryButtonStyle}" Margin="0,0,12,0" AutomationProperties.Name="Default Mode">
|
|
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
|
|
<TextBlock Text="" FontFamily="Segoe Fluent Icons" FontSize="16" VerticalAlignment="Center" Margin="0,0,8,0"/>
|
|
<TextBlock Text="Default Mode" ToolTip="Quickly select the recommended settings" FontWeight="SemiBold" VerticalAlignment="Center" FontSize="17" Margin="0,0,0,2"/>
|
|
</StackPanel>
|
|
</Button>
|
|
<Button x:Name="HomeStartBtn" Width="180" Height="50" Style="{DynamicResource SecondaryButtonStyle}" AutomationProperties.Name="Custom Setup">
|
|
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
|
|
<TextBlock Text="" FontFamily="Segoe Fluent Icons" FontSize="14" VerticalAlignment="Center" Margin="0,0,8,0"/>
|
|
<TextBlock Text="Custom Setup" ToolTip="Manually select your preferred settings" FontWeight="SemiBold" VerticalAlignment="Center" FontSize="17" Margin="0,0,0,2"/>
|
|
</StackPanel>
|
|
</Button>
|
|
</StackPanel>
|
|
</StackPanel>
|
|
</Grid>
|
|
</TabItem>
|
|
|
|
<!-- App Removal Tab -->
|
|
<TabItem Header="App Removal">
|
|
<DockPanel>
|
|
<Border DockPanel.Dock="Top" Padding="20,10,20,0">
|
|
<StackPanel>
|
|
<TextBlock Text="App Removal" FontWeight="Bold" FontSize="20" Margin="0,0,0,5" Foreground="{DynamicResource FgColor}"/>
|
|
<TextBlock Text="Select which apps you want to remove from your system" FontSize="13" Margin="0,0,0,20" Foreground="{DynamicResource FgColor}" TextWrapping="Wrap"/>
|
|
|
|
<!-- Filter Options -->
|
|
<Grid Margin="0,0,0,12">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="10"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<StackPanel Orientation="Horizontal" Grid.Column="0">
|
|
<ToggleButton x:Name="PresetsBtn" ToolTip="Select or clear app presets" Height="32" Padding="10,0" Margin="0,0,10,0" AutomationProperties.Name="App Presets">
|
|
<ToggleButton.Style>
|
|
<Style TargetType="ToggleButton">
|
|
<Setter Property="Background" Value="{DynamicResource SecondaryButtonBg}"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource FgColor}"/>
|
|
<Setter Property="BorderBrush" Value="{DynamicResource ButtonBorderColor}"/>
|
|
<Setter Property="BorderThickness" Value="1"/>
|
|
<Setter Property="FontSize" Value="14"/>
|
|
<Setter Property="Cursor" Value="Hand"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="ToggleButton">
|
|
<Border x:Name="Border" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="4" Padding="{TemplateBinding Padding}">
|
|
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,0,0,1"/>
|
|
</Border>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
<Style.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter Property="Background" Value="{DynamicResource SecondaryButtonHover}"/>
|
|
</Trigger>
|
|
<Trigger Property="IsPressed" Value="True">
|
|
<Setter Property="Background" Value="{DynamicResource SecondaryButtonPressed}"/>
|
|
</Trigger>
|
|
<Trigger Property="IsChecked" Value="True">
|
|
<Setter Property="Background" Value="{DynamicResource SecondaryButtonHover}"/>
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</ToggleButton.Style>
|
|
<StackPanel Orientation="Horizontal">
|
|
<TextBlock Text="" FontFamily="Segoe Fluent Icons" FontSize="14" VerticalAlignment="Center" Margin="0,0,6,0"/>
|
|
<TextBlock Text="Quick Select" FontSize="13" VerticalAlignment="Center" Margin="0,0,6,0"/>
|
|
<TextBlock x:Name="PresetsArrow" Text="" FontFamily="Segoe Fluent Icons" FontSize="10" VerticalAlignment="Center" RenderTransformOrigin="0.5,0.5">
|
|
<TextBlock.RenderTransform>
|
|
<RotateTransform x:Name="PresetsArrowRotation" Angle="0"/>
|
|
</TextBlock.RenderTransform>
|
|
</TextBlock>
|
|
</StackPanel>
|
|
</ToggleButton>
|
|
<Button x:Name="ClearAppSelectionBtn" ToolTip="Clear all selected apps" Style="{DynamicResource SecondaryButtonStyle}" Height="32" Padding="10,0" Margin="0,0,10,0" AutomationProperties.Name="Clear Selection">
|
|
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
|
|
<TextBlock Text="" FontFamily="Segoe Fluent Icons" FontSize="14" VerticalAlignment="Center" Margin="0,0,6,0"/>
|
|
<TextBlock Text="Clear Selection" FontSize="13" VerticalAlignment="Center" Margin="0,0,0,1"/>
|
|
</StackPanel>
|
|
</Button>
|
|
<Popup x:Name="PresetsPopup" PlacementTarget="{Binding ElementName=PresetsBtn}" Placement="Bottom" StaysOpen="True" AllowsTransparency="True" VerticalOffset="2">
|
|
<Border Background="{DynamicResource CardBgColor}" BorderBrush="{DynamicResource BorderColor}" BorderThickness="1" CornerRadius="6" Padding="4,6" Margin="12">
|
|
<Border.Effect>
|
|
<DropShadowEffect BlurRadius="12" Opacity="0.25" ShadowDepth="4"/>
|
|
</Border.Effect>
|
|
<StackPanel x:Name="PresetsPanel" MinWidth="220">
|
|
<CheckBox x:Name="PresetDefaultApps" Content="Default apps" IsThreeState="True" ToolTip="Select the apps that are safe to remove for most users" Foreground="{DynamicResource FgColor}" Margin="8,4" AutomationProperties.Name="Default selection"/>
|
|
<CheckBox x:Name="PresetLastUsed" Content="Last used apps" IsThreeState="True" ToolTip="Select the apps that were removed the last time Win11Debloat was run" Foreground="{DynamicResource FgColor}" Margin="8,4" AutomationProperties.Name="Last used selection"/>
|
|
<Separator Margin="4,6" Background="{DynamicResource BorderColor}"/>
|
|
<StackPanel x:Name="JsonPresetsPanel"/>
|
|
</StackPanel>
|
|
</Border>
|
|
</Popup>
|
|
</StackPanel>
|
|
|
|
<CheckBox x:Name="OnlyInstalledAppsBox" Grid.Column="2" Content="Only show installed apps" IsChecked="False" Foreground="{DynamicResource FgColor}" VerticalAlignment="Center" AutomationProperties.Name="Only show installed apps"/>
|
|
|
|
<Border x:Name="AppSearchBorder" Grid.Column="4">
|
|
<Border.Style>
|
|
<Style TargetType="Border" BasedOn="{StaticResource SearchBoxBorderStyle}">
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding ElementName=AppSearchBox, Path=IsFocused}" Value="True">
|
|
<Setter Property="Background" Value="{DynamicResource InputFocusColor}"/>
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</Border.Style>
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Grid.Column="0" Text="" FontFamily="Segoe Fluent Icons" FontSize="14" VerticalAlignment="Center" Margin="4,0,8,0" Foreground="{DynamicResource FgColor}"/>
|
|
<TextBlock x:Name="AppSearchPlaceholder" Grid.Column="1" Text="Search app" Foreground="{DynamicResource FgColor}" Opacity="0.5" FontSize="13" Margin="3,0,0,1" VerticalAlignment="Center" IsHitTestVisible="False"/>
|
|
<TextBox x:Name="AppSearchBox" Grid.Column="1" Background="Transparent" Foreground="{DynamicResource FgColor}" BorderThickness="0" FontSize="13" Margin="1,0,0,1" VerticalAlignment="Center" Text="" AutomationProperties.Name="Search app"/>
|
|
</Grid>
|
|
</Border>
|
|
</Grid>
|
|
</StackPanel>
|
|
</Border>
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="*"/>
|
|
<RowDefinition Height="Auto"/>
|
|
</Grid.RowDefinitions>
|
|
|
|
<!-- Apps List -->
|
|
<Grid Grid.Row="0" Margin="20,0,20,10">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="*"/>
|
|
</Grid.RowDefinitions>
|
|
<!-- Column Headers -->
|
|
<Border Grid.Row="0" Background="{DynamicResource TableHeaderColor}" BorderBrush="{DynamicResource BorderColor}" BorderThickness="1,1,1,0" CornerRadius="4,4,0,0">
|
|
<Grid Margin="42,6,23,8">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="{StaticResource AppTableDotColWidth}"/>
|
|
<ColumnDefinition Width="{StaticResource AppTableNameColWidth}"/>
|
|
<ColumnDefinition Width="{StaticResource AppTableDescColWidth}"/>
|
|
<ColumnDefinition Width="{StaticResource AppTableIdColWidth}"/>
|
|
</Grid.ColumnDefinitions>
|
|
<StackPanel x:Name="HeaderNameBtn" Grid.Column="1" Orientation="Horizontal" Cursor="Hand" VerticalAlignment="Center" Style="{StaticResource SortHeaderBtnStyle}">
|
|
<TextBlock Text="Name" FontWeight="SemiBold" FontSize="16" Foreground="{DynamicResource FgColor}"/>
|
|
<TextBlock x:Name="SortArrowName" Text="" FontFamily="Segoe Fluent Icons" FontSize="11" Foreground="{DynamicResource FgColor}" VerticalAlignment="Center" Margin="5,1,0,0" Opacity="0.3" RenderTransformOrigin="0.5,0.5">
|
|
<TextBlock.RenderTransform><RotateTransform Angle="0"/></TextBlock.RenderTransform>
|
|
</TextBlock>
|
|
</StackPanel>
|
|
<StackPanel x:Name="HeaderDescriptionBtn" Grid.Column="2" Orientation="Horizontal" Cursor="Hand" VerticalAlignment="Center" Margin="8,0,0,0" Style="{StaticResource SortHeaderBtnStyle}">
|
|
<TextBlock Text="Description" FontWeight="SemiBold" FontSize="16" Foreground="{DynamicResource FgColor}"/>
|
|
<TextBlock x:Name="SortArrowDescription" Text="" FontFamily="Segoe Fluent Icons" FontSize="11" Foreground="{DynamicResource FgColor}" VerticalAlignment="Center" Margin="5,1,0,0" Opacity="0.3" RenderTransformOrigin="0.5,0.5">
|
|
<TextBlock.RenderTransform><RotateTransform Angle="0"/></TextBlock.RenderTransform>
|
|
</TextBlock>
|
|
</StackPanel>
|
|
<StackPanel x:Name="HeaderAppIdBtn" Grid.Column="3" Orientation="Horizontal" Cursor="Hand" VerticalAlignment="Center" Style="{StaticResource SortHeaderBtnStyle}">
|
|
<TextBlock Text="App ID" FontWeight="SemiBold" FontSize="16" Foreground="{DynamicResource FgColor}"/>
|
|
<TextBlock x:Name="SortArrowAppId" Text="" FontFamily="Segoe Fluent Icons" FontSize="11" Foreground="{DynamicResource FgColor}" VerticalAlignment="Center" Margin="5,1,0,0" Opacity="0.3" RenderTransformOrigin="0.5,0.5">
|
|
<TextBlock.RenderTransform><RotateTransform Angle="0"/></TextBlock.RenderTransform>
|
|
</TextBlock>
|
|
</StackPanel>
|
|
</Grid>
|
|
</Border>
|
|
<!-- Apps content -->
|
|
<Border Grid.Row="1" BorderBrush="{DynamicResource BorderColor}" CornerRadius="0,0,4,4" BorderThickness="1" Background="{DynamicResource CardBgColor}" Padding="0,1,1,1">
|
|
<Grid>
|
|
<ScrollViewer VerticalScrollBarVisibility="Visible">
|
|
<StackPanel x:Name="AppSelectionPanel" Margin="10,4,0,4"/>
|
|
</ScrollViewer>
|
|
<Border x:Name="LoadingAppsIndicator" CornerRadius="0,0,4,4" Background="{DynamicResource CardBgColor}" Opacity="0.8" Visibility="Collapsed">
|
|
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
|
|
<TextBlock Text="" FontFamily="Segoe Fluent Icons" FontSize="28" Foreground="{DynamicResource FgColor}" HorizontalAlignment="Center" Margin="0,0,0,8" RenderTransformOrigin="0.5,0.5">
|
|
<TextBlock.RenderTransform>
|
|
<RotateTransform Angle="0"/>
|
|
</TextBlock.RenderTransform>
|
|
<TextBlock.Triggers>
|
|
<EventTrigger RoutedEvent="Loaded">
|
|
<BeginStoryboard>
|
|
<Storyboard>
|
|
<DoubleAnimation Storyboard.TargetProperty="(UIElement.RenderTransform).(RotateTransform.Angle)"
|
|
From="0" To="360"
|
|
Duration="0:0:1.5"
|
|
RepeatBehavior="Forever"/>
|
|
</Storyboard>
|
|
</BeginStoryboard>
|
|
</EventTrigger>
|
|
</TextBlock.Triggers>
|
|
</TextBlock>
|
|
<TextBlock Text="Loading apps..." FontSize="16" FontWeight="SemiBold" Foreground="{DynamicResource FgColor}" HorizontalAlignment="Center"/>
|
|
</StackPanel>
|
|
</Border>
|
|
</Grid>
|
|
</Border>
|
|
</Grid>
|
|
|
|
<!-- Status Info -->
|
|
<StackPanel Grid.Row="1" Orientation="Horizontal" Margin="20,0,20,0">
|
|
<TextBlock x:Name="AppSelectionStatus" Text="" Foreground="{DynamicResource FgColor}" Margin="10,0,0,5" HorizontalAlignment="Left"/>
|
|
</StackPanel>
|
|
</Grid>
|
|
</DockPanel>
|
|
</TabItem>
|
|
|
|
<!-- Tweaks Tab -->
|
|
<TabItem Header="Tweaks">
|
|
<DockPanel>
|
|
<Border DockPanel.Dock="Top" Padding="20,10,20,0" Background="{DynamicResource BgColor}">
|
|
<StackPanel>
|
|
<TextBlock Text="System Tweaks" FontWeight="Bold" FontSize="20" Margin="0,0,0,5" Foreground="{DynamicResource FgColor}"/>
|
|
<TextBlock Text="Select which tweaks you want to apply to your system, hover over settings for more information" FontSize="13" Margin="0,0,0,20" Foreground="{DynamicResource FgColor}" TextWrapping="Wrap"/>
|
|
|
|
<!-- Filter Options -->
|
|
<Grid Margin="0,0,0,12">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<StackPanel Grid.Column="0" Orientation="Horizontal">
|
|
<ToggleButton x:Name="TweaksPresetsBtn" ToolTip="Select tweak presets" Height="32" Padding="10,0" Margin="0,0,10,0" AutomationProperties.Name="Tweak Presets">
|
|
<ToggleButton.Style>
|
|
<Style TargetType="ToggleButton">
|
|
<Setter Property="Background" Value="{DynamicResource SecondaryButtonBg}"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource FgColor}"/>
|
|
<Setter Property="BorderBrush" Value="{DynamicResource ButtonBorderColor}"/>
|
|
<Setter Property="BorderThickness" Value="1"/>
|
|
<Setter Property="FontSize" Value="14"/>
|
|
<Setter Property="Cursor" Value="Hand"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="ToggleButton">
|
|
<Border x:Name="Border" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="4" Padding="{TemplateBinding Padding}">
|
|
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,0,0,1"/>
|
|
</Border>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
<Style.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter Property="Background" Value="{DynamicResource SecondaryButtonHover}"/>
|
|
</Trigger>
|
|
<Trigger Property="IsPressed" Value="True">
|
|
<Setter Property="Background" Value="{DynamicResource SecondaryButtonPressed}"/>
|
|
</Trigger>
|
|
<Trigger Property="IsChecked" Value="True">
|
|
<Setter Property="Background" Value="{DynamicResource SecondaryButtonHover}"/>
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</ToggleButton.Style>
|
|
<StackPanel Orientation="Horizontal">
|
|
<TextBlock Text="" FontFamily="Segoe Fluent Icons" FontSize="14" VerticalAlignment="Center" Margin="0,1,6,0"/>
|
|
<TextBlock Text="Quick Select" FontSize="13" VerticalAlignment="Center" Margin="0,0,6,0"/>
|
|
<TextBlock x:Name="TweaksPresetsArrow" Text="" FontFamily="Segoe Fluent Icons" FontSize="10" VerticalAlignment="Center" RenderTransformOrigin="0.5,0.5">
|
|
<TextBlock.RenderTransform>
|
|
<RotateTransform Angle="0"/>
|
|
</TextBlock.RenderTransform>
|
|
</TextBlock>
|
|
</StackPanel>
|
|
</ToggleButton>
|
|
<Button x:Name="ClearAllTweaksBtn" ToolTip="Clear all selected tweaks" Style="{DynamicResource SecondaryButtonStyle}" Padding="10,0" Height="32" Margin="0,0,10,0" AutomationProperties.Name="Clear Selection">
|
|
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
|
|
<TextBlock Text="" FontFamily="Segoe Fluent Icons" FontSize="14" VerticalAlignment="Center" Margin="0,0,6,0"/>
|
|
<TextBlock Text="Clear Selection" FontSize="13" VerticalAlignment="Center" Margin="0,0,0,1"/>
|
|
</StackPanel>
|
|
</Button>
|
|
<Popup x:Name="TweaksPresetsPopup" PlacementTarget="{Binding ElementName=TweaksPresetsBtn}" Placement="Bottom" StaysOpen="True" AllowsTransparency="True" VerticalOffset="2">
|
|
<Border Background="{DynamicResource CardBgColor}" BorderBrush="{DynamicResource BorderColor}" BorderThickness="1" CornerRadius="6" Padding="4,6" Margin="12">
|
|
<Border.Effect>
|
|
<DropShadowEffect BlurRadius="12" Opacity="0.25" ShadowDepth="4"/>
|
|
</Border.Effect>
|
|
<StackPanel MinWidth="220">
|
|
<CheckBox x:Name="PresetDefaultTweaksBtn" Content="Default settings" IsThreeState="True" ToolTip="Select the settings that are recommended for most people" Foreground="{DynamicResource FgColor}" Style="{DynamicResource PresetCheckBoxStyle}" AutomationProperties.Name="Default settings"/>
|
|
<CheckBox x:Name="PresetLastUsedTweaksBtn" Content="Last used settings" IsThreeState="True" ToolTip="Select the settings that were used the last time Win11Debloat was run" Foreground="{DynamicResource FgColor}" Style="{DynamicResource PresetCheckBoxStyle}" AutomationProperties.Name="Last used settings"/>
|
|
<Separator Margin="4,6" Background="{DynamicResource BorderColor}"/>
|
|
<CheckBox x:Name="PresetPrivacyTweaksBtn" Content="Privacy & Suggested Content" IsThreeState="True" ToolTip="Select all Privacy & Suggested Content tweaks" Foreground="{DynamicResource FgColor}" Style="{DynamicResource PresetCheckBoxStyle}" AutomationProperties.Name="All Privacy and Suggested Content"/>
|
|
<CheckBox x:Name="PresetAITweaksBtn" Content="AI features" IsThreeState="True" ToolTip="Select all AI feature tweaks" Foreground="{DynamicResource FgColor}" Style="{DynamicResource PresetCheckBoxStyle}" AutomationProperties.Name="All AI features"/>
|
|
</StackPanel>
|
|
</Border>
|
|
</Popup>
|
|
</StackPanel>
|
|
|
|
<Border x:Name="TweakSearchBorder" Grid.Column="2">
|
|
<Border.Style>
|
|
<Style TargetType="Border" BasedOn="{StaticResource SearchBoxBorderStyle}">
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding ElementName=TweakSearchBox, Path=IsFocused}" Value="True">
|
|
<Setter Property="Background" Value="{DynamicResource InputFocusColor}"/>
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</Border.Style>
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Grid.Column="0" Text="" FontFamily="Segoe Fluent Icons" FontSize="14" VerticalAlignment="Center" Margin="4,0,8,0" Foreground="{DynamicResource FgColor}"/>
|
|
<TextBlock x:Name="TweakSearchPlaceholder" Grid.Column="1" Text="Search setting" Foreground="{DynamicResource FgColor}" Opacity="0.5" FontSize="13" Margin="3,0,0,1" VerticalAlignment="Center" IsHitTestVisible="False"/>
|
|
<TextBox x:Name="TweakSearchBox" Grid.Column="1" Background="Transparent" Foreground="{DynamicResource FgColor}" BorderThickness="0" FontSize="13" Margin="1,0,0,1" VerticalAlignment="Center" Text=""/>
|
|
</Grid>
|
|
</Border>
|
|
</Grid>
|
|
</StackPanel>
|
|
</Border>
|
|
<Grid>
|
|
<ScrollViewer x:Name="TweaksScrollViewer" VerticalScrollBarVisibility="Auto" Margin="0,-20,0,0" Padding="20,10,20,0">
|
|
<Grid x:Name="TweaksGrid" Margin="0,10,0,5">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<!-- Column 1: Dynamically populated -->
|
|
<StackPanel Grid.Column="0" x:Name="Column0Panel" Margin="0,0,15,0"/>
|
|
|
|
<!-- Column 2: Dynamically populated -->
|
|
<StackPanel Grid.Column="1" x:Name="Column1Panel" Margin="0,0,15,0"/>
|
|
|
|
<!-- Column 3: Dynamically populated -->
|
|
<StackPanel Grid.Column="2" x:Name="Column2Panel"/>
|
|
</Grid>
|
|
</ScrollViewer>
|
|
<!-- Top fade gradient -->
|
|
<Border IsHitTestVisible="False" VerticalAlignment="Top" Height="10" Margin="0,-12,20,0" Background="{DynamicResource BgColor}">
|
|
<Border.OpacityMask>
|
|
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
|
|
<GradientStop Color="Black" Offset="0"/>
|
|
<GradientStop Color="Black" Offset="0.5"/>
|
|
<GradientStop Color="Transparent" Offset="1"/>
|
|
</LinearGradientBrush>
|
|
</Border.OpacityMask>
|
|
</Border>
|
|
<!-- Bottom fade gradient -->
|
|
<Border IsHitTestVisible="False" VerticalAlignment="Bottom" Height="20" Margin="0,0,20,0" Background="{DynamicResource BgColor}">
|
|
<Border.OpacityMask>
|
|
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
|
|
<GradientStop Color="Transparent" Offset="0"/>
|
|
<GradientStop Color="Black" Offset="1"/>
|
|
</LinearGradientBrush>
|
|
</Border.OpacityMask>
|
|
</Border>
|
|
</Grid>
|
|
</DockPanel>
|
|
</TabItem>
|
|
|
|
<!-- Deployment Settings Tab -->
|
|
<TabItem Header="Deployment Settings" x:Name="DeploymentSettingsTab">
|
|
<DockPanel>
|
|
<Border DockPanel.Dock="Top" Padding="20,10,20,0">
|
|
<StackPanel>
|
|
<TextBlock Text="Deployment Settings" FontWeight="Bold" FontSize="20" Margin="0,0,0,5" Foreground="{DynamicResource FgColor}"/>
|
|
<TextBlock Text="Configure how your changes will be applied and more" FontSize="13" Margin="0,0,0,20" Foreground="{DynamicResource FgColor}" TextWrapping="Wrap"/>
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="*"/>
|
|
<RowDefinition Height="Auto"/>
|
|
</Grid.RowDefinitions>
|
|
|
|
<Grid Grid.Row="0">
|
|
<ScrollViewer VerticalScrollBarVisibility="Auto" Margin="0,-20,0,0" Padding="20,10,20,0">
|
|
<Grid Margin="0,10,0,5">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
</Grid.RowDefinitions>
|
|
|
|
<!-- Apply Changes To -->
|
|
<Border Grid.Row="0" BorderBrush="{DynamicResource BorderColor}" BorderThickness="1" CornerRadius="4" Background="{DynamicResource CardBgColor}" Padding="16,12" Margin="0,0,0,16">
|
|
<StackPanel>
|
|
<TextBlock Text="Apply Changes To" Style="{StaticResource CategoryHeaderTextBlock}"/>
|
|
<ComboBox x:Name="UserSelectionCombo" Margin="0,0,0,6" AutomationProperties.Name="Apply Changes To">
|
|
<ComboBoxItem Content="Current User" IsSelected="True"/>
|
|
<ComboBoxItem Content="Other User"/>
|
|
<ComboBoxItem Content="Windows Default User (Sysprep)"/>
|
|
</ComboBox>
|
|
<StackPanel x:Name="OtherUserPanel" Visibility="Collapsed" Margin="0,0,0,6">
|
|
<TextBlock x:Name="UsernameValidationMessage" Text="" FontStyle="Italic" Foreground="{DynamicResource CloseHover}" FontSize="11" Margin="3,0,0,4" TextWrapping="Wrap"/>
|
|
<Border IsEnabled="{Binding ElementName=OtherUsernameTextBox, Path=IsEnabled}">
|
|
<Border.Style>
|
|
<Style TargetType="Border" BasedOn="{StaticResource UserTextBoxBorderStyle}">
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding ElementName=OtherUsernameTextBox, Path=IsFocused}" Value="True">
|
|
<Setter Property="Background" Value="{DynamicResource InputFocusColor}"/>
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</Border.Style>
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Grid.Column="0" Text="" FontFamily="Segoe Fluent Icons" FontSize="14" VerticalAlignment="Center" Margin="4,0,8,0" Foreground="{DynamicResource FgColor}"/>
|
|
<TextBlock x:Name="UsernameTextBoxPlaceholder" Grid.Column="1" Text="Enter username" Foreground="{DynamicResource FgColor}" Opacity="0.5" FontSize="13" Margin="3,0,0,1" VerticalAlignment="Center" IsHitTestVisible="False"/>
|
|
<TextBox x:Name="OtherUsernameTextBox" Grid.Column="1" Style="{StaticResource UserTextBoxStyle}" Text="" AutomationProperties.Name="Enter username"/>
|
|
</Grid>
|
|
</Border>
|
|
</StackPanel>
|
|
<TextBlock x:Name="UserSelectionDescription" Text="Changes will be applied to the currently logged-in user profile." Foreground="{DynamicResource FgColor}" FontSize="12" TextWrapping="Wrap" Margin="0,6,0,3"/>
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
<!-- App Removal Scope -->
|
|
<Border Grid.Row="1" x:Name="AppRemovalScopeSection" BorderBrush="{DynamicResource BorderColor}" BorderThickness="1" CornerRadius="4" Background="{DynamicResource CardBgColor}" Padding="16,12" Margin="0,0,0,16">
|
|
<StackPanel>
|
|
<TextBlock Text="Remove Apps For" Style="{StaticResource CategoryHeaderTextBlock}"/>
|
|
<ComboBox x:Name="AppRemovalScopeCombo" Margin="0,0,0,6" AutomationProperties.Name="App Removal Scope">
|
|
<ComboBoxItem x:Name="AppRemovalScopeAllUsers" Content="All users" IsSelected="True"/>
|
|
<ComboBoxItem x:Name="AppRemovalScopeCurrentUser" Content="Current user only"/>
|
|
<ComboBoxItem x:Name="AppRemovalScopeTargetUser" Content="Target user only" Visibility="Collapsed"/>
|
|
</ComboBox>
|
|
<TextBlock x:Name="AppRemovalScopeDescription" Text="Apps will be removed for all users and from the Windows image to prevent reinstallation for new users." Foreground="{DynamicResource FgColor}" FontSize="12" TextWrapping="Wrap" Margin="0,6,0,3"/>
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
<!-- Options -->
|
|
<Border Grid.Row="2" BorderBrush="{DynamicResource BorderColor}" BorderThickness="1" CornerRadius="4" Background="{DynamicResource CardBgColor}" Padding="16,12,16,3" Margin="0,0,0,16">
|
|
<StackPanel>
|
|
<TextBlock Text="Options" Style="{StaticResource CategoryHeaderTextBlock}"/>
|
|
|
|
<!-- Restore Point Option -->
|
|
<StackPanel>
|
|
<CheckBox x:Name="RestorePointCheckBox" Style="{DynamicResource FeatureCheckboxStyle}" IsChecked="True" Content="Create a system restore point (Recommended)" AutomationProperties.Name="Create a system restore point (Recommended)"/>
|
|
</StackPanel>
|
|
|
|
<!-- Restart Explorer Option -->
|
|
<StackPanel>
|
|
<CheckBox x:Name="RestartExplorerCheckBox" Style="{DynamicResource FeatureCheckboxStyle}" Content="Restart the Windows Explorer process to apply all changes immediately" AutomationProperties.Name="Restart the Windows Explorer process to apply all changes immediately"/>
|
|
</StackPanel>
|
|
</StackPanel>
|
|
</Border>
|
|
</Grid>
|
|
</ScrollViewer>
|
|
<!-- Top fade gradient -->
|
|
<Border IsHitTestVisible="False" VerticalAlignment="Top" Height="10" Margin="0,-12,20,0" Background="{DynamicResource BgColor}">
|
|
<Border.OpacityMask>
|
|
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
|
|
<GradientStop Color="Black" Offset="0"/>
|
|
<GradientStop Color="Black" Offset="0.5"/>
|
|
<GradientStop Color="Transparent" Offset="1"/>
|
|
</LinearGradientBrush>
|
|
</Border.OpacityMask>
|
|
</Border>
|
|
<!-- Bottom fade gradient -->
|
|
<Border IsHitTestVisible="False" VerticalAlignment="Bottom" Height="20" Margin="0,0,20,0" Background="{DynamicResource BgColor}">
|
|
<Border.OpacityMask>
|
|
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
|
|
<GradientStop Color="Transparent" Offset="0"/>
|
|
<GradientStop Color="Black" Offset="1"/>
|
|
</LinearGradientBrush>
|
|
</Border.OpacityMask>
|
|
</Border>
|
|
</Grid>
|
|
|
|
<!-- Review & Apply Section -->
|
|
<StackPanel Grid.Row="1" HorizontalAlignment="Stretch" Background="{DynamicResource BgColor}">
|
|
<Button x:Name="ReviewChangesBtn" Background="Transparent" BorderThickness="0" Cursor="Hand" HorizontalAlignment="Center" Margin="0,4,0,10" AutomationProperties.Name="Review selected changes">
|
|
<Button.Template>
|
|
<ControlTemplate TargetType="Button">
|
|
<TextBlock x:Name="LinkText" Text="Review selected changes" FontSize="14" Foreground="{DynamicResource ButtonBg}" FontWeight="SemiBold" HorizontalAlignment="Center"/>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="LinkText" Property="Foreground" Value="{DynamicResource ButtonHover}"/>
|
|
</Trigger>
|
|
<Trigger Property="IsPressed" Value="True">
|
|
<Setter TargetName="LinkText" Property="Foreground" Value="{DynamicResource ButtonPressed}"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Button.Template>
|
|
</Button>
|
|
<Button x:Name="DeploymentApplyBtn" Style="{DynamicResource PrimaryButtonStyle}" Width="190" Height="44" HorizontalAlignment="Center" AutomationProperties.Name="Apply Changes">
|
|
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
|
|
<TextBlock Text="" FontFamily="Segoe Fluent Icons" FontSize="20" FontWeight="SemiBold" VerticalAlignment="Center"/>
|
|
<TextBlock Text="Apply Changes" VerticalAlignment="Center" FontSize="18" FontWeight="SemiBold" Margin="8,0,0,4"/>
|
|
</StackPanel>
|
|
</Button>
|
|
</StackPanel>
|
|
</Grid>
|
|
</DockPanel>
|
|
</TabItem>
|
|
</TabControl>
|
|
|
|
<!-- Bottom Navigation Buttons -->
|
|
<Grid Grid.Row="1" Height="56" x:Name="BottomNavGrid">
|
|
<Grid Margin="20,0">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
</Grid.ColumnDefinitions>
|
|
<Button x:Name="PreviousBtn" Grid.Column="0" Width="120" Height="36" Style="{DynamicResource SecondaryButtonStyle}" Visibility="Collapsed" Margin="10,0,0,0" AutomationProperties.Name="Back">
|
|
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
|
|
<TextBlock Text="" FontFamily="Segoe Fluent Icons" FontSize="12" Margin="0,0,8,0" VerticalAlignment="Center"/>
|
|
<TextBlock Text="Back" VerticalAlignment="Center" FontSize="14" Margin="0,0,0,1"/>
|
|
</StackPanel>
|
|
</Button>
|
|
|
|
<StackPanel Grid.Column="2" Orientation="Horizontal" HorizontalAlignment="Right">
|
|
<Button x:Name="NextBtn" Width="120" Height="36" Margin="0,0,10,0" Style="{DynamicResource PrimaryButtonStyle}" AutomationProperties.Name="Next">
|
|
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
|
|
<TextBlock Text="Next" VerticalAlignment="Center" FontSize="14" Margin="0,0,0,1"/>
|
|
<TextBlock Text="" FontFamily="Segoe Fluent Icons" FontSize="12" Margin="8,0,0,0" VerticalAlignment="Center"/>
|
|
</StackPanel>
|
|
</Button>
|
|
</StackPanel>
|
|
</Grid>
|
|
|
|
<!-- Progress Indicators - Centered independently -->
|
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
|
|
<Ellipse x:Name="ProgressIndicator1" Width="10" Height="10" Margin="4,0" Fill="#808080" ToolTip="App Removal"/>
|
|
<Ellipse x:Name="ProgressIndicator2" Width="10" Height="10" Margin="4,0" Fill="#808080" ToolTip="System Tweaks"/>
|
|
<Ellipse x:Name="ProgressIndicator3" Width="10" Height="10" Margin="4,0" Fill="#808080" ToolTip="Deployment Settings"/>
|
|
</StackPanel>
|
|
</Grid>
|
|
</Grid>
|
|
|
|
<!-- Modal Overlay for MessageBoxes -->
|
|
<Rectangle x:Name="ModalOverlay"
|
|
Grid.RowSpan="2"
|
|
Fill="#80000000"
|
|
Visibility="Collapsed"
|
|
Panel.ZIndex="1000"
|
|
RadiusX="8"
|
|
RadiusY="8"
|
|
Margin="-1"/>
|
|
</Grid>
|
|
</Border>
|
|
</Window>
|