mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-02-23 19:49:43 +01:00
Merge remote-tracking branch 'origin/main' into dev/vanzue/build-script
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Import Project="..\..\..\..\Common.Dotnet.CsWinRT.props" />
|
||||
<Import Project="..\..\..\..\Common.Dotnet.AotCompatibility.props" />
|
||||
<PropertyGroup>
|
||||
<RootNamespace>Microsoft.CmdPal.Ext.Calc</RootNamespace>
|
||||
<OutputPath>$(SolutionDir)$(Platform)\$(Configuration)\WinUI3Apps\CmdPal</OutputPath>
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Import Project="..\..\..\..\Common.Dotnet.CsWinRT.props" />
|
||||
<Import Project="..\..\..\..\Common.Dotnet.AotCompatibility.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<RootNamespace>Microsoft.CmdPal.Ext.Registry</RootNamespace>
|
||||
<OutputPath>$(SolutionDir)$(Platform)\$(Configuration)\WinUI3Apps\CmdPal</OutputPath>
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Import Project="..\..\..\..\Common.Dotnet.CsWinRT.props" />
|
||||
<Import Project="..\..\..\..\Common.Dotnet.AotCompatibility.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<Nullable>enable</Nullable>
|
||||
<RootNamespace>Microsoft.CmdPal.Ext.Shell</RootNamespace>
|
||||
|
||||
@@ -0,0 +1,104 @@
|
||||
// Copyright (c) Microsoft Corporation
|
||||
// The Microsoft Corporation licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using Microsoft.CmdPal.Ext.TimeDate.Helpers;
|
||||
using Microsoft.CommandPalette.Extensions;
|
||||
using Microsoft.CommandPalette.Extensions.Toolkit;
|
||||
|
||||
namespace Microsoft.CmdPal.Ext.TimeDate;
|
||||
|
||||
internal sealed partial class FallbackTimeDateItem : FallbackCommandItem
|
||||
{
|
||||
private readonly HashSet<string> _validOptions;
|
||||
private SettingsManager _settingsManager;
|
||||
|
||||
public FallbackTimeDateItem(SettingsManager settings)
|
||||
: base(new NoOpCommand(), Resources.Microsoft_plugin_timedate_fallback_display_title)
|
||||
{
|
||||
Title = string.Empty;
|
||||
Subtitle = string.Empty;
|
||||
_settingsManager = settings;
|
||||
_validOptions = new(StringComparer.OrdinalIgnoreCase)
|
||||
{
|
||||
Resources.ResourceManager.GetString("Microsoft_plugin_timedate_SearchTagDate", CultureInfo.CurrentCulture),
|
||||
Resources.ResourceManager.GetString("Microsoft_plugin_timedate_SearchTagDateNow", CultureInfo.CurrentCulture),
|
||||
|
||||
Resources.ResourceManager.GetString("Microsoft_plugin_timedate_SearchTagTime", CultureInfo.CurrentCulture),
|
||||
Resources.ResourceManager.GetString("Microsoft_plugin_timedate_SearchTagTimeNow", CultureInfo.CurrentCulture),
|
||||
|
||||
Resources.ResourceManager.GetString("Microsoft_plugin_timedate_SearchTagFormat", CultureInfo.CurrentCulture),
|
||||
Resources.ResourceManager.GetString("Microsoft_plugin_timedate_SearchTagFormatNow", CultureInfo.CurrentCulture),
|
||||
|
||||
Resources.ResourceManager.GetString("Microsoft_plugin_timedate_SearchTagWeek", CultureInfo.CurrentCulture),
|
||||
};
|
||||
}
|
||||
|
||||
public override void UpdateQuery(string query)
|
||||
{
|
||||
if (!_settingsManager.EnableFallbackItems || string.IsNullOrWhiteSpace(query) || !IsValidQuery(query))
|
||||
{
|
||||
Title = string.Empty;
|
||||
Subtitle = string.Empty;
|
||||
Command = new NoOpCommand();
|
||||
return;
|
||||
}
|
||||
|
||||
var availableResults = AvailableResultsList.GetList(false, _settingsManager);
|
||||
ListItem result = null;
|
||||
var maxScore = 0;
|
||||
|
||||
foreach (var f in availableResults)
|
||||
{
|
||||
var score = f.Score(query, f.Label, f.AlternativeSearchTag);
|
||||
if (score > maxScore)
|
||||
{
|
||||
maxScore = score;
|
||||
result = f.ToListItem();
|
||||
}
|
||||
}
|
||||
|
||||
if (result != null)
|
||||
{
|
||||
Title = result.Title;
|
||||
Subtitle = result.Subtitle;
|
||||
Icon = result.Icon;
|
||||
}
|
||||
else
|
||||
{
|
||||
Title = string.Empty;
|
||||
Subtitle = string.Empty;
|
||||
Command = new NoOpCommand();
|
||||
}
|
||||
}
|
||||
|
||||
private bool IsValidQuery(string query)
|
||||
{
|
||||
if (_validOptions.Contains(query))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
foreach (var option in _validOptions)
|
||||
{
|
||||
if (option == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var parts = option.Split(';', StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries);
|
||||
|
||||
if (parts.Any(part => string.Equals(part, query, StringComparison.OrdinalIgnoreCase)))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -33,6 +33,7 @@ internal static class AvailableResultsList
|
||||
var dateTimeNowUtc = dateTimeNow.ToUniversalTime();
|
||||
var firstWeekRule = firstWeekOfYear ?? TimeAndDateHelper.GetCalendarWeekRule(settings.FirstWeekOfYear);
|
||||
var firstDayOfTheWeek = firstDayOfWeek ?? TimeAndDateHelper.GetFirstDayOfWeek(settings.FirstDayOfWeek);
|
||||
var weekOfYear = calendar.GetWeekOfYear(dateTimeNow, firstWeekRule, firstDayOfTheWeek);
|
||||
|
||||
results.AddRange(new[]
|
||||
{
|
||||
@@ -59,14 +60,20 @@ internal static class AvailableResultsList
|
||||
AlternativeSearchTag = ResultHelper.SelectStringFromResources(isSystemDateTime, "Microsoft_plugin_timedate_SearchTagFormat"),
|
||||
IconType = ResultIconType.DateTime,
|
||||
},
|
||||
new AvailableResult()
|
||||
{
|
||||
Value = weekOfYear.ToString(CultureInfo.CurrentCulture),
|
||||
Label = Resources.Microsoft_plugin_timedate_WeekOfYear,
|
||||
AlternativeSearchTag = ResultHelper.SelectStringFromResources(isSystemDateTime, "Microsoft_plugin_timedate_SearchTagDate"),
|
||||
IconType = ResultIconType.Date,
|
||||
},
|
||||
});
|
||||
|
||||
if (isKeywordSearch || !settings.OnlyDateTimeNowGlobal)
|
||||
if (isKeywordSearch)
|
||||
{
|
||||
// We use long instead of int for unix time stamp because int is too small after 03:14:07 UTC 2038-01-19
|
||||
var unixTimestamp = ((DateTimeOffset)dateTimeNowUtc).ToUnixTimeSeconds();
|
||||
var unixTimestampMilliseconds = ((DateTimeOffset)dateTimeNowUtc).ToUnixTimeMilliseconds();
|
||||
var weekOfYear = calendar.GetWeekOfYear(dateTimeNow, firstWeekRule, firstDayOfTheWeek);
|
||||
var era = DateTimeFormatInfo.CurrentInfo.GetEraName(calendar.GetEra(dateTimeNow));
|
||||
var eraShort = DateTimeFormatInfo.CurrentInfo.GetAbbreviatedEraName(calendar.GetEra(dateTimeNow));
|
||||
|
||||
@@ -251,13 +258,6 @@ internal static class AvailableResultsList
|
||||
IconType = ResultIconType.Date,
|
||||
},
|
||||
new AvailableResult()
|
||||
{
|
||||
Value = weekOfYear.ToString(CultureInfo.CurrentCulture),
|
||||
Label = Resources.Microsoft_plugin_timedate_WeekOfYear,
|
||||
AlternativeSearchTag = ResultHelper.SelectStringFromResources(isSystemDateTime, "Microsoft_plugin_timedate_SearchTagDate"),
|
||||
IconType = ResultIconType.Date,
|
||||
},
|
||||
new AvailableResult()
|
||||
{
|
||||
Value = DateTimeFormatInfo.CurrentInfo.GetMonthName(dateTimeNow.Month),
|
||||
Label = Resources.Microsoft_plugin_timedate_Month,
|
||||
|
||||
@@ -75,11 +75,11 @@ public class SettingsManager : JsonSettingsManager
|
||||
Resources.Microsoft_plugin_timedate_SettingFirstDayOfWeek,
|
||||
_firstDayOfWeekChoices);
|
||||
|
||||
private readonly ToggleSetting _onlyDateTimeNowGlobal = new(
|
||||
Namespaced(nameof(OnlyDateTimeNowGlobal)),
|
||||
Resources.Microsoft_plugin_timedate_SettingOnlyDateTimeNowGlobal,
|
||||
Resources.Microsoft_plugin_timedate_SettingOnlyDateTimeNowGlobal_Description,
|
||||
true); // TODO -- double check default value
|
||||
private readonly ToggleSetting _enableFallbackItems = new(
|
||||
Namespaced(nameof(EnableFallbackItems)),
|
||||
Resources.Microsoft_plugin_timedate_SettingEnableFallbackItems,
|
||||
Resources.Microsoft_plugin_timedate_SettingEnableFallbackItems_Description,
|
||||
true);
|
||||
|
||||
private readonly ToggleSetting _timeWithSeconds = new(
|
||||
Namespaced(nameof(TimeWithSecond)),
|
||||
@@ -93,12 +93,6 @@ public class SettingsManager : JsonSettingsManager
|
||||
Resources.Microsoft_plugin_timedate_SettingDateWithWeekday_Description,
|
||||
false); // TODO -- double check default value
|
||||
|
||||
private readonly ToggleSetting _hideNumberMessageOnGlobalQuery = new(
|
||||
Namespaced(nameof(HideNumberMessageOnGlobalQuery)),
|
||||
Resources.Microsoft_plugin_timedate_SettingHideNumberMessageOnGlobalQuery,
|
||||
Resources.Microsoft_plugin_timedate_SettingHideNumberMessageOnGlobalQuery,
|
||||
true); // TODO -- double check default value
|
||||
|
||||
private readonly TextSetting _customFormats = new(
|
||||
Namespaced(nameof(CustomFormats)),
|
||||
Resources.Microsoft_plugin_timedate_Setting_CustomFormats,
|
||||
@@ -145,14 +139,12 @@ public class SettingsManager : JsonSettingsManager
|
||||
}
|
||||
}
|
||||
|
||||
public bool OnlyDateTimeNowGlobal => _onlyDateTimeNowGlobal.Value;
|
||||
public bool EnableFallbackItems => _enableFallbackItems.Value;
|
||||
|
||||
public bool TimeWithSecond => _timeWithSeconds.Value;
|
||||
|
||||
public bool DateWithWeekday => _dateWithWeekday.Value;
|
||||
|
||||
public bool HideNumberMessageOnGlobalQuery => _hideNumberMessageOnGlobalQuery.Value;
|
||||
|
||||
public List<string> CustomFormats => _customFormats.Value.Split(TEXTBOXNEWLINE).ToList();
|
||||
|
||||
internal static string SettingsJsonPath()
|
||||
@@ -168,10 +160,7 @@ public class SettingsManager : JsonSettingsManager
|
||||
{
|
||||
FilePath = SettingsJsonPath();
|
||||
|
||||
/* The following two settings make no sense with current CmdPal behavior.
|
||||
Settings.Add(_onlyDateTimeNowGlobal);
|
||||
Settings.Add(_hideNumberMessageOnGlobalQuery); */
|
||||
|
||||
Settings.Add(_enableFallbackItems);
|
||||
Settings.Add(_timeWithSeconds);
|
||||
Settings.Add(_dateWithWeekday);
|
||||
Settings.Add(_firstWeekOfYear);
|
||||
|
||||
@@ -40,7 +40,7 @@ public sealed partial class TimeDateCalculator
|
||||
var lastInputParsingErrorMsg = string.Empty;
|
||||
|
||||
// Switch search type
|
||||
if (isEmptySearchInput || (!isKeywordSearch && settings.OnlyDateTimeNowGlobal))
|
||||
if (isEmptySearchInput || (!isKeywordSearch))
|
||||
{
|
||||
// Return all results for system time/date on empty keyword search
|
||||
// or only time, date and now results for system time on global queries if the corresponding setting is enabled
|
||||
@@ -91,23 +91,6 @@ public sealed partial class TimeDateCalculator
|
||||
}
|
||||
}
|
||||
|
||||
/*htcfreek:Code obsolete with current CmdPal behavior.
|
||||
// If search term is only a number that can't be parsed return an error message
|
||||
if (!isEmptySearchInput && results.Count == 0 && Regex.IsMatch(query, @"\w+\d+.*$") && !query.Any(char.IsWhiteSpace) && (TimeAndDateHelper.IsSpecialInputParsing(query) || !Regex.IsMatch(query, @"\d+[\.:/]\d+")))
|
||||
{
|
||||
// Without plugin key word show only if message is not hidden by setting
|
||||
if (!settings.HideNumberMessageOnGlobalQuery)
|
||||
{
|
||||
var er = ResultHelper.CreateInvalidInputErrorResult();
|
||||
if (!string.IsNullOrEmpty(lastInputParsingErrorMsg))
|
||||
{
|
||||
er.Details = new Details() { Body = lastInputParsingErrorMsg };
|
||||
}
|
||||
|
||||
results.Add(er);
|
||||
}
|
||||
} */
|
||||
|
||||
if (results.Count == 0)
|
||||
{
|
||||
var er = ResultHelper.CreateInvalidInputErrorResult();
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Import Project="..\..\..\..\Common.Dotnet.CsWinRT.props" />
|
||||
<Import Project="..\..\Microsoft.CmdPal.UI\CmdPal.pre.props" />
|
||||
<Import Project="..\..\..\..\Common.Dotnet.AotCompatibility.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<RootNamespace>Microsoft.CmdPal.Ext.TimeDate</RootNamespace>
|
||||
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
||||
|
||||
@@ -213,6 +213,15 @@ namespace Microsoft.CmdPal.Ext.TimeDate {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Open Time Data Command.
|
||||
/// </summary>
|
||||
public static string Microsoft_plugin_timedate_fallback_display_title {
|
||||
get {
|
||||
return ResourceManager.GetString("Microsoft_plugin_timedate_fallback_display_title", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Date and time in filename-compatible format.
|
||||
/// </summary>
|
||||
@@ -609,6 +618,15 @@ namespace Microsoft.CmdPal.Ext.TimeDate {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Current Week; Calendar week; Week of the year; Week.
|
||||
/// </summary>
|
||||
public static string Microsoft_plugin_timedate_SearchTagWeek {
|
||||
get {
|
||||
return ResourceManager.GetString("Microsoft_plugin_timedate_SearchTagWeek", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Second.
|
||||
/// </summary>
|
||||
@@ -663,6 +681,24 @@ namespace Microsoft.CmdPal.Ext.TimeDate {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Enable fallback items for TimeDate (week, year, now, time, date).
|
||||
/// </summary>
|
||||
public static string Microsoft_plugin_timedate_SettingEnableFallbackItems {
|
||||
get {
|
||||
return ResourceManager.GetString("Microsoft_plugin_timedate_SettingEnableFallbackItems", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Show time and date results when typing keywords like "week", "year", "now", "time", or "date".
|
||||
/// </summary>
|
||||
public static string Microsoft_plugin_timedate_SettingEnableFallbackItems_Description {
|
||||
get {
|
||||
return ResourceManager.GetString("Microsoft_plugin_timedate_SettingEnableFallbackItems_Description", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to First day of the week.
|
||||
/// </summary>
|
||||
@@ -780,33 +816,6 @@ namespace Microsoft.CmdPal.Ext.TimeDate {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Hide 'Invalid number input' error message on global queries.
|
||||
/// </summary>
|
||||
public static string Microsoft_plugin_timedate_SettingHideNumberMessageOnGlobalQuery {
|
||||
get {
|
||||
return ResourceManager.GetString("Microsoft_plugin_timedate_SettingHideNumberMessageOnGlobalQuery", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Show only 'Time', 'Date' and 'Now' result for system time on global queries.
|
||||
/// </summary>
|
||||
public static string Microsoft_plugin_timedate_SettingOnlyDateTimeNowGlobal {
|
||||
get {
|
||||
return ResourceManager.GetString("Microsoft_plugin_timedate_SettingOnlyDateTimeNowGlobal", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Regardless of this setting, for global queries the first word of the query has to be a complete match..
|
||||
/// </summary>
|
||||
public static string Microsoft_plugin_timedate_SettingOnlyDateTimeNowGlobal_Description {
|
||||
get {
|
||||
return ResourceManager.GetString("Microsoft_plugin_timedate_SettingOnlyDateTimeNowGlobal_Description", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Show time with seconds.
|
||||
/// </summary>
|
||||
|
||||
@@ -265,15 +265,6 @@
|
||||
<data name="Microsoft_plugin_timedate_SettingDateWithWeekday_Description" xml:space="preserve">
|
||||
<value>This setting applies to the 'Date' and 'Now' result.</value>
|
||||
</data>
|
||||
<data name="Microsoft_plugin_timedate_SettingHideNumberMessageOnGlobalQuery" xml:space="preserve">
|
||||
<value>Hide 'Invalid number input' error message on global queries</value>
|
||||
</data>
|
||||
<data name="Microsoft_plugin_timedate_SettingOnlyDateTimeNowGlobal" xml:space="preserve">
|
||||
<value>Show only 'Time', 'Date' and 'Now' result for system time on global queries</value>
|
||||
</data>
|
||||
<data name="Microsoft_plugin_timedate_SettingOnlyDateTimeNowGlobal_Description" xml:space="preserve">
|
||||
<value>Regardless of this setting, for global queries the first word of the query has to be a complete match.</value>
|
||||
</data>
|
||||
<data name="Microsoft_plugin_timedate_SettingTimeWithSeconds" xml:space="preserve">
|
||||
<value>Show time with seconds</value>
|
||||
</data>
|
||||
@@ -433,4 +424,16 @@
|
||||
<data name="Microsoft_plugin_timedate_DaysInMonth" xml:space="preserve">
|
||||
<value>Days in month</value>
|
||||
</data>
|
||||
<data name="Microsoft_plugin_timedate_fallback_display_title" xml:space="preserve">
|
||||
<value>Open Time Data Command</value>
|
||||
</data>
|
||||
<data name="Microsoft_plugin_timedate_SearchTagWeek" xml:space="preserve">
|
||||
<value>Current Week; Calendar week; Week of the year; Week</value>
|
||||
</data>
|
||||
<data name="Microsoft_plugin_timedate_SettingEnableFallbackItems" xml:space="preserve">
|
||||
<value>Enable fallback items for TimeDate (week, year, now, time, date)</value>
|
||||
</data>
|
||||
<data name="Microsoft_plugin_timedate_SettingEnableFallbackItems_Description" xml:space="preserve">
|
||||
<value>Show time and date results when typing keywords like "week", "year", "now", "time", or "date"</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -18,6 +18,7 @@ public partial class TimeDateCommandsProvider : CommandProvider
|
||||
private static readonly SettingsManager _settingsManager = new();
|
||||
private static readonly CompositeFormat MicrosoftPluginTimedatePluginDescription = System.Text.CompositeFormat.Parse(Resources.Microsoft_plugin_timedate_plugin_description);
|
||||
private static readonly TimeDateExtensionPage _timeDateExtensionPage = new(_settingsManager);
|
||||
private readonly FallbackTimeDateItem _fallbackTimeDateItem = new(_settingsManager);
|
||||
|
||||
public TimeDateCommandsProvider()
|
||||
{
|
||||
@@ -45,4 +46,6 @@ public partial class TimeDateCommandsProvider : CommandProvider
|
||||
}
|
||||
|
||||
public override ICommandItem[] TopLevelCommands() => [_command];
|
||||
|
||||
public override IFallbackCommandItem[] FallbackCommands() => [_fallbackTimeDateItem];
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Import Project="..\..\..\..\Common.Dotnet.CsWinRT.props" />
|
||||
<Import Project="..\..\..\..\Common.Dotnet.AotCompatibility.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<Nullable>enable</Nullable>
|
||||
<RootNamespace>Microsoft.CmdPal.Ext.WindowWalker</RootNamespace>
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Import Project="..\..\..\..\Common.Dotnet.CsWinRT.props" />
|
||||
<Import Project="..\..\..\..\Common.Dotnet.AotCompatibility.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<RootNamespace>Microsoft.CmdPal.Ext.WindowsServices</RootNamespace>
|
||||
<OutputPath>$(SolutionDir)$(Platform)\$(Configuration)\WinUI3Apps\CmdPal</OutputPath>
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Import Project="..\..\..\..\Common.Dotnet.CsWinRT.props" />
|
||||
<Import Project="..\..\..\..\Common.Dotnet.AotCompatibility.props" />
|
||||
<Import Project="..\..\Microsoft.CmdPal.UI\CmdPal.pre.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<RootNamespace>Microsoft.CmdPal.Ext.WindowsTerminal</RootNamespace>
|
||||
<!-- <OutputPath>$(SolutionDir)$(Platform)\$(Configuration)\WinUI3Apps\CmdPal</OutputPath> -->
|
||||
|
||||
Reference in New Issue
Block a user