Polish launcher visual design

This commit is contained in:
Ray Berezowski
2026-08-25 17:22:26 -04:00
parent f3955b0ffc
commit 8760d96310
6 changed files with 209 additions and 60 deletions

View File

@@ -2,8 +2,8 @@
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="About Taskbar Launcher" Title="About Taskbar Launcher"
Height="410" Height="430"
Width="560" Width="580"
ResizeMode="NoResize" ResizeMode="NoResize"
WindowStartupLocation="CenterOwner" WindowStartupLocation="CenterOwner"
Background="{DynamicResource AppWindowBrush}" Background="{DynamicResource AppWindowBrush}"
@@ -15,6 +15,11 @@
<RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/>
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Border Background="{DynamicResource AppPanelBrush}"
BorderBrush="{DynamicResource AppBorderBrush}"
BorderThickness="1"
CornerRadius="16"
Padding="16">
<Grid> <Grid>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="96"/> <ColumnDefinition Width="96"/>
@@ -25,7 +30,8 @@
Height="76" Height="76"
BorderThickness="1" BorderThickness="1"
BorderBrush="{DynamicResource AppAccentBrush}" BorderBrush="{DynamicResource AppAccentBrush}"
Background="{DynamicResource AppSurfaceBrush}" Background="{DynamicResource AppOrangeSoftBrush}"
CornerRadius="14"
HorizontalAlignment="Left" HorizontalAlignment="Left"
VerticalAlignment="Top"> VerticalAlignment="Top">
<Image Source="pack://application:,,,/Assets/AboutLogo.png" <Image Source="pack://application:,,,/Assets/AboutLogo.png"
@@ -42,13 +48,15 @@
TextWrapping="Wrap"/> TextWrapping="Wrap"/>
</StackPanel> </StackPanel>
</Grid> </Grid>
</Border>
<Border Grid.Row="1" <Border Grid.Row="1"
Margin="0,22,0,18" Margin="0,22,0,18"
Padding="14" Padding="14"
BorderThickness="1" BorderThickness="1"
BorderBrush="{DynamicResource AppBorderBrush}" BorderBrush="{DynamicResource AppBorderBrush}"
Background="{DynamicResource AppSurfaceBrush}"> Background="{DynamicResource AppSurfaceBrush}"
CornerRadius="14">
<Grid> <Grid>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="120"/> <ColumnDefinition Width="120"/>
@@ -89,6 +97,7 @@
<Button Grid.Row="2" <Button Grid.Row="2"
Content="Close" Content="Close"
Click="Close_Click" Click="Close_Click"
Padding="18,8"
HorizontalAlignment="Right"/> HorizontalAlignment="Right"/>
</Grid> </Grid>
</Window> </Window>

115
App.xaml
View File

@@ -5,8 +5,10 @@
<Application.Resources> <Application.Resources>
<Style TargetType="Button"> <Style TargetType="Button">
<Setter Property="Margin" Value="0,2"/> <Setter Property="Margin" Value="0,2"/>
<Setter Property="Padding" Value="10,8"/> <Setter Property="Padding" Value="12,8"/>
<Setter Property="HorizontalContentAlignment" Value="Left"/> <Setter Property="MinHeight" Value="34"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Background" Value="{DynamicResource AppControlBrush}"/> <Setter Property="Background" Value="{DynamicResource AppControlBrush}"/>
<Setter Property="Foreground" Value="{DynamicResource AppTextBrush}"/> <Setter Property="Foreground" Value="{DynamicResource AppTextBrush}"/>
<Setter Property="BorderBrush" Value="{DynamicResource AppBorderBrush}"/> <Setter Property="BorderBrush" Value="{DynamicResource AppBorderBrush}"/>
@@ -17,6 +19,7 @@
Background="{TemplateBinding Background}" Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}" BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="1" BorderThickness="1"
CornerRadius="10"
Padding="{TemplateBinding Padding}"> Padding="{TemplateBinding Padding}">
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
@@ -24,11 +27,11 @@
</Border> </Border>
<ControlTemplate.Triggers> <ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True"> <Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="ButtonBorder" Property="Background" Value="{DynamicResource AppControlBrush}"/> <Setter TargetName="ButtonBorder" Property="Background" Value="{DynamicResource AppControlHoverBrush}"/>
<Setter TargetName="ButtonBorder" Property="BorderBrush" Value="{DynamicResource AppAccentBrush}"/> <Setter TargetName="ButtonBorder" Property="BorderBrush" Value="{DynamicResource AppAccentBrush}"/>
</Trigger> </Trigger>
<Trigger Property="IsPressed" Value="True"> <Trigger Property="IsPressed" Value="True">
<Setter TargetName="ButtonBorder" Property="Background" Value="{DynamicResource AppSurfaceBrush}"/> <Setter TargetName="ButtonBorder" Property="Background" Value="{DynamicResource AppAccentSoftBrush}"/>
<Setter TargetName="ButtonBorder" Property="BorderBrush" Value="{DynamicResource AppAccentBrush}"/> <Setter TargetName="ButtonBorder" Property="BorderBrush" Value="{DynamicResource AppAccentBrush}"/>
</Trigger> </Trigger>
<Trigger Property="IsEnabled" Value="False"> <Trigger Property="IsEnabled" Value="False">
@@ -44,13 +47,42 @@
<Setter Property="Foreground" Value="{DynamicResource AppTextBrush}"/> <Setter Property="Foreground" Value="{DynamicResource AppTextBrush}"/>
<Setter Property="BorderBrush" Value="{DynamicResource AppBorderBrush}"/> <Setter Property="BorderBrush" Value="{DynamicResource AppBorderBrush}"/>
<Setter Property="CaretBrush" Value="{DynamicResource AppAccentBrush}"/> <Setter Property="CaretBrush" Value="{DynamicResource AppAccentBrush}"/>
<Setter Property="Padding" Value="9,6"/>
<Setter Property="MinHeight" Value="34"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TextBox">
<Border x:Name="TextBoxBorder"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="1"
CornerRadius="10">
<ScrollViewer x:Name="PART_ContentHost"
Margin="{TemplateBinding Padding}"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="TextBoxBorder" Property="Background" Value="{DynamicResource AppPanelBrush}"/>
<Setter TargetName="TextBoxBorder" Property="BorderBrush" Value="{DynamicResource AppAccentBrush}"/>
</Trigger>
<Trigger Property="IsKeyboardFocused" Value="True">
<Setter TargetName="TextBoxBorder" Property="Background" Value="{DynamicResource AppSurfaceBrush}"/>
<Setter TargetName="TextBoxBorder" Property="BorderBrush" Value="{DynamicResource AppAccentBrush}"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Opacity" Value="0.55"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style> </Style>
<Style TargetType="ComboBox"> <Style TargetType="ComboBox">
<Setter Property="Background" Value="{DynamicResource AppSurfaceBrush}"/> <Setter Property="Background" Value="{DynamicResource AppSurfaceBrush}"/>
<Setter Property="Foreground" Value="{DynamicResource AppTextBrush}"/> <Setter Property="Foreground" Value="{DynamicResource AppTextBrush}"/>
<Setter Property="BorderBrush" Value="{DynamicResource AppBorderBrush}"/> <Setter Property="BorderBrush" Value="{DynamicResource AppBorderBrush}"/>
<Setter Property="Padding" Value="6,4"/> <Setter Property="Padding" Value="9,6"/>
<Setter Property="MinHeight" Value="28"/> <Setter Property="MinHeight" Value="34"/>
<Setter Property="Template"> <Setter Property="Template">
<Setter.Value> <Setter.Value>
<ControlTemplate TargetType="ComboBox"> <ControlTemplate TargetType="ComboBox">
@@ -66,20 +98,21 @@
<Border x:Name="ComboToggleBorder" <Border x:Name="ComboToggleBorder"
Background="{TemplateBinding Background}" Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}" BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="1"> BorderThickness="1"
CornerRadius="10">
<ContentPresenter/> <ContentPresenter/>
</Border> </Border>
<ControlTemplate.Triggers> <ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True"> <Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="ComboToggleBorder" Property="Background" Value="{DynamicResource AppSurfaceBrush}"/> <Setter TargetName="ComboToggleBorder" Property="Background" Value="{DynamicResource AppPanelBrush}"/>
<Setter TargetName="ComboToggleBorder" Property="BorderBrush" Value="{DynamicResource AppAccentBrush}"/> <Setter TargetName="ComboToggleBorder" Property="BorderBrush" Value="{DynamicResource AppAccentBrush}"/>
</Trigger> </Trigger>
<Trigger Property="IsPressed" Value="True"> <Trigger Property="IsPressed" Value="True">
<Setter TargetName="ComboToggleBorder" Property="Background" Value="{DynamicResource AppSurfaceBrush}"/> <Setter TargetName="ComboToggleBorder" Property="Background" Value="{DynamicResource AppAccentSoftBrush}"/>
<Setter TargetName="ComboToggleBorder" Property="BorderBrush" Value="{DynamicResource AppAccentBrush}"/> <Setter TargetName="ComboToggleBorder" Property="BorderBrush" Value="{DynamicResource AppAccentBrush}"/>
</Trigger> </Trigger>
<Trigger Property="IsChecked" Value="True"> <Trigger Property="IsChecked" Value="True">
<Setter TargetName="ComboToggleBorder" Property="Background" Value="{DynamicResource AppSurfaceBrush}"/> <Setter TargetName="ComboToggleBorder" Property="Background" Value="{DynamicResource AppAccentSoftBrush}"/>
<Setter TargetName="ComboToggleBorder" Property="BorderBrush" Value="{DynamicResource AppAccentBrush}"/> <Setter TargetName="ComboToggleBorder" Property="BorderBrush" Value="{DynamicResource AppAccentBrush}"/>
</Trigger> </Trigger>
</ControlTemplate.Triggers> </ControlTemplate.Triggers>
@@ -114,6 +147,8 @@
<Border Background="{DynamicResource AppSurfaceBrush}" <Border Background="{DynamicResource AppSurfaceBrush}"
BorderBrush="{DynamicResource AppBorderBrush}" BorderBrush="{DynamicResource AppBorderBrush}"
BorderThickness="1" BorderThickness="1"
CornerRadius="10"
Padding="3"
MinWidth="{TemplateBinding ActualWidth}" MinWidth="{TemplateBinding ActualWidth}"
MaxHeight="{TemplateBinding MaxDropDownHeight}"> MaxHeight="{TemplateBinding MaxDropDownHeight}">
<ScrollViewer> <ScrollViewer>
@@ -127,11 +162,11 @@
<Setter Property="Opacity" Value="0.55"/> <Setter Property="Opacity" Value="0.55"/>
</Trigger> </Trigger>
<Trigger SourceName="ToggleButton" Property="IsMouseOver" Value="True"> <Trigger SourceName="ToggleButton" Property="IsMouseOver" Value="True">
<Setter TargetName="ToggleButton" Property="Background" Value="{DynamicResource AppSurfaceBrush}"/> <Setter TargetName="ToggleButton" Property="Background" Value="{DynamicResource AppPanelBrush}"/>
<Setter TargetName="ToggleButton" Property="BorderBrush" Value="{DynamicResource AppAccentBrush}"/> <Setter TargetName="ToggleButton" Property="BorderBrush" Value="{DynamicResource AppAccentBrush}"/>
</Trigger> </Trigger>
<Trigger SourceName="ToggleButton" Property="IsPressed" Value="True"> <Trigger SourceName="ToggleButton" Property="IsPressed" Value="True">
<Setter TargetName="ToggleButton" Property="Background" Value="{DynamicResource AppSurfaceBrush}"/> <Setter TargetName="ToggleButton" Property="Background" Value="{DynamicResource AppAccentSoftBrush}"/>
<Setter TargetName="ToggleButton" Property="BorderBrush" Value="{DynamicResource AppAccentBrush}"/> <Setter TargetName="ToggleButton" Property="BorderBrush" Value="{DynamicResource AppAccentBrush}"/>
</Trigger> </Trigger>
</ControlTemplate.Triggers> </ControlTemplate.Triggers>
@@ -142,21 +177,24 @@
<Style TargetType="ComboBoxItem"> <Style TargetType="ComboBoxItem">
<Setter Property="Background" Value="{DynamicResource AppSurfaceBrush}"/> <Setter Property="Background" Value="{DynamicResource AppSurfaceBrush}"/>
<Setter Property="Foreground" Value="{DynamicResource AppTextBrush}"/> <Setter Property="Foreground" Value="{DynamicResource AppTextBrush}"/>
<Setter Property="Padding" Value="6,4"/> <Setter Property="Padding" Value="9,7"/>
<Style.Triggers> <Style.Triggers>
<Trigger Property="IsHighlighted" Value="True"> <Trigger Property="IsHighlighted" Value="True">
<Setter Property="Background" Value="{DynamicResource AppAccentBrush}"/> <Setter Property="Background" Value="{DynamicResource AppAccentSoftBrush}"/>
<Setter Property="Foreground" Value="{DynamicResource AppSelectedTextBrush}"/> <Setter Property="Foreground" Value="{DynamicResource AppTextBrush}"/>
</Trigger> </Trigger>
<Trigger Property="IsSelected" Value="True"> <Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="{DynamicResource AppAccentBrush}"/> <Setter Property="Background" Value="{DynamicResource AppAccentSoftBrush}"/>
<Setter Property="Foreground" Value="{DynamicResource AppSelectedTextBrush}"/> <Setter Property="Foreground" Value="{DynamicResource AppTextBrush}"/>
</Trigger> </Trigger>
</Style.Triggers> </Style.Triggers>
</Style> </Style>
<Style TargetType="TreeView"> <Style TargetType="TreeView">
<Setter Property="Background" Value="{DynamicResource AppSurfaceBrush}"/> <Setter Property="Background" Value="{DynamicResource AppSurfaceBrush}"/>
<Setter Property="Foreground" Value="{DynamicResource AppTextBrush}"/> <Setter Property="Foreground" Value="{DynamicResource AppTextBrush}"/>
<Setter Property="BorderBrush" Value="{DynamicResource AppBorderBrush}"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Padding" Value="8"/>
</Style> </Style>
<Style TargetType="TreeViewItem"> <Style TargetType="TreeViewItem">
<Setter Property="Foreground" Value="{DynamicResource AppTextBrush}"/> <Setter Property="Foreground" Value="{DynamicResource AppTextBrush}"/>
@@ -180,6 +218,7 @@
<Border Background="{TemplateBinding Background}" <Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}" BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}" BorderThickness="{TemplateBinding BorderThickness}"
CornerRadius="10"
Padding="{TemplateBinding Padding}"> Padding="{TemplateBinding Padding}">
<ItemsPresenter/> <ItemsPresenter/>
</Border> </Border>
@@ -190,22 +229,23 @@
<Style TargetType="MenuItem"> <Style TargetType="MenuItem">
<Setter Property="Background" Value="{DynamicResource AppSurfaceBrush}"/> <Setter Property="Background" Value="{DynamicResource AppSurfaceBrush}"/>
<Setter Property="Foreground" Value="{DynamicResource AppTextBrush}"/> <Setter Property="Foreground" Value="{DynamicResource AppTextBrush}"/>
<Setter Property="Padding" Value="10,7"/> <Setter Property="Padding" Value="12,8"/>
<Setter Property="MinWidth" Value="190"/> <Setter Property="MinWidth" Value="190"/>
<Setter Property="Template"> <Setter Property="Template">
<Setter.Value> <Setter.Value>
<ControlTemplate TargetType="MenuItem"> <ControlTemplate TargetType="MenuItem">
<Border x:Name="MenuItemBorder" <Border x:Name="MenuItemBorder"
Background="{TemplateBinding Background}" Background="{TemplateBinding Background}"
Padding="{TemplateBinding Padding}"> Padding="{TemplateBinding Padding}"
CornerRadius="8">
<ContentPresenter ContentSource="Header" <ContentPresenter ContentSource="Header"
RecognizesAccessKey="True" RecognizesAccessKey="True"
VerticalAlignment="Center"/> VerticalAlignment="Center"/>
</Border> </Border>
<ControlTemplate.Triggers> <ControlTemplate.Triggers>
<Trigger Property="IsHighlighted" Value="True"> <Trigger Property="IsHighlighted" Value="True">
<Setter TargetName="MenuItemBorder" Property="Background" Value="{DynamicResource AppAccentBrush}"/> <Setter TargetName="MenuItemBorder" Property="Background" Value="{DynamicResource AppAccentSoftBrush}"/>
<Setter Property="Foreground" Value="{DynamicResource AppSelectedTextBrush}"/> <Setter Property="Foreground" Value="{DynamicResource AppTextBrush}"/>
</Trigger> </Trigger>
<Trigger Property="IsEnabled" Value="False"> <Trigger Property="IsEnabled" Value="False">
<Setter Property="Opacity" Value="0.55"/> <Setter Property="Opacity" Value="0.55"/>
@@ -228,9 +268,42 @@
<Style TargetType="GroupBox"> <Style TargetType="GroupBox">
<Setter Property="Foreground" Value="{DynamicResource AppTextBrush}"/> <Setter Property="Foreground" Value="{DynamicResource AppTextBrush}"/>
<Setter Property="BorderBrush" Value="{DynamicResource AppBorderBrush}"/> <Setter Property="BorderBrush" Value="{DynamicResource AppBorderBrush}"/>
<Setter Property="Padding" Value="12"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="GroupBox">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Border Grid.Row="1"
Margin="0,8,0,0"
Background="{DynamicResource AppSurfaceBrush}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="1"
CornerRadius="14"
Padding="{TemplateBinding Padding}">
<ContentPresenter/>
</Border>
<Border Grid.Row="0"
HorizontalAlignment="Left"
Background="{DynamicResource AppOrangeSoftBrush}"
BorderBrush="{DynamicResource AppBorderBrush}"
BorderThickness="1"
CornerRadius="999"
Padding="10,4">
<ContentPresenter ContentSource="Header"
RecognizesAccessKey="True"/>
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style> </Style>
<Style TargetType="CheckBox"> <Style TargetType="CheckBox">
<Setter Property="Foreground" Value="{DynamicResource AppTextBrush}"/> <Setter Property="Foreground" Value="{DynamicResource AppTextBrush}"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
</Style> </Style>
<Style TargetType="Expander"> <Style TargetType="Expander">
<Setter Property="Foreground" Value="{DynamicResource AppTextBrush}"/> <Setter Property="Foreground" Value="{DynamicResource AppTextBrush}"/>

View File

@@ -4,21 +4,54 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" mc:Ignorable="d"
Title="Taskbar Launcher Settings" Height="700" Width="940" Title="Taskbar Launcher Settings" Height="740" Width="980"
MinHeight="620" MinWidth="820" MinHeight="660" MinWidth="860"
Background="{DynamicResource AppWindowBrush}" Background="{DynamicResource AppWindowBrush}"
Foreground="{DynamicResource AppTextBrush}"> Foreground="{DynamicResource AppTextBrush}">
<DockPanel Margin="18"> <DockPanel Margin="18">
<StackPanel DockPanel.Dock="Top" Margin="0,0,0,14"> <Border DockPanel.Dock="Top"
<TextBlock Text="Taskbar Launcher" FontSize="22" FontWeight="SemiBold"/> Margin="0,0,0,16"
<TextBlock x:Name="VersionText" Padding="16,14"
Foreground="{DynamicResource AppMutedTextBrush}"/> Background="{DynamicResource AppPanelBrush}"
<TextBlock Text="Portable launcher settings are stored beside the app in config.json." BorderBrush="{DynamicResource AppBorderBrush}"
Foreground="{DynamicResource AppMutedTextBrush}"/> BorderThickness="1"
</StackPanel> CornerRadius="16">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Border Width="46"
Height="46"
Margin="0,0,12,0"
Background="{DynamicResource AppOrangeSoftBrush}"
BorderBrush="{DynamicResource AppBorderBrush}"
BorderThickness="1"
CornerRadius="12">
<Image Source="pack://application:,,,/Assets/TrayIcon.ico"
Width="30"
Height="30"
Stretch="Uniform"/>
</Border>
<StackPanel Grid.Column="1" VerticalAlignment="Center">
<TextBlock Text="Taskbar Launcher" FontSize="23" FontWeight="SemiBold"/>
<TextBlock x:Name="VersionText"
Margin="0,2,0,0"
Foreground="{DynamicResource AppMutedTextBrush}"/>
<TextBlock Text="Portable launcher settings are stored beside the app in config.json."
Margin="0,2,0,0"
Foreground="{DynamicResource AppMutedTextBrush}"/>
</StackPanel>
</Grid>
</Border>
<Border DockPanel.Dock="Bottom" BorderThickness="1,0,0,0" Padding="0,12,0,0" <Border DockPanel.Dock="Bottom"
BorderBrush="{DynamicResource AppBorderBrush}"> Margin="0,16,0,0"
Padding="12"
Background="{DynamicResource AppPanelBrush}"
BorderBrush="{DynamicResource AppBorderBrush}"
BorderThickness="1"
CornerRadius="14">
<WrapPanel HorizontalAlignment="Right"> <WrapPanel HorizontalAlignment="Right">
<Button Content="Save" Click="Save_Click" Margin="0,0,8,0"/> <Button Content="Save" Click="Save_Click" Margin="0,0,8,0"/>
<Button x:Name="ConfigMenuButton" <Button x:Name="ConfigMenuButton"
@@ -50,9 +83,9 @@
<ColumnDefinition Width="3*"/> <ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<GroupBox Header="Launcher Items" Margin="0,0,12,0"> <GroupBox Header="Launcher Items" Margin="0,0,14,0">
<DockPanel Margin="8"> <DockPanel>
<UniformGrid DockPanel.Dock="Bottom" Columns="2" Margin="0,8,0,0"> <UniformGrid DockPanel.Dock="Bottom" Columns="2" Margin="0,10,0,0">
<Button Content="Add Root" Click="AddRoot_Click"/> <Button Content="Add Root" Click="AddRoot_Click"/>
<Button Content="Add Top Menu" Click="AddTopMenu_Click"/> <Button Content="Add Top Menu" Click="AddTopMenu_Click"/>
<Button Content="Add Child" Click="AddChild_Click"/> <Button Content="Add Child" Click="AddChild_Click"/>
@@ -65,6 +98,7 @@
</UniformGrid> </UniformGrid>
<TreeView x:Name="ItemsTree" <TreeView x:Name="ItemsTree"
AllowDrop="True" AllowDrop="True"
Margin="0"
SelectedItemChanged="ItemsTree_SelectedItemChanged" SelectedItemChanged="ItemsTree_SelectedItemChanged"
PreviewMouseMove="ItemsTree_PreviewMouseMove" PreviewMouseMove="ItemsTree_PreviewMouseMove"
DragOver="ItemsTree_DragOver" DragOver="ItemsTree_DragOver"
@@ -73,7 +107,7 @@
</GroupBox> </GroupBox>
<GroupBox Header="Settings" Grid.Column="1"> <GroupBox Header="Settings" Grid.Column="1">
<Grid Margin="12"> <Grid>
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/>
<RowDefinition Height="16"/> <RowDefinition Height="16"/>
@@ -81,6 +115,11 @@
<RowDefinition Height="*"/> <RowDefinition Height="*"/>
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Border Background="{DynamicResource AppPanelBrush}"
BorderBrush="{DynamicResource AppBorderBrush}"
BorderThickness="1"
CornerRadius="12"
Padding="12">
<Grid> <Grid>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="110"/> <ColumnDefinition Width="110"/>
@@ -106,10 +145,17 @@
Checked="StartWithWindowsBox_Changed" Checked="StartWithWindowsBox_Changed"
Unchecked="StartWithWindowsBox_Changed"/> Unchecked="StartWithWindowsBox_Changed"/>
</Grid> </Grid>
</Border>
<Separator Grid.Row="1" VerticalAlignment="Center"/> <Separator Grid.Row="1" VerticalAlignment="Center"/>
<Grid Grid.Row="2"> <Border Grid.Row="2"
Background="{DynamicResource AppPanelBrush}"
BorderBrush="{DynamicResource AppBorderBrush}"
BorderThickness="1"
CornerRadius="12"
Padding="12">
<Grid>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="110"/> <ColumnDefinition Width="110"/>
<ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/>
@@ -161,8 +207,9 @@
<Border Grid.Row="6" Grid.Column="1" Grid.ColumnSpan="2" <Border Grid.Row="6" Grid.Column="1" Grid.ColumnSpan="2"
BorderThickness="1" BorderThickness="1"
BorderBrush="{DynamicResource AppBorderBrush}" BorderBrush="{DynamicResource AppBorderBrush}"
Background="{DynamicResource AppControlBrush}" Background="{DynamicResource AppSurfaceBrush}"
Padding="8" MinHeight="72"> CornerRadius="12"
Padding="10" MinHeight="76">
<StackPanel> <StackPanel>
<ContentControl x:Name="PreviewHost"/> <ContentControl x:Name="PreviewHost"/>
<TextBlock x:Name="PreviewNote" Margin="0,8,0,0" <TextBlock x:Name="PreviewNote" Margin="0,8,0,0"
@@ -171,8 +218,9 @@
</StackPanel> </StackPanel>
</Border> </Border>
</Grid> </Grid>
</Border>
<TextBlock x:Name="StatusText" Grid.Row="3" Margin="0,14,0,0" <TextBlock x:Name="StatusText" Grid.Row="3" Margin="4,14,4,0"
Foreground="{DynamicResource AppMutedTextBrush}" Foreground="{DynamicResource AppMutedTextBrush}"
TextWrapping="Wrap"/> TextWrapping="Wrap"/>
</Grid> </Grid>

View File

@@ -14,23 +14,31 @@ public static class ThemeService
{ {
bool isLight = IsLightTheme(); bool isLight = IsLightTheme();
MediaColor accent = GetAccentColor(); MediaColor accent = GetAccentColor();
MediaColor window = isLight ? MediaColor.FromRgb(0xF7, 0xF7, 0xF7) : MediaColor.FromRgb(0x20, 0x20, 0x20); MediaColor orange = MediaColor.FromRgb(0xD8, 0x78, 0x1D);
MediaColor surface = isLight ? System.Windows.Media.Colors.White : MediaColor.FromRgb(0x2B, 0x2B, 0x2B); MediaColor window = isLight ? MediaColor.FromRgb(0xF6, 0xF1, 0xEA) : MediaColor.FromRgb(0x18, 0x16, 0x14);
MediaColor control = isLight ? MediaColor.FromRgb(0xF3, 0xF3, 0xF3) : MediaColor.FromRgb(0x33, 0x33, 0x33); MediaColor surface = isLight ? MediaColor.FromRgb(0xFF, 0xFC, 0xF8) : MediaColor.FromRgb(0x22, 0x1F, 0x1B);
MediaColor hover = isLight ? MediaColor.FromRgb(0xEA, 0xF3, 0xFF) : MediaColor.FromRgb(0x3B, 0x4A, 0x5C); MediaColor panel = isLight ? MediaColor.FromRgb(0xFF, 0xF7, 0xEE) : MediaColor.FromRgb(0x2A, 0x24, 0x1E);
MediaColor text = isLight ? MediaColor.FromRgb(0x1A, 0x1A, 0x1A) : MediaColor.FromRgb(0xF3, 0xF3, 0xF3); MediaColor control = isLight ? MediaColor.FromRgb(0xFA, 0xF1, 0xE7) : MediaColor.FromRgb(0x32, 0x2B, 0x24);
MediaColor muted = isLight ? MediaColor.FromRgb(0x66, 0x66, 0x66) : MediaColor.FromRgb(0xB8, 0xB8, 0xB8); MediaColor hover = isLight ? MediaColor.FromRgb(0xFF, 0xED, 0xDA) : MediaColor.FromRgb(0x42, 0x34, 0x28);
MediaColor border = isLight ? MediaColor.FromRgb(0xC8, 0xC8, 0xC8) : MediaColor.FromRgb(0x55, 0x55, 0x55); MediaColor text = isLight ? MediaColor.FromRgb(0x24, 0x1D, 0x17) : MediaColor.FromRgb(0xF8, 0xF2, 0xEA);
MediaColor muted = isLight ? MediaColor.FromRgb(0x75, 0x68, 0x5C) : MediaColor.FromRgb(0xC3, 0xB5, 0xA6);
MediaColor border = isLight ? MediaColor.FromRgb(0xE4, 0xD1, 0xBC) : MediaColor.FromRgb(0x5B, 0x4B, 0x3C);
MediaColor accentSoft = Blend(accent, surface, isLight ? 0.14 : 0.24);
MediaColor orangeSoft = Blend(orange, surface, isLight ? 0.16 : 0.30);
MediaColor selectedText = IsDark(accent) ? System.Windows.Media.Colors.White : System.Windows.Media.Colors.Black; MediaColor selectedText = IsDark(accent) ? System.Windows.Media.Colors.White : System.Windows.Media.Colors.Black;
SetBrush("AppWindowBrush", window); SetBrush("AppWindowBrush", window);
SetBrush("AppSurfaceBrush", surface); SetBrush("AppSurfaceBrush", surface);
SetBrush("AppPanelBrush", panel);
SetBrush("AppControlBrush", control); SetBrush("AppControlBrush", control);
SetBrush("AppControlHoverBrush", hover); SetBrush("AppControlHoverBrush", hover);
SetBrush("AppTextBrush", text); SetBrush("AppTextBrush", text);
SetBrush("AppMutedTextBrush", muted); SetBrush("AppMutedTextBrush", muted);
SetBrush("AppBorderBrush", border); SetBrush("AppBorderBrush", border);
SetBrush("AppAccentBrush", accent); SetBrush("AppAccentBrush", accent);
SetBrush("AppAccentSoftBrush", accentSoft);
SetBrush("AppOrangeBrush", orange);
SetBrush("AppOrangeSoftBrush", orangeSoft);
SetBrush("AppSelectedTextBrush", selectedText); SetBrush("AppSelectedTextBrush", selectedText);
SetBrush(System.Windows.SystemColors.WindowBrushKey, surface); SetBrush(System.Windows.SystemColors.WindowBrushKey, surface);
@@ -62,6 +70,15 @@ public static class ThemeService
return MediaColor.FromRgb(0x00, 0x78, 0xD4); return MediaColor.FromRgb(0x00, 0x78, 0xD4);
} }
private static MediaColor Blend(MediaColor foreground, MediaColor background, double foregroundAmount)
{
double amount = Math.Clamp(foregroundAmount, 0, 1);
byte r = (byte)Math.Round((foreground.R * amount) + (background.R * (1 - amount)));
byte g = (byte)Math.Round((foreground.G * amount) + (background.G * (1 - amount)));
byte b = (byte)Math.Round((foreground.B * amount) + (background.B * (1 - amount)));
return MediaColor.FromRgb(r, g, b);
}
private static void SetBrush(string key, MediaColor color) private static void SetBrush(string key, MediaColor color)
{ {
SolidColorBrush brush = new(color); SolidColorBrush brush = new(color);

View File

@@ -2,7 +2,7 @@
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Taskbar Launcher" Title="Taskbar Launcher"
Width="360" SizeToContent="Height" Width="380" SizeToContent="Height"
MaxHeight="720" MaxHeight="720"
WindowStyle="None" WindowStyle="None"
ResizeMode="NoResize" ResizeMode="NoResize"
@@ -13,18 +13,19 @@
<Border BorderThickness="1" <Border BorderThickness="1"
BorderBrush="{DynamicResource AppBorderBrush}" BorderBrush="{DynamicResource AppBorderBrush}"
Background="{DynamicResource AppSurfaceBrush}" Background="{DynamicResource AppSurfaceBrush}"
Padding="10"> CornerRadius="16"
Padding="12">
<DockPanel> <DockPanel>
<Grid DockPanel.Dock="Top" Margin="0,0,0,8"> <Grid DockPanel.Dock="Top" Margin="0,0,0,10">
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/> <ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/> <ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<Image Source="pack://application:,,,/Assets/TrayIcon.ico" <Image Source="pack://application:,,,/Assets/TrayIcon.ico"
Width="18" Width="22"
Height="18" Height="22"
Margin="0,0,8,0" Margin="2,0,10,0"
VerticalAlignment="Center"/> VerticalAlignment="Center"/>
<TextBlock Grid.Column="1" <TextBlock Grid.Column="1"
Text="Taskbar Launcher" Text="Taskbar Launcher"
@@ -33,13 +34,13 @@
<Button Grid.Column="2" <Button Grid.Column="2"
Content="Settings" Content="Settings"
HorizontalAlignment="Right" HorizontalAlignment="Right"
Padding="8,4" Padding="10,5"
Click="Settings_Click"/> Click="Settings_Click"/>
</Grid> </Grid>
<TextBox x:Name="SearchBox" <TextBox x:Name="SearchBox"
DockPanel.Dock="Top" DockPanel.Dock="Top"
Margin="0,0,0,8" Margin="0,0,0,10"
Padding="8,5" Padding="10,6"
TextChanged="SearchBox_TextChanged" TextChanged="SearchBox_TextChanged"
PreviewKeyDown="SearchBox_PreviewKeyDown"/> PreviewKeyDown="SearchBox_PreviewKeyDown"/>
<ScrollViewer x:Name="ItemsScrollViewer" <ScrollViewer x:Name="ItemsScrollViewer"

View File

@@ -124,6 +124,7 @@ public partial class LauncherPopup : Window
Content = CreateButtonContent(item), Content = CreateButtonContent(item),
Margin = new Thickness(depth * 12, 2, 0, 2), Margin = new Thickness(depth * 12, 2, 0, 2),
MinHeight = DisplayModeMetrics.GetRowHeight(GetEffectiveDisplayMode(item)), MinHeight = DisplayModeMetrics.GetRowHeight(GetEffectiveDisplayMode(item)),
HorizontalContentAlignment = System.Windows.HorizontalAlignment.Left,
Tag = item Tag = item
}; };