Files
PowerToys/src/settings-ui/Settings.UI/SettingsXAML/Views/PowerLauncherPage.xaml
Niels Laute 75bf64299d Creating a Common.UI.Controls lib (#45542)
## Summary of the Pull Request

@jiripolasek FYI

This PR creates a new `Common.UI.Controls` library that contains shared
WinUI controls. We have been copying code manually between CmdPal and
Settings, and now with the new KBM we will run into the same issue.

This lib has shared controls projects can add to their proj so we have a
single source of truth.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Closes: #45388

<!-- - [ ] Closes: #yyy (add separate lines for additional resolved
issues) -->
- [ ] **Communication:** I've discussed this with core contributors
already. If the work hasn't been agreed, this work might be rejected
- [ ] **Tests:** Added/updated and all pass
- [ ] **Localization:** All end-user-facing strings can be localized
- [ ] **Dev docs:** Added/updated
- [ ] **New binaries:** Added on the required places
- [ ] [JSON for
signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json)
for new binaries
- [ ] [WXS for
installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs)
for new binaries and localization folder
- [ ] [YML for CI
pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml)
for new test projects
- [ ] [YML for signed
pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml)
- [ ] **Documentation updated:** If checked, please file a pull request
on [our docs
repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys)
and link it here: #xxx

<!-- Provide a more detailed description of the PR, other things fixed,
or any additional comments/features here -->
## Detailed Description of the Pull Request / Additional comments

<!-- Describe how you validated the behavior. Add automated tests
wherever possible, but list manual validation steps taken as well -->
## Validation Steps Performed

---------

Co-authored-by: Jiří Polášek <me@jiripolasek.com>
2026-02-12 16:45:44 +01:00

813 lines
50 KiB
XML

<local:NavigablePage
x:Class="Microsoft.PowerToys.Settings.UI.Views.PowerLauncherPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="using:Microsoft.PowerToys.Settings.UI.Controls"
xmlns:converters="using:Microsoft.PowerToys.Settings.UI.Converters"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:i="using:Microsoft.Xaml.Interactivity"
xmlns:ic="using:Microsoft.Xaml.Interactions.Core"
xmlns:local="using:Microsoft.PowerToys.Settings.UI.Helpers"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ptcontrols="using:Microsoft.PowerToys.Common.UI.Controls"
xmlns:tkcontrols="using:CommunityToolkit.WinUI.Controls"
xmlns:ui="using:CommunityToolkit.WinUI"
xmlns:viewModels="using:Microsoft.PowerToys.Settings.UI.ViewModels"
AutomationProperties.LandmarkType="Main"
mc:Ignorable="d">
<local:NavigablePage.Resources>
<Style x:Key="OptionSeparator" TargetType="Rectangle">
<Setter Property="Height" Value="1" />
<Setter Property="HorizontalAlignment" Value="Stretch" />
<Setter Property="Fill" Value="{ThemeResource CardStrokeColorDefaultBrush}" />
</Style>
<converters:RunOptionTemplateSelector
x:Key="RunOptionTemplateSelector"
CheckBoxComboBoxTemplate="{StaticResource CheckBoxComboBoxTemplate}"
CheckBoxMultilineTextBoxTemplate="{StaticResource CheckBoxMultilineTextBoxTemplate}"
CheckBoxNumberBoxTemplate="{StaticResource CheckBoxNumberBoxTemplate}"
CheckBoxTemplate="{StaticResource CheckBoxTemplate}"
CheckBoxTextBoxTemplate="{StaticResource CheckBoxTextBoxTemplate}"
ComboBoxTemplate="{StaticResource ComboBoxTemplate}"
EmptyTemplate="{StaticResource EmptyTemplate}"
MultilineTextBoxTemplate="{StaticResource MultilineTextBoxTemplate}"
NumberBoxTemplate="{StaticResource NumberBoxTemplate}"
TextboxTemplate="{StaticResource TextBoxTemplate}" />
<DataTemplate x:Key="CheckBoxTemplate" x:DataType="viewModels:PluginAdditionalOptionViewModel">
<StackPanel HorizontalAlignment="Stretch" Orientation="Vertical">
<tkcontrols:SettingsCard
MinHeight="0"
Margin="1"
Padding="0,6,0,12"
Background="Transparent"
BorderThickness="0,0,0,0"
ContentAlignment="Left"
CornerRadius="0">
<ptcontrols:CheckBoxWithDescriptionControl
Margin="56,0,0,0"
Description="{x:Bind Path=DisplayDescription}"
Header="{x:Bind Path=DisplayLabel}"
IsChecked="{x:Bind Value, Mode=TwoWay}" />
</tkcontrols:SettingsCard>
<Rectangle Style="{StaticResource OptionSeparator}" />
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="ComboBoxTemplate" x:DataType="viewModels:PluginAdditionalOptionViewModel">
<StackPanel HorizontalAlignment="Stretch" Orientation="Vertical">
<tkcontrols:SettingsCard
MinHeight="0"
Margin="56,8,45,8"
Background="Transparent"
BorderThickness="0,0,0,0"
CornerRadius="0"
Description="{x:Bind Path=DisplayDescription}"
Header="{x:Bind Path=DisplayLabel}">
<ComboBox
MinWidth="{StaticResource SettingActionControlMinWidth}"
AutomationProperties.Name="{x:Bind Path=DisplayLabel}"
DisplayMemberPath="Key"
ItemsSource="{x:Bind Path=ComboBoxItems}"
SelectedValue="{x:Bind ComboBoxValue, Mode=TwoWay}"
SelectedValuePath="Value" />
</tkcontrols:SettingsCard>
<Rectangle Style="{StaticResource OptionSeparator}" />
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="TextBoxTemplate" x:DataType="viewModels:PluginAdditionalOptionViewModel">
<StackPanel HorizontalAlignment="Stretch" Orientation="Vertical">
<tkcontrols:SettingsCard
MinHeight="0"
Margin="56,8,45,8"
Background="Transparent"
BorderThickness="0,0,0,0"
CornerRadius="0"
Description="{x:Bind Path=DisplayDescription}"
Header="{x:Bind Path=DisplayLabel}">
<TextBox
MinWidth="{StaticResource SettingActionControlMinWidth}"
MaxWidth="450"
IsSpellCheckEnabled="False"
MaxLength="{x:Bind TextBoxMaxLength, Mode=OneWay}"
PlaceholderText="{x:Bind Path=PlaceholderText}"
Text="{x:Bind TextValue, Mode=TwoWay}" />
</tkcontrols:SettingsCard>
<Rectangle Style="{StaticResource OptionSeparator}" />
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="NumberBoxTemplate" x:DataType="viewModels:PluginAdditionalOptionViewModel">
<StackPanel HorizontalAlignment="Stretch" Orientation="Vertical">
<tkcontrols:SettingsCard
MinHeight="0"
Margin="56,8,45,8"
Background="Transparent"
BorderThickness="0,0,0,0"
CornerRadius="0"
Description="{x:Bind Path=DisplayDescription}"
Header="{x:Bind Path=DisplayLabel}">
<NumberBox
MinWidth="{StaticResource SettingActionControlMinWidth}"
AutomationProperties.Name="{x:Bind Path=DisplayLabel}"
LargeChange="{x:Bind NumberBoxLargeChange, Mode=OneWay}"
Maximum="{x:Bind NumberBoxMax, Mode=OneWay}"
Minimum="{x:Bind NumberBoxMin, Mode=OneWay}"
SmallChange="{x:Bind NumberBoxSmallChange, Mode=OneWay}"
SpinButtonPlacementMode="Compact"
Value="{x:Bind NumberValue, Mode=TwoWay}" />
</tkcontrols:SettingsCard>
<Rectangle Style="{StaticResource OptionSeparator}" />
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="MultilineTextBoxTemplate" x:DataType="viewModels:PluginAdditionalOptionViewModel">
<StackPanel HorizontalAlignment="Stretch" Orientation="Vertical">
<tkcontrols:SettingsCard
MinHeight="0"
Margin="56,8,45,8"
HorizontalContentAlignment="Stretch"
Background="Transparent"
BorderThickness="0,0,0,0"
ContentAlignment="Vertical"
CornerRadius="0"
Description="{x:Bind Path=DisplayDescription}"
Header="{x:Bind Path=DisplayLabel}">
<TextBox
MinWidth="{StaticResource SettingActionControlMinWidth}"
MinHeight="160"
AcceptsReturn="True"
IsSpellCheckEnabled="False"
PlaceholderText="{x:Bind Path=PlaceholderText}"
ScrollViewer.IsVerticalRailEnabled="True"
ScrollViewer.VerticalScrollBarVisibility="Visible"
ScrollViewer.VerticalScrollMode="Enabled"
Text="{x:Bind TextValue, Mode=TwoWay}" />
</tkcontrols:SettingsCard>
<Rectangle Style="{StaticResource OptionSeparator}" />
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="CheckBoxComboBoxTemplate" x:DataType="viewModels:PluginAdditionalOptionViewModel">
<StackPanel HorizontalAlignment="Stretch" Orientation="Vertical">
<tkcontrols:SettingsCard
MinHeight="0"
Margin="1"
Padding="0,6,0,4"
Background="Transparent"
BorderThickness="0,0,0,0"
ContentAlignment="Left"
CornerRadius="0">
<ptcontrols:CheckBoxWithDescriptionControl
Margin="56,0,0,0"
Description="{x:Bind Path=DisplayDescription}"
Header="{x:Bind Path=DisplayLabel}"
IsChecked="{x:Bind Value, Mode=TwoWay}" />
</tkcontrols:SettingsCard>
<tkcontrols:SettingsCard
MinHeight="0"
Margin="84,0,45,8"
Background="Transparent"
BorderThickness="0,0,0,0"
CornerRadius="0"
Description="{x:Bind Path=SecondDisplayDescription}"
Header="{x:Bind Path=SecondDisplayLabel}"
IsEnabled="{x:Bind SecondSettingIsEnabled, Mode=OneWay}">
<ComboBox
MinWidth="{StaticResource SettingActionControlMinWidth}"
AutomationProperties.Name="{x:Bind Path=SecondDisplayLabel}"
DisplayMemberPath="Key"
ItemsSource="{x:Bind Path=ComboBoxItems}"
SelectedValue="{x:Bind ComboBoxValue, Mode=TwoWay}"
SelectedValuePath="Value" />
</tkcontrols:SettingsCard>
<Rectangle Style="{StaticResource OptionSeparator}" />
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="CheckBoxTextBoxTemplate" x:DataType="viewModels:PluginAdditionalOptionViewModel">
<StackPanel HorizontalAlignment="Stretch" Orientation="Vertical">
<tkcontrols:SettingsCard
MinHeight="0"
Margin="1"
Padding="0,6,0,4"
Background="Transparent"
BorderThickness="0,0,0,0"
ContentAlignment="Left"
CornerRadius="0">
<ptcontrols:CheckBoxWithDescriptionControl
Margin="56,0,0,0"
Description="{x:Bind Path=DisplayDescription}"
Header="{x:Bind Path=DisplayLabel}"
IsChecked="{x:Bind Value, Mode=TwoWay}" />
</tkcontrols:SettingsCard>
<tkcontrols:SettingsCard
MinHeight="0"
Margin="84,0,45,8"
Background="Transparent"
BorderThickness="0,0,0,0"
CornerRadius="0"
Description="{x:Bind Path=SecondDisplayDescription}"
Header="{x:Bind Path=SecondDisplayLabel}"
IsEnabled="{x:Bind SecondSettingIsEnabled, Mode=OneWay}">
<TextBox
MinWidth="{StaticResource SettingActionControlMinWidth}"
MaxWidth="450"
IsSpellCheckEnabled="False"
MaxLength="{x:Bind TextBoxMaxLength, Mode=OneWay}"
PlaceholderText="{x:Bind Path=PlaceholderText}"
Text="{x:Bind TextValue, Mode=TwoWay}" />
</tkcontrols:SettingsCard>
<Rectangle Style="{StaticResource OptionSeparator}" />
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="CheckBoxMultilineTextBoxTemplate" x:DataType="viewModels:PluginAdditionalOptionViewModel">
<StackPanel HorizontalAlignment="Stretch" Orientation="Vertical">
<tkcontrols:SettingsCard
MinHeight="0"
Margin="1"
Padding="0,6,0,4"
Background="Transparent"
BorderThickness="0,0,0,0"
ContentAlignment="Left"
CornerRadius="0">
<ptcontrols:CheckBoxWithDescriptionControl
Margin="56,0,0,0"
Description="{x:Bind Path=DisplayDescription}"
Header="{x:Bind Path=DisplayLabel}"
IsChecked="{x:Bind Value, Mode=TwoWay}" />
</tkcontrols:SettingsCard>
<tkcontrols:SettingsCard
MinHeight="0"
Margin="84,0,45,8"
HorizontalContentAlignment="Stretch"
Background="Transparent"
BorderThickness="0,0,0,0"
ContentAlignment="Vertical"
CornerRadius="0"
Description="{x:Bind Path=SecondDisplayDescription}"
Header="{x:Bind Path=SecondDisplayLabel}"
IsEnabled="{x:Bind SecondSettingIsEnabled, Mode=OneWay}">
<TextBox
MinWidth="{StaticResource SettingActionControlMinWidth}"
MinHeight="160"
AcceptsReturn="True"
IsSpellCheckEnabled="False"
PlaceholderText="{x:Bind Path=PlaceholderText}"
ScrollViewer.IsVerticalRailEnabled="True"
ScrollViewer.VerticalScrollBarVisibility="Visible"
ScrollViewer.VerticalScrollMode="Enabled"
Text="{x:Bind TextValue, Mode=TwoWay}" />
</tkcontrols:SettingsCard>
<Rectangle Style="{StaticResource OptionSeparator}" />
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="CheckBoxNumberBoxTemplate" x:DataType="viewModels:PluginAdditionalOptionViewModel">
<StackPanel HorizontalAlignment="Stretch" Orientation="Vertical">
<tkcontrols:SettingsCard
MinHeight="0"
Margin="1"
Padding="0,6,0,4"
Background="Transparent"
BorderThickness="0,0,0,0"
ContentAlignment="Left"
CornerRadius="0">
<ptcontrols:CheckBoxWithDescriptionControl
Margin="56,0,0,0"
Description="{x:Bind Path=DisplayDescription}"
Header="{x:Bind Path=DisplayLabel}"
IsChecked="{x:Bind Value, Mode=TwoWay}" />
</tkcontrols:SettingsCard>
<tkcontrols:SettingsCard
MinHeight="0"
Margin="84,0,45,8"
Background="Transparent"
BorderThickness="0,0,0,0"
CornerRadius="0"
Description="{x:Bind Path=SecondDisplayDescription}"
Header="{x:Bind Path=SecondDisplayLabel}"
IsEnabled="{x:Bind SecondSettingIsEnabled, Mode=OneWay}">
<NumberBox
MinWidth="{StaticResource SettingActionControlMinWidth}"
AutomationProperties.Name="{x:Bind Path=SecondDisplayLabel}"
LargeChange="{x:Bind NumberBoxLargeChange, Mode=OneWay}"
Maximum="{x:Bind NumberBoxMax, Mode=OneWay}"
Minimum="{x:Bind NumberBoxMin, Mode=OneWay}"
SmallChange="{x:Bind NumberBoxSmallChange, Mode=OneWay}"
SpinButtonPlacementMode="Compact"
Value="{x:Bind NumberValue, Mode=TwoWay}" />
</tkcontrols:SettingsCard>
<Rectangle Style="{StaticResource OptionSeparator}" />
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="EmptyTemplate" x:DataType="viewModels:PluginAdditionalOptionViewModel">
<StackPanel HorizontalAlignment="Stretch" Orientation="Vertical" />
</DataTemplate>
</local:NavigablePage.Resources>
<controls:SettingsPageControl x:Uid="PowerLauncher" ModuleImageSource="ms-appx:///Assets/Settings/Modules/Run.png">
<controls:SettingsPageControl.ModuleContent>
<StackPanel ChildrenTransitions="{StaticResource SettingsCardsAnimations}" Orientation="Vertical">
<InfoBar
x:Uid="Run_CheckOutCmdPal"
Background="Transparent"
BorderBrush="Transparent"
IsClosable="False"
IsOpen="True"
IsTabStop="True"
Severity="Informational">
<InfoBar.ActionButton>
<HyperlinkButton x:Uid="Run_NavigateCmdPalSettings" Click="NavigateCmdPalSettings_Click" />
</InfoBar.ActionButton>
</InfoBar>
<controls:GPOInfoControl ShowWarning="{x:Bind ViewModel.IsEnabledGpoConfigured, Mode=OneWay}">
<tkcontrols:SettingsCard
Name="PowerLauncherEnablePowerLauncher"
x:Uid="PowerLauncher_EnablePowerLauncher"
HeaderIcon="{ui:BitmapIcon Source=/Assets/Settings/Icons/PowerToysRun.png}">
<ToggleSwitch x:Uid="ToggleSwitch" IsOn="{x:Bind ViewModel.EnablePowerLauncher, Mode=TwoWay}" />
</tkcontrols:SettingsCard>
</controls:GPOInfoControl>
<controls:SettingsGroup x:Uid="Shortcut" IsEnabled="{x:Bind ViewModel.EnablePowerLauncher, Mode=OneWay}">
<tkcontrols:SettingsExpander
Name="ActivationShortcut"
x:Uid="Activation_Shortcut"
HeaderIcon="{ui:FontIcon Glyph=&#xEDA7;}"
IsExpanded="True">
<controls:ShortcutControl MinWidth="{StaticResource SettingActionControlMinWidth}" HotkeySettings="{x:Bind Path=ViewModel.OpenPowerLauncher, Mode=TwoWay}" />
<tkcontrols:SettingsExpander.Items>
<tkcontrols:SettingsCard ContentAlignment="Left">
<ptcontrols:CheckBoxWithDescriptionControl x:Uid="PowerLauncher_UseCentralizedKeyboardHook" IsChecked="{x:Bind ViewModel.UseCentralizedKeyboardHook, Mode=TwoWay}" />
</tkcontrols:SettingsCard>
<tkcontrols:SettingsCard ContentAlignment="Left">
<CheckBox x:Uid="PowerLauncher_IgnoreHotkeysInFullScreen" IsChecked="{x:Bind ViewModel.IgnoreHotkeysInFullScreen, Mode=TwoWay}" />
</tkcontrols:SettingsCard>
</tkcontrols:SettingsExpander.Items>
</tkcontrols:SettingsExpander>
</controls:SettingsGroup>
<!--<Custom:HotkeySettingsControl x:Uid="PowerLauncher_OpenFileLocation"
HorizontalAlignment="Left"
Margin="{StaticResource SmallTopMargin}"
HotkeySettings="{Binding Path=ViewModel.OpenFileLocation, Mode=TwoWay}"
IsEnabled="False"
/>
<Custom:HotkeySettingsControl x:Uid="PowerLauncher_CopyPathLocation"
HorizontalAlignment="Left"
Margin="{StaticResource SmallTopMargin}"
HotkeySettings="{Binding Path=ViewModel.CopyPathLocation, Mode=TwoWay}"
Keys="Win, Ctrl, Alt, Shift"
IsEnabled="False"
/>
<Custom:HotkeySettingsControl x:Uid="PowerLauncher_OpenConsole"
HorizontalAlignment="Left"
Margin="{StaticResource SmallTopMargin}"
HotkeySettings="{Binding Path=ViewModel.OpenConsole, Mode=TwoWay}"
Keys="Win, Ctrl, Alt, Shift"
IsEnabled="False"
/>-->
<!--<CheckBox x:Uid="PowerLauncher_OverrideWinRKey"
Margin="{StaticResource SmallTopMargin}"
IsChecked="False"
IsEnabled="False"
/>-->
<!--<CheckBox x:Uid="PowerLauncher_OverrideWinSKey"
Margin="{StaticResource SmallTopMargin}"
IsChecked="{x:Bind ViewModel.OverrideWinSKey, Mode=TwoWay}"
IsEnabled="False"
/>-->
<controls:SettingsGroup x:Uid="PowerLauncher_SearchResults" IsEnabled="{x:Bind ViewModel.EnablePowerLauncher, Mode=OneWay}">
<tkcontrols:SettingsExpander
Name="PowerLauncherSearchQueryResultsWithDelay"
x:Uid="PowerLauncher_SearchQueryResultsWithDelay"
HeaderIcon="{ui:FontIcon Glyph=&#xec48;}"
IsExpanded="True">
<ToggleSwitch IsOn="{x:Bind ViewModel.SearchQueryResultsWithDelay, Mode=TwoWay}" />
<tkcontrols:SettingsExpander.Items>
<tkcontrols:SettingsCard
Name="PowerLauncherFastSearchInputDelayMs"
x:Uid="PowerLauncher_FastSearchInputDelayMs"
IsEnabled="{x:Bind ViewModel.SearchQueryResultsWithDelay, Mode=OneWay}">
<NumberBox
MinWidth="{StaticResource SettingActionControlMinWidth}"
LargeChange="50"
Maximum="500"
Minimum="0"
SmallChange="10"
SpinButtonPlacementMode="Compact"
Value="{x:Bind ViewModel.SearchInputDelayFast, Mode=TwoWay}" />
</tkcontrols:SettingsCard>
<tkcontrols:SettingsCard
Name="PowerLauncherSlowSearchInputDelayMs"
x:Uid="PowerLauncher_SlowSearchInputDelayMs"
IsEnabled="{x:Bind ViewModel.SearchQueryResultsWithDelay, Mode=OneWay}">
<NumberBox
MinWidth="{StaticResource SettingActionControlMinWidth}"
LargeChange="50"
Maximum="1000"
Minimum="0"
SmallChange="10"
SpinButtonPlacementMode="Compact"
Value="{x:Bind ViewModel.SearchInputDelay, Mode=TwoWay}" />
</tkcontrols:SettingsCard>
</tkcontrols:SettingsExpander.Items>
</tkcontrols:SettingsExpander>
<tkcontrols:SettingsExpander
Name="PowerLauncherMaximumNumberOfResults"
x:Uid="PowerLauncher_MaximumNumberOfResults"
HeaderIcon="{ui:FontIcon Glyph=&#xec8f;}"
IsExpanded="True">
<NumberBox
MinWidth="{StaticResource SettingActionControlMinWidth}"
Minimum="1"
SpinButtonPlacementMode="Compact"
Value="{x:Bind ViewModel.MaximumNumberOfResults, Mode=TwoWay}" />
<tkcontrols:SettingsExpander.Items>
<tkcontrols:SettingsCard ContentAlignment="Left">
<CheckBox x:Uid="PowerLauncher_ClearInputOnLaunch" IsChecked="{x:Bind ViewModel.ClearInputOnLaunch, Mode=TwoWay}" />
</tkcontrols:SettingsCard>
</tkcontrols:SettingsExpander.Items>
</tkcontrols:SettingsExpander>
<tkcontrols:SettingsExpander
Name="PowerLauncherSearchQueryTuningEnabled"
x:Uid="PowerLauncher_SearchQueryTuningEnabled"
HeaderIcon="{ui:FontIcon Glyph=&#xE8CB;}"
IsExpanded="True">
<ToggleSwitch IsOn="{x:Bind ViewModel.SearchQueryTuningEnabled, Mode=TwoWay}" />
<tkcontrols:SettingsExpander.Items>
<tkcontrols:SettingsCard
Name="PowerLauncherSearchClickedItemWeight"
x:Uid="PowerLauncher_SearchClickedItemWeight"
IsEnabled="{x:Bind ViewModel.SearchQueryTuningEnabled, Mode=OneWay}">
<NumberBox
MinWidth="{StaticResource SettingActionControlMinWidth}"
LargeChange="50"
Maximum="1000"
Minimum="0"
SmallChange="5"
SpinButtonPlacementMode="Compact"
Value="{x:Bind ViewModel.SearchClickedItemWeight, Mode=TwoWay}" />
</tkcontrols:SettingsCard>
<tkcontrols:SettingsCard ContentAlignment="Left" IsEnabled="{x:Bind ViewModel.SearchQueryTuningEnabled, Mode=OneWay}">
<ptcontrols:CheckBoxWithDescriptionControl x:Uid="PowerLauncher_WaitForSlowResults" IsChecked="{x:Bind ViewModel.SearchWaitForSlowResults, Mode=TwoWay}" />
</tkcontrols:SettingsCard>
</tkcontrols:SettingsExpander.Items>
</tkcontrols:SettingsExpander>
<tkcontrols:SettingsCard
Name="PowerLauncherTabSelectsContextButtons"
x:Uid="PowerLauncher_TabSelectsContextButtons"
HeaderIcon="{ui:FontIcon Glyph=&#xE7FD;}">
<ToggleSwitch x:Uid="ToggleSwitch" IsOn="{x:Bind ViewModel.TabSelectsContextButtons, Mode=TwoWay}" />
</tkcontrols:SettingsCard>
<tkcontrols:SettingsCard
Name="PowerLauncherUsePinyin"
x:Uid="PowerLauncher_UsePinyin"
HeaderIcon="{ui:FontIcon Glyph=&#xE98A;}">
<ToggleSwitch x:Uid="ToggleSwitch" IsOn="{x:Bind ViewModel.UsePinyin, Mode=TwoWay}" />
</tkcontrols:SettingsCard>
<tkcontrols:SettingsCard
Name="PowerLauncherGenerateThumbnailsFromFiles"
x:Uid="PowerLauncher_GenerateThumbnailsFromFiles"
HeaderIcon="{ui:FontIcon Glyph=&#xE91B;}">
<ToggleSwitch x:Uid="ToggleSwitch" IsOn="{x:Bind ViewModel.GenerateThumbnailsFromFiles, Mode=TwoWay}" />
</tkcontrols:SettingsCard>
</controls:SettingsGroup>
<!--<ComboBox x:Uid="PowerLauncher_SearchResultPreference"
MinWidth="320"
Margin="{StaticResource SmallTopMargin}"
ItemsSource="{Binding searchResultPreferencesOptions}"
SelectedItem="{x:Bind SelectedSearchResultPreference, Mode=TwoWay}"
SelectedValuePath="Item2"
DisplayMemberPath="Item1"
IsEnabled="False"
/>
<ComboBox x:Uid="PowerLauncher_SearchTypePreference"
MinWidth="320"
Margin="{StaticResource SmallTopMargin}"
ItemsSource="{Binding searchTypePreferencesOptions}"
SelectedItem="{x:Bind SelectedSearchTypePreference, Mode=TwoWay}"
SelectedValuePath="Item2"
DisplayMemberPath="Item1"
IsEnabled="False"
/>-->
<controls:SettingsGroup x:Uid="Run_PositionAppearance_GroupSettings" IsEnabled="{x:Bind ViewModel.EnablePowerLauncher, Mode=OneWay}">
<tkcontrols:SettingsCard
Name="RunPositionHeader"
x:Uid="Run_PositionHeader"
HeaderIcon="{ui:FontIcon Glyph=&#xe78b;}">
<ComboBox MinWidth="{StaticResource SettingActionControlMinWidth}" SelectedIndex="{x:Bind ViewModel.MonitorPositionIndex, Mode=TwoWay}">
<ComboBoxItem x:Uid="Run_Radio_Position_Cursor" />
<ComboBoxItem x:Uid="Run_Radio_Position_Primary_Monitor" />
<ComboBoxItem x:Uid="Run_Radio_Position_Focus" />
</ComboBox>
</tkcontrols:SettingsCard>
<tkcontrols:SettingsCard
Name="ColorModeHeader"
x:Uid="ColorModeHeader"
HeaderIcon="{ui:FontIcon Glyph=&#xE790;}">
<tkcontrols:SettingsCard.Description>
<HyperlinkButton x:Uid="Windows_Color_Settings" Click="OpenColorsSettings_Click" />
</tkcontrols:SettingsCard.Description>
<ComboBox MinWidth="{StaticResource SettingActionControlMinWidth}" SelectedIndex="{x:Bind ViewModel.ThemeIndex, Mode=TwoWay}">
<ComboBoxItem x:Uid="Radio_Theme_Dark" />
<ComboBoxItem x:Uid="Radio_Theme_Light" />
<ComboBoxItem x:Uid="Radio_Theme_Default" />
</ComboBox>
</tkcontrols:SettingsCard>
<tkcontrols:SettingsCard
Name="PowerLauncherShowPluginKeywords"
x:Uid="PowerLauncher_ShowPluginKeywords"
HeaderIcon="{ui:FontIcon Glyph=&#xE8FD;}">
<ComboBox MinWidth="{StaticResource SettingActionControlMinWidth}" SelectedIndex="{x:Bind ViewModel.ShowPluginsOverviewIndex, Mode=TwoWay}">
<ComboBoxItem x:Uid="ShowPluginsOverview_All" />
<ComboBoxItem x:Uid="ShowPluginsOverview_NonGlobal" />
<ComboBoxItem x:Uid="ShowPluginsOverview_None" />
</ComboBox>
</tkcontrols:SettingsCard>
<tkcontrols:SettingsCard
Name="PowerLauncherTitleFontSize"
x:Uid="PowerLauncher_TitleFontSize"
HeaderIcon="{ui:FontIcon Glyph=&#xE8E9;}">
<StackPanel Orientation="Horizontal" Spacing="12">
<ptcontrols:IsEnabledTextBlock
VerticalAlignment="Center"
AutomationProperties.AccessibilityView="Raw"
FontSize="12"
FontWeight="SemiBold"
Text="A" />
<Slider
x:Uid="PowerLauncher_TextFontSizeSlider"
LargeChange="2"
Maximum="24"
Minimum="12"
SmallChange="2"
StepFrequency="2"
TickFrequency="2"
TickPlacement="Outside"
Value="{x:Bind ViewModel.TitleFontSize, Mode=TwoWay}" />
<ptcontrols:IsEnabledTextBlock
VerticalAlignment="Center"
AutomationProperties.AccessibilityView="Raw"
FontSize="24"
FontWeight="SemiBold"
Text="A" />
</StackPanel>
</tkcontrols:SettingsCard>
</controls:SettingsGroup>
<controls:SettingsGroup x:Uid="PowerLauncher_Plugins" IsEnabled="{x:Bind ViewModel.EnablePowerLauncher, Mode=OneWay}">
<InfoBar
x:Uid="Run_ConflictingKeywordInfo"
IsClosable="False"
IsOpen="{x:Bind ViewModel.EnablePowerLauncher, Mode=OneWay}"
IsTabStop="{x:Bind ViewModel.EnablePowerLauncher, Mode=OneWay}"
Severity="Informational">
<InfoBar.ActionButton>
<HyperlinkButton x:Uid="Run_ConflictingKeywordInfo_Link" NavigateUri="https://aka.ms/PowerToysOverview_PowerToysRun#direct-activation-commands" />
</InfoBar.ActionButton>
</InfoBar>
<tkcontrols:SettingsCard
Name="RunPluginUse"
x:Uid="Run_PluginUse"
HeaderIcon="{ui:FontIcon Glyph=&#xEA86;}">
<tkcontrols:SettingsCard.Description>
<StackPanel>
<TextBlock x:Uid="Run_PluginUseDescription" />
<HyperlinkButton x:Uid="Run_PluginUseFindMorePlugins" NavigateUri="https://aka.ms/powerToysRunPlugins" />
</StackPanel>
</tkcontrols:SettingsCard.Description>
<AutoSuggestBox
x:Uid="PowerLauncher_SearchList"
MinWidth="{StaticResource SettingActionControlMinWidth}"
QueryIcon="Find"
Text="{x:Bind ViewModel.SearchText, Mode=TwoWay}">
<i:Interaction.Behaviors>
<ic:EventTriggerBehavior EventName="TextChanged">
<ic:InvokeCommandAction Command="{x:Bind ViewModel.SearchPluginsCommand}" />
</ic:EventTriggerBehavior>
</i:Interaction.Behaviors>
</AutoSuggestBox>
</tkcontrols:SettingsCard>
<InfoBar
x:Uid="GPO_SomeRunPluginsAreManaged"
IsClosable="False"
IsOpen="{x:Bind ViewModel.ShowPluginsAreGpoManagedInfo, Mode=OneWay}"
IsTabStop="{x:Bind ViewModel.ShowPluginsAreGpoManagedInfo, Mode=OneWay}"
Severity="Informational">
<InfoBar.IconSource>
<FontIconSource FontFamily="{StaticResource SymbolThemeFontFamily}" Glyph="&#xE72E;" />
</InfoBar.IconSource>
</InfoBar>
<InfoBar
x:Uid="Run_AllPluginsDisabled"
IsClosable="False"
IsOpen="{x:Bind ViewModel.ShowAllPluginsDisabledWarning, Mode=OneWay}"
IsTabStop="{x:Bind ViewModel.ShowAllPluginsDisabledWarning, Mode=OneWay}"
Severity="Error" />
<StackPanel Orientation="Horizontal" Visibility="{x:Bind ViewModel.ShowPluginsLoadingMessage, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}">
<ProgressRing
Width="20"
Height="20"
Margin="18,18"
IsActive="True" />
<TextBlock
x:Uid="Run_PluginsLoading"
VerticalAlignment="Center"
Style="{ThemeResource SecondaryTextStyle}" />
</StackPanel>
<ItemsRepeater x:Name="PluginsListView" ItemsSource="{x:Bind Path=ViewModel.Plugins, Mode=OneWay}">
<ItemsRepeater.Layout>
<StackLayout Spacing="2" />
</ItemsRepeater.Layout>
<ItemsRepeater.ItemTemplate>
<DataTemplate x:DataType="viewModels:PowerLauncherPluginViewModel" x:DefaultBindMode="OneWay">
<Grid>
<tkcontrols:SettingsExpander Description="{x:Bind Description}" Header="{x:Bind Path=Name}">
<tkcontrols:SettingsExpander.HeaderIcon>
<BitmapIcon UriSource="{x:Bind IconPath}" />
</tkcontrols:SettingsExpander.HeaderIcon>
<StackPanel Orientation="Horizontal" Spacing="16">
<!-- todo(Stefan): InfoBadge not available
<InfoBadge AutomationProperties.AccessibilityView="Raw"
Visibility="{x:Bind ShowBadgeOnPluginSettingError}"
Style="{StaticResource CriticalIconInfoBadgeStyle}" />
-->
<!-- Temporary badge replacement for InfoBadge control (htcfreek). (Normally you need one grid per icon group. But if you want to show two badges at the same place in a StackPanel you have to put all FontIcons into the same Grid.) -->
<Grid>
<!-- Error badge -->
<FontIcon
FontFamily="{StaticResource SymbolThemeFontFamily}"
Foreground="{ThemeResource InfoBarErrorSeverityIconBackground}"
Glyph="{StaticResource InfoBarIconBackgroundGlyph}"
Visibility="{x:Bind ShowBadgeOnPluginSettingError}" />
<FontIcon
FontFamily="{StaticResource SymbolThemeFontFamily}"
Foreground="{ThemeResource InfoBarErrorSeverityIconForeground}"
Glyph="{StaticResource InfoBarErrorIconGlyph}"
Visibility="{x:Bind ShowBadgeOnPluginSettingError}" />
</Grid>
<ToggleSwitch
x:Uid="PowerLauncher_EnablePluginToggle"
IsEnabled="{x:Bind Path=EnabledGpoRuleIsConfigured, Converter={StaticResource BoolNegationConverter}, Mode=OneWay}"
IsOn="{x:Bind Path=Disabled, Converter={StaticResource BoolNegationConverter}, Mode=TwoWay}" />
</StackPanel>
<tkcontrols:SettingsExpander.Items>
<tkcontrols:SettingsCard
Name="PowerLauncherActionKeyword"
x:Uid="PowerLauncher_ActionKeyword"
IsEnabled="{x:Bind Enabled, Mode=OneWay}">
<TextBox MinWidth="{StaticResource SettingActionControlMinWidth}" Text="{x:Bind ActionKeyword, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</tkcontrols:SettingsCard>
<tkcontrols:SettingsCard
Padding="0,0,0,0"
HorizontalContentAlignment="Left"
Background="{ThemeResource SystemFillColorCriticalBackgroundBrush}"
ContentAlignment="Vertical"
Visibility="{x:Bind ShowNotAccessibleWarning, Converter={StaticResource BoolToVisibilityConverter}}">
<InfoBar
x:Uid="Run_NotAccessibleWarning"
Margin="3,0,0,0"
Background="Transparent"
BorderBrush="Transparent"
IsClosable="False"
IsOpen="True"
IsTabStop="{x:Bind ShowNotAccessibleWarning}"
Severity="Error" />
</tkcontrols:SettingsCard>
<tkcontrols:SettingsCard ContentAlignment="Left" IsEnabled="{x:Bind Enabled, Mode=OneWay}">
<CheckBox
Margin="0,-8,0,0"
AutomationProperties.Name="{Binding ElementName=IncludeInGlobalResultTitle, Path=Text}"
IsChecked="{x:Bind IsGlobal, Mode=TwoWay}">
<StackPanel Orientation="Vertical">
<TextBlock x:Name="IncludeInGlobalResultTitle" x:Uid="PowerLauncher_IncludeInGlobalResultTitle" />
<ptcontrols:IsEnabledTextBlock
x:Uid="PowerLauncher_IncludeInGlobalResultDescription"
FontSize="{StaticResource SecondaryTextFontSize}"
Foreground="{ThemeResource TextFillColorSecondaryBrush}" />
</StackPanel>
</CheckBox>
</tkcontrols:SettingsCard>
<tkcontrols:SettingsCard
Name="PowerLauncherPluginWeightBoost"
x:Uid="PowerLauncher_PluginWeightBoost"
IsEnabled="{x:Bind IsGlobalAndEnabled, Mode=OneWay}">
<NumberBox
MinWidth="{StaticResource SettingActionControlMinWidth}"
LargeChange="50"
Maximum="1000"
Minimum="-1000"
SmallChange="10"
SpinButtonPlacementMode="Compact"
Value="{x:Bind WeightBoost, Mode=TwoWay}" />
</tkcontrols:SettingsCard>
<tkcontrols:SettingsCard
MinHeight="0"
HorizontalContentAlignment="Stretch"
ContentAlignment="Vertical">
<tkcontrols:SettingsCard.Resources>
<Thickness x:Key="SettingsCardPadding">0</Thickness>
<Thickness x:Key="SettingsExpanderItemPadding">0,0,0,0</Thickness>
</tkcontrols:SettingsCard.Resources>
<ItemsControl
Margin="0,-6,0,0"
HorizontalAlignment="Stretch"
HorizontalContentAlignment="Stretch"
IsEnabled="{x:Bind Enabled, Mode=OneWay}"
ItemTemplateSelector="{StaticResource RunOptionTemplateSelector}"
ItemsSource="{x:Bind Path=AdditionalOptions}" />
</tkcontrols:SettingsCard>
<tkcontrols:SettingsCard
MinHeight="0"
BorderThickness="0"
ContentAlignment="Right"
IsEnabled="{x:Bind Enabled, Mode=OneWay}">
<StackPanel
HorizontalAlignment="Right"
Orientation="Horizontal"
Spacing="4">
<TextBlock Opacity="{x:Bind DisabledOpacity}" Style="{ThemeResource SecondaryTextStyle}">
<Run x:Uid="PowerLauncher_PluginVersion" />
<Run FontWeight="SemiBold" Text="{x:Bind Version}" />
</TextBlock>
<TextBlock
AutomationProperties.Name=","
IsTabStop="False"
Opacity="{x:Bind DisabledOpacity}"
Style="{ThemeResource SecondaryTextStyle}"
Text="|" />
<TextBlock Opacity="{x:Bind DisabledOpacity}" Style="{ThemeResource SecondaryTextStyle}">
<Run x:Uid="PowerLauncher_AuthoredBy" />
<Run FontWeight="SemiBold" Text="{x:Bind Author}" />
</TextBlock>
<TextBlock
AutomationProperties.Name=","
IsTabStop="False"
Opacity="{x:Bind DisabledOpacity}"
Style="{ThemeResource SecondaryTextStyle}"
Text="|"
Visibility="{x:Bind HasValidWebsiteUri, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}" />
<HyperlinkButton
Margin="0"
Padding="0"
NavigateUri="{x:Bind WebsiteUri}"
Opacity="{x:Bind DisabledOpacity}"
Style="{StaticResource TextButtonStyle}"
Visibility="{x:Bind HasValidWebsiteUri, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}">
<TextBlock
x:Uid="PowerLauncher_PluginWebsite"
FontWeight="SemiBold"
Style="{ThemeResource SecondaryLinkTextStyle}" />
</HyperlinkButton>
</StackPanel>
</tkcontrols:SettingsCard>
</tkcontrols:SettingsExpander.Items>
</tkcontrols:SettingsExpander>
</Grid>
</DataTemplate>
</ItemsRepeater.ItemTemplate>
</ItemsRepeater>
</controls:SettingsGroup>
</StackPanel>
</controls:SettingsPageControl.ModuleContent>
<controls:SettingsPageControl.PrimaryLinks>
<controls:PageLink x:Uid="LearnMore_Run" Link="https://aka.ms/PowerToysOverview_PowerToysRun" />
<controls:PageLink x:Uid="Run_FindMorePlugins" Link="https://aka.ms/powerToysRunPlugins" />
</controls:SettingsPageControl.PrimaryLinks>
<controls:SettingsPageControl.SecondaryLinks>
<controls:PageLink Link="https://github.com/Wox-launcher/Wox/" Text="Wox" />
<controls:PageLink Link="https://github.com/betsegaw/windowwalker/" Text="Beta Tadele's Window Walker" />
</controls:SettingsPageControl.SecondaryLinks>
</controls:SettingsPageControl>
</local:NavigablePage>