mirror of
https://github.com/microsoft/PowerToys.git
synced 2025-12-16 03:37:59 +01:00
wire things up
This commit is contained in:
@@ -731,8 +731,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CalculatorEngineCommon", "s
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ManagedCsWin32", "src\common\ManagedCsWin32\ManagedCsWin32.csproj", "{14AFD976-B4D2-49D0-9E6C-AA93CC061B8A}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ManagedCsWin32", "src\common\ManagedCsWin32\ManagedCsWin32.csproj", "{14AFD976-B4D2-49D0-9E6C-AA93CC061B8A}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.CmdPal.Ext.PowerToys.Host", "src\modules\cmdpal\ext\Microsoft.CmdPal.Ext.PowerToys.Host\Microsoft.CmdPal.Ext.PowerToys.Host.csproj", "{DDF8565C-B67A-9B79-6156-A2544408BCF7}"
|
|
||||||
EndProject
|
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PowerRename.UITests", "src\modules\powerrename\PowerRenameUITest\PowerRename.UITests.csproj", "{9D3F3793-EFE3-4525-8782-238015DABA62}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PowerRename.UITests", "src\modules\powerrename\PowerRenameUITest\PowerRename.UITests.csproj", "{9D3F3793-EFE3-4525-8782-238015DABA62}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Core", "Core", "{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Core", "Core", "{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}"
|
||||||
@@ -3770,18 +3768,6 @@ Global
|
|||||||
{14AFD976-B4D2-49D0-9E6C-AA93CC061B8A}.Release|ARM64.Build.0 = Release|ARM64
|
{14AFD976-B4D2-49D0-9E6C-AA93CC061B8A}.Release|ARM64.Build.0 = Release|ARM64
|
||||||
{14AFD976-B4D2-49D0-9E6C-AA93CC061B8A}.Release|x64.ActiveCfg = Release|x64
|
{14AFD976-B4D2-49D0-9E6C-AA93CC061B8A}.Release|x64.ActiveCfg = Release|x64
|
||||||
{14AFD976-B4D2-49D0-9E6C-AA93CC061B8A}.Release|x64.Build.0 = Release|x64
|
{14AFD976-B4D2-49D0-9E6C-AA93CC061B8A}.Release|x64.Build.0 = Release|x64
|
||||||
{DDF8565C-B67A-9B79-6156-A2544408BCF7}.Debug|Any CPU.ActiveCfg = Debug|x64
|
|
||||||
{DDF8565C-B67A-9B79-6156-A2544408BCF7}.Debug|Any CPU.Build.0 = Debug|x64
|
|
||||||
{DDF8565C-B67A-9B79-6156-A2544408BCF7}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
|
||||||
{DDF8565C-B67A-9B79-6156-A2544408BCF7}.Debug|ARM64.Build.0 = Debug|ARM64
|
|
||||||
{DDF8565C-B67A-9B79-6156-A2544408BCF7}.Debug|x64.ActiveCfg = Debug|x64
|
|
||||||
{DDF8565C-B67A-9B79-6156-A2544408BCF7}.Debug|x64.Build.0 = Debug|x64
|
|
||||||
{DDF8565C-B67A-9B79-6156-A2544408BCF7}.Release|Any CPU.ActiveCfg = Release|x64
|
|
||||||
{DDF8565C-B67A-9B79-6156-A2544408BCF7}.Release|Any CPU.Build.0 = Release|x64
|
|
||||||
{DDF8565C-B67A-9B79-6156-A2544408BCF7}.Release|ARM64.ActiveCfg = Release|ARM64
|
|
||||||
{DDF8565C-B67A-9B79-6156-A2544408BCF7}.Release|ARM64.Build.0 = Release|ARM64
|
|
||||||
{DDF8565C-B67A-9B79-6156-A2544408BCF7}.Release|x64.ActiveCfg = Release|x64
|
|
||||||
{DDF8565C-B67A-9B79-6156-A2544408BCF7}.Release|x64.Build.0 = Release|x64
|
|
||||||
{9D3F3793-EFE3-4525-8782-238015DABA62}.Debug|Any CPU.ActiveCfg = Debug|x64
|
{9D3F3793-EFE3-4525-8782-238015DABA62}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||||
{9D3F3793-EFE3-4525-8782-238015DABA62}.Debug|Any CPU.Build.0 = Debug|x64
|
{9D3F3793-EFE3-4525-8782-238015DABA62}.Debug|Any CPU.Build.0 = Debug|x64
|
||||||
{9D3F3793-EFE3-4525-8782-238015DABA62}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
{9D3F3793-EFE3-4525-8782-238015DABA62}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||||
@@ -4439,7 +4425,6 @@ Global
|
|||||||
{43E779F3-D83C-48B1-BA8D-1912DBD76FC9} = {68328142-5B31-4715-BCBB-7B6345EE0971}
|
{43E779F3-D83C-48B1-BA8D-1912DBD76FC9} = {68328142-5B31-4715-BCBB-7B6345EE0971}
|
||||||
{2CF78CF7-8FEB-4BE1-9591-55FA25B48FC6} = {1AFB6476-670D-4E80-A464-657E01DFF482}
|
{2CF78CF7-8FEB-4BE1-9591-55FA25B48FC6} = {1AFB6476-670D-4E80-A464-657E01DFF482}
|
||||||
{14AFD976-B4D2-49D0-9E6C-AA93CC061B8A} = {1AFB6476-670D-4E80-A464-657E01DFF482}
|
{14AFD976-B4D2-49D0-9E6C-AA93CC061B8A} = {1AFB6476-670D-4E80-A464-657E01DFF482}
|
||||||
{DDF8565C-B67A-9B79-6156-A2544408BCF7} = {ECB8E0D1-7603-4E5C-AB10-D1E545E6F8E2}
|
|
||||||
{9D3F3793-EFE3-4525-8782-238015DABA62} = {66E1534A-1587-42B2-912F-45C994D32904}
|
{9D3F3793-EFE3-4525-8782-238015DABA62} = {66E1534A-1587-42B2-912F-45C994D32904}
|
||||||
{02EA681E-C7D8-13C7-8484-4AC65E1B71E8} = {3846508C-77EB-4034-A702-F8BB263C4F79}
|
{02EA681E-C7D8-13C7-8484-4AC65E1B71E8} = {3846508C-77EB-4034-A702-F8BB263C4F79}
|
||||||
{24133F7F-C1D1-DE04-EFA8-F5D5467FE027} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
|
{24133F7F-C1D1-DE04-EFA8-F5D5467FE027} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
// 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 Common.UI;
|
||||||
|
using Microsoft.CommandPalette.Extensions.Toolkit;
|
||||||
|
|
||||||
|
namespace PowerToysExtension.Commands;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Opens the PowerToys settings page for the given module via SettingsDeepLink.
|
||||||
|
/// </summary>
|
||||||
|
internal sealed partial class OpenInSettingsCommand : InvokableCommand
|
||||||
|
{
|
||||||
|
private readonly SettingsDeepLink.SettingsWindow _module;
|
||||||
|
|
||||||
|
internal OpenInSettingsCommand(SettingsDeepLink.SettingsWindow module, string? title = null)
|
||||||
|
{
|
||||||
|
_module = module;
|
||||||
|
Name = string.IsNullOrWhiteSpace(title) ? $"Open {_module} settings" : title;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override CommandResult Invoke()
|
||||||
|
{
|
||||||
|
SettingsDeepLink.OpenSettings(_module);
|
||||||
|
return CommandResult.Hide();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,113 @@
|
|||||||
|
// 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.Linq;
|
||||||
|
using Common.Search.FuzzSearch;
|
||||||
|
using Common.UI;
|
||||||
|
using Microsoft.CommandPalette.Extensions;
|
||||||
|
using Microsoft.CommandPalette.Extensions.Toolkit;
|
||||||
|
using PowerToysExtension.Commands;
|
||||||
|
using PowerToysExtension.Helper;
|
||||||
|
|
||||||
|
namespace PowerToysExtension.Helper;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Builds the list of PowerToys module entries and supports basic fuzzy filtering.
|
||||||
|
/// </summary>
|
||||||
|
internal static class ModuleItemsHelper
|
||||||
|
{
|
||||||
|
private static List<ListItem>? _cache;
|
||||||
|
|
||||||
|
public static IListItem[] FilteredItems(string query)
|
||||||
|
{
|
||||||
|
var all = AllItems();
|
||||||
|
if (string.IsNullOrWhiteSpace(query))
|
||||||
|
{
|
||||||
|
return [.. all];
|
||||||
|
}
|
||||||
|
|
||||||
|
var matched = new List<Tuple<int, ListItem>>();
|
||||||
|
foreach (var item in all)
|
||||||
|
{
|
||||||
|
var result = StringMatcher.FuzzyMatch(query, item.Title);
|
||||||
|
if (result.Success)
|
||||||
|
{
|
||||||
|
matched.Add(new Tuple<int, ListItem>(result.Score, item));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
matched.Sort((x, y) => y.Item1.CompareTo(x.Item1));
|
||||||
|
return [.. matched.Select(x => x.Item2)];
|
||||||
|
}
|
||||||
|
|
||||||
|
private static List<ListItem> AllItems()
|
||||||
|
{
|
||||||
|
if (_cache is not null)
|
||||||
|
{
|
||||||
|
return _cache;
|
||||||
|
}
|
||||||
|
|
||||||
|
var items = new List<ListItem>();
|
||||||
|
foreach (var module in Enum.GetValues<SettingsDeepLink.SettingsWindow>())
|
||||||
|
{
|
||||||
|
var item = CreateItem(module);
|
||||||
|
if (item is not null)
|
||||||
|
{
|
||||||
|
items.Add(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_cache = items;
|
||||||
|
return items;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static ListItem? CreateItem(SettingsDeepLink.SettingsWindow module)
|
||||||
|
{
|
||||||
|
// Skip purely internal pages.
|
||||||
|
if (module is SettingsDeepLink.SettingsWindow.Dashboard)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
var icon = module.ModuleIcon();
|
||||||
|
var title = module.ModuleDisplayName();
|
||||||
|
|
||||||
|
var settingsCommand = new OpenInSettingsCommand(module, $"Open {title} settings");
|
||||||
|
|
||||||
|
// Module-specific extras
|
||||||
|
var more = new List<CommandContextItem>();
|
||||||
|
switch (module)
|
||||||
|
{
|
||||||
|
case SettingsDeepLink.SettingsWindow.Awake:
|
||||||
|
more.Add(new CommandContextItem(new StartAwakeCommand("Awake: Keep awake indefinitely", () => "-m indefinite", "Awake set to indefinite")));
|
||||||
|
more.Add(new CommandContextItem(new StartAwakeCommand("Awake: Keep awake for 30 minutes", () => "-m timed -t 30", "Awake set for 30 minutes")));
|
||||||
|
more.Add(new CommandContextItem(new StartAwakeCommand("Awake: Keep awake for 2 hours", () => "-m timed -t 120", "Awake set for 2 hours")));
|
||||||
|
more.Add(new CommandContextItem(new StopAwakeCommand()));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SettingsDeepLink.SettingsWindow.Workspaces:
|
||||||
|
more.Add(new CommandContextItem(new OpenWorkspaceEditorCommand()));
|
||||||
|
more.Add(new CommandContextItem(new OpenPowerToysSettingsCommand("Workspaces", "Workspaces")));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SettingsDeepLink.SettingsWindow.Overview:
|
||||||
|
// Overview just opens main settings
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
var command = new CommandItem(settingsCommand)
|
||||||
|
{
|
||||||
|
Title = title,
|
||||||
|
Icon = icon,
|
||||||
|
MoreCommands = more.Count > 0 ? [.. more] : [],
|
||||||
|
};
|
||||||
|
|
||||||
|
return new ListItem(command);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
// 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 Microsoft.CommandPalette.Extensions.Toolkit;
|
||||||
|
using static Common.UI.SettingsDeepLink;
|
||||||
|
|
||||||
|
namespace PowerToysExtension.Helper;
|
||||||
|
|
||||||
|
internal static class PowerToysResourcesHelper
|
||||||
|
{
|
||||||
|
public static IconInfo ProviderIcon() => IconHelpers.FromRelativePath("Assets\\PowerToys.png");
|
||||||
|
|
||||||
|
public static IconInfo ModuleIcon(this SettingsWindow module)
|
||||||
|
{
|
||||||
|
var iconPath = module switch
|
||||||
|
{
|
||||||
|
SettingsWindow.ColorPicker => "Assets\\ColorPicker.png",
|
||||||
|
SettingsWindow.FancyZones => "Assets\\FancyZones.png",
|
||||||
|
SettingsWindow.Hosts => "Assets\\Hosts.png",
|
||||||
|
SettingsWindow.PowerOCR => "Assets\\PowerOcr.png",
|
||||||
|
SettingsWindow.RegistryPreview => "Assets\\RegistryPreview.png",
|
||||||
|
SettingsWindow.MeasureTool => "Assets\\ScreenRuler.png",
|
||||||
|
SettingsWindow.ShortcutGuide => "Assets\\ShortcutGuide.png",
|
||||||
|
SettingsWindow.CropAndLock => "Assets\\CropAndLock.png",
|
||||||
|
SettingsWindow.EnvironmentVariables => "Assets\\EnvironmentVariables.png",
|
||||||
|
SettingsWindow.Awake => "Assets\\Awake.png",
|
||||||
|
SettingsWindow.PowerRename => "Assets\\PowerRename.png",
|
||||||
|
SettingsWindow.Run => "Assets\\PowerToysRun.png",
|
||||||
|
SettingsWindow.ImageResizer => "Assets\\ImageResizer.png",
|
||||||
|
SettingsWindow.KBM => "Assets\\KeyboardManager.png",
|
||||||
|
SettingsWindow.MouseUtils => "Assets\\MouseUtils.png",
|
||||||
|
SettingsWindow.Workspaces => "Assets\\Workspaces.png",
|
||||||
|
SettingsWindow.AdvancedPaste => "Assets\\AdvancedPaste.png",
|
||||||
|
SettingsWindow.CmdPal => "Assets\\CmdPal.png",
|
||||||
|
SettingsWindow.ZoomIt => "Assets\\ZoomIt.png",
|
||||||
|
SettingsWindow.FileExplorer => "Assets\\FileExplorerPreview.png",
|
||||||
|
SettingsWindow.FileLocksmith => "Assets\\FileLocksmith.png",
|
||||||
|
SettingsWindow.NewPlus => "Assets\\NewPlus.png",
|
||||||
|
SettingsWindow.Peek => "Assets\\Peek.png",
|
||||||
|
SettingsWindow.AlwaysOnTop => "Assets\\AlwaysOnTop.png",
|
||||||
|
SettingsWindow.CmdNotFound => "Assets\\CommandNotFound.png",
|
||||||
|
SettingsWindow.MouseWithoutBorders => "Assets\\MouseWithoutBorders.png",
|
||||||
|
SettingsWindow.PowerAccent => "Assets\\QuickAccent.png",
|
||||||
|
SettingsWindow.PowerLauncher => "Assets\\PowerToysRun.png",
|
||||||
|
SettingsWindow.PowerPreview => "Assets\\FileExplorerPreview.png",
|
||||||
|
SettingsWindow.Overview => "Assets\\PowerToys.png",
|
||||||
|
SettingsWindow.Dashboard => "Assets\\PowerToys.png",
|
||||||
|
_ => "Assets\\PowerToys.png",
|
||||||
|
};
|
||||||
|
|
||||||
|
return IconHelpers.FromRelativePath(iconPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string ModuleDisplayName(this SettingsWindow module)
|
||||||
|
{
|
||||||
|
return module switch
|
||||||
|
{
|
||||||
|
SettingsWindow.ColorPicker => "Color Picker",
|
||||||
|
SettingsWindow.FancyZones => "FancyZones",
|
||||||
|
SettingsWindow.Hosts => "Hosts File Editor",
|
||||||
|
SettingsWindow.PowerOCR => "Text Extractor",
|
||||||
|
SettingsWindow.RegistryPreview => "Registry Preview",
|
||||||
|
SettingsWindow.MeasureTool => "Screen Ruler",
|
||||||
|
SettingsWindow.ShortcutGuide => "Shortcut Guide",
|
||||||
|
SettingsWindow.CropAndLock => "Crop And Lock",
|
||||||
|
SettingsWindow.EnvironmentVariables => "Environment Variables",
|
||||||
|
SettingsWindow.Awake => "Awake",
|
||||||
|
SettingsWindow.PowerRename => "PowerRename",
|
||||||
|
SettingsWindow.Run => "PowerToys Run",
|
||||||
|
SettingsWindow.ImageResizer => "Image Resizer",
|
||||||
|
SettingsWindow.KBM => "Keyboard Manager",
|
||||||
|
SettingsWindow.MouseUtils => "Mouse Utilities",
|
||||||
|
SettingsWindow.Workspaces => "Workspaces",
|
||||||
|
SettingsWindow.AdvancedPaste => "Advanced Paste",
|
||||||
|
SettingsWindow.CmdPal => "Command Palette",
|
||||||
|
SettingsWindow.ZoomIt => "ZoomIt",
|
||||||
|
SettingsWindow.FileExplorer => "File Explorer Add-ons",
|
||||||
|
SettingsWindow.FileLocksmith => "File Locksmith",
|
||||||
|
SettingsWindow.NewPlus => "New+",
|
||||||
|
SettingsWindow.Peek => "Peek",
|
||||||
|
SettingsWindow.AlwaysOnTop => "Always On Top",
|
||||||
|
SettingsWindow.CmdNotFound => "Command Not Found",
|
||||||
|
SettingsWindow.MouseWithoutBorders => "Mouse Without Borders",
|
||||||
|
SettingsWindow.PowerAccent => "Quick Accent",
|
||||||
|
SettingsWindow.Overview => "General",
|
||||||
|
SettingsWindow.Dashboard => "Dashboard",
|
||||||
|
SettingsWindow.PowerLauncher => "PowerToys Run",
|
||||||
|
SettingsWindow.PowerPreview => "File Explorer Add-ons",
|
||||||
|
_ => module.ToString(),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -32,7 +32,7 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\..\extensionsdk\Microsoft.CommandPalette.Extensions.Toolkit\Microsoft.CommandPalette.Extensions.Toolkit.csproj" />
|
<PackageReference Include="Microsoft.WindowsAppSDK" />
|
||||||
<PackageReference Include="Microsoft.Windows.CsWin32">
|
<PackageReference Include="Microsoft.Windows.CsWin32">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
|
||||||
@@ -50,7 +50,10 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\..\extensionsdk\Microsoft.CommandPalette.Extensions.Toolkit\Microsoft.CommandPalette.Extensions.Toolkit.csproj" />
|
||||||
<ProjectReference Include="..\..\..\..\common\ManagedCommon\ManagedCommon.csproj" />
|
<ProjectReference Include="..\..\..\..\common\ManagedCommon\ManagedCommon.csproj" />
|
||||||
|
<ProjectReference Include="..\..\..\..\common\Common.Search\Common.Search.csproj" />
|
||||||
|
<ProjectReference Include="..\..\..\..\common\Common.UI\Common.UI.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<PropertyGroup Condition="'$(Configuration)' == 'Release'">
|
<PropertyGroup Condition="'$(Configuration)' == 'Release'">
|
||||||
|
|||||||
@@ -44,8 +44,8 @@
|
|||||||
<Extensions>
|
<Extensions>
|
||||||
<com:Extension Category="windows.comServer">
|
<com:Extension Category="windows.comServer">
|
||||||
<com:ComServer>
|
<com:ComServer>
|
||||||
<com:ExeServer Executable="$targetnametoken$.exe" Arguments="-RegisterProcessAsComServer" DisplayName="PowerToys Command Palette Extension">
|
<com:ExeServer Executable="Microsoft.CmdPal.Ext.PowerToys.exe" Arguments="-RegisterProcessAsComServer" DisplayName="PowerToys Command Palette Extension">
|
||||||
<com:Class Id="3D0F0E1F-6F0C-4D5C-91C0-5C4A4B1A5D55" DisplayName="PowerToys Command Palette Extension" />
|
<com:Class Id="7EC02C7D-8F98-4A2E-9F23-B58C2C2F2B17" DisplayName="PowerToys Command Palette Extension" />
|
||||||
</com:ExeServer>
|
</com:ExeServer>
|
||||||
</com:ComServer>
|
</com:ComServer>
|
||||||
</com:Extension>
|
</com:Extension>
|
||||||
@@ -58,7 +58,7 @@
|
|||||||
<uap3:Properties>
|
<uap3:Properties>
|
||||||
<CmdPalProvider>
|
<CmdPalProvider>
|
||||||
<Activation>
|
<Activation>
|
||||||
<CreateInstance ClassId="3D0F0E1F-6F0C-4D5C-91C0-5C4A4B1A5D55" />
|
<CreateInstance ClassId="7EC02C7D-8F98-4A2E-9F23-B58C2C2F2B17" />
|
||||||
</Activation>
|
</Activation>
|
||||||
<SupportedInterfaces>
|
<SupportedInterfaces>
|
||||||
<Commands/>
|
<Commands/>
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
using Microsoft.CommandPalette.Extensions;
|
using Microsoft.CommandPalette.Extensions;
|
||||||
using Microsoft.CommandPalette.Extensions.Toolkit;
|
using Microsoft.CommandPalette.Extensions.Toolkit;
|
||||||
|
using PowerToysExtension.Commands;
|
||||||
|
|
||||||
namespace PowerToysExtension;
|
namespace PowerToysExtension;
|
||||||
|
|
||||||
@@ -11,15 +12,54 @@ internal sealed partial class PowerToysExtensionPage : ListPage
|
|||||||
{
|
{
|
||||||
public PowerToysExtensionPage()
|
public PowerToysExtensionPage()
|
||||||
{
|
{
|
||||||
Icon = IconHelpers.FromRelativePath("Assets\\StoreLogo.png");
|
Icon = IconHelpers.FromRelativePath("Assets\\PowerToys.png");
|
||||||
Title = "PowerToysExtension";
|
Title = "PowerToys";
|
||||||
Name = "Open";
|
Name = "PowerToys commands";
|
||||||
}
|
}
|
||||||
|
|
||||||
public override IListItem[] GetItems()
|
public override IListItem[] GetItems()
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
new ListItem(new NoOpCommand()) { Title = "TODO: Implement your extension here" }
|
new ListItem(new LaunchModuleCommand("PowerToys", executableName: "PowerToys.exe", displayName: "Open PowerToys"))
|
||||||
|
{
|
||||||
|
Title = "Open PowerToys",
|
||||||
|
Subtitle = "Launch the PowerToys shell",
|
||||||
|
},
|
||||||
|
new ListItem(new OpenPowerToysSettingsCommand("PowerToys", "General"))
|
||||||
|
{
|
||||||
|
Title = "Open PowerToys settings",
|
||||||
|
Subtitle = "Open the main PowerToys settings window",
|
||||||
|
},
|
||||||
|
new ListItem(new OpenPowerToysSettingsCommand("Workspaces", "Workspaces"))
|
||||||
|
{
|
||||||
|
Title = "Open Workspaces settings",
|
||||||
|
Subtitle = "Jump directly to Workspaces settings",
|
||||||
|
},
|
||||||
|
new ListItem(new OpenWorkspaceEditorCommand())
|
||||||
|
{
|
||||||
|
Title = "Open Workspaces editor",
|
||||||
|
Subtitle = "Launch the Workspaces editor",
|
||||||
|
},
|
||||||
|
new ListItem(new StartAwakeCommand("Awake: Keep awake indefinitely", () => "-m indefinite", "Awake set to indefinite"))
|
||||||
|
{
|
||||||
|
Title = "Awake: Keep awake indefinitely",
|
||||||
|
Subtitle = "Run Awake in indefinite mode",
|
||||||
|
},
|
||||||
|
new ListItem(new StartAwakeCommand("Awake: Keep awake for 30 minutes", () => "-m timed -t 30", "Awake set for 30 minutes"))
|
||||||
|
{
|
||||||
|
Title = "Awake: Keep awake for 30 minutes",
|
||||||
|
Subtitle = "Run Awake timed for 30 minutes",
|
||||||
|
},
|
||||||
|
new ListItem(new StartAwakeCommand("Awake: Keep awake for 2 hours", () => "-m timed -t 120", "Awake set for 2 hours"))
|
||||||
|
{
|
||||||
|
Title = "Awake: Keep awake for 2 hours",
|
||||||
|
Subtitle = "Run Awake timed for 2 hours",
|
||||||
|
},
|
||||||
|
new ListItem(new StopAwakeCommand())
|
||||||
|
{
|
||||||
|
Title = "Awake: Turn off",
|
||||||
|
Subtitle = "Switch Awake back to Off",
|
||||||
|
},
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,36 @@
|
|||||||
|
// 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 Microsoft.CommandPalette.Extensions;
|
||||||
|
using Microsoft.CommandPalette.Extensions.Toolkit;
|
||||||
|
using PowerToysExtension.Helper;
|
||||||
|
|
||||||
|
namespace PowerToysExtension.Pages;
|
||||||
|
|
||||||
|
internal sealed partial class PowerToysListPage : DynamicListPage
|
||||||
|
{
|
||||||
|
private readonly CommandItem _empty;
|
||||||
|
|
||||||
|
public PowerToysListPage()
|
||||||
|
{
|
||||||
|
Icon = IconHelpers.FromRelativePath("Assets\\PowerToys.png");
|
||||||
|
Name = Title = "PowerToys";
|
||||||
|
Id = "com.microsoft.cmdpal.powertoys";
|
||||||
|
_empty = new CommandItem()
|
||||||
|
{
|
||||||
|
Icon = IconHelpers.FromRelativePath("Assets\\PowerToys.png"),
|
||||||
|
Title = "No matching module found",
|
||||||
|
Subtitle = SearchText,
|
||||||
|
};
|
||||||
|
EmptyContent = _empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void UpdateSearchText(string oldSearch, string newSearch)
|
||||||
|
{
|
||||||
|
_empty.Subtitle = newSearch;
|
||||||
|
RaiseItemsChanged(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override IListItem[] GetItems() => ModuleItemsHelper.FilteredItems(SearchText);
|
||||||
|
}
|
||||||
@@ -13,25 +13,15 @@ public sealed partial class PowerToysCommandsProvider : CommandProvider
|
|||||||
public PowerToysCommandsProvider()
|
public PowerToysCommandsProvider()
|
||||||
{
|
{
|
||||||
DisplayName = "PowerToys";
|
DisplayName = "PowerToys";
|
||||||
Icon = new IconInfo("\uE82D"); // TODO: Use proper icon
|
Icon = IconHelpers.FromRelativePath("Assets\\PowerToys.png");
|
||||||
Logger.LogInfo("PowerToysCommandsProvider constructed.");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override ICommandItem[] TopLevelCommands()
|
public override ICommandItem[] TopLevelCommands() =>
|
||||||
{
|
[
|
||||||
Logger.LogInfo("PowerToysCommandsProvider.TopLevelCommands invoked.");
|
new CommandItem(new Pages.PowerToysListPage())
|
||||||
return
|
{
|
||||||
[
|
Title = "PowerToys",
|
||||||
new CommandItem(new ListPage()
|
Subtitle = "PowerToys commands and settings",
|
||||||
{
|
}
|
||||||
Name = "PowerToys",
|
];
|
||||||
Title = "PowerToys",
|
|
||||||
Icon = new IconInfo("\uE82D"),
|
|
||||||
})
|
|
||||||
{
|
|
||||||
Title = "PowerToys",
|
|
||||||
Subtitle = "PowerToys commands",
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ using Microsoft.CommandPalette.Extensions;
|
|||||||
|
|
||||||
namespace PowerToysExtension;
|
namespace PowerToysExtension;
|
||||||
|
|
||||||
[Guid("3D0F0E1F-6F0C-4D5C-91C0-5C4A4B1A5D55")]
|
[Guid("7EC02C7D-8F98-4A2E-9F23-B58C2C2F2B17")]
|
||||||
public sealed partial class PowerToysExtension : IExtension, IDisposable
|
public sealed partial class PowerToysExtension : IExtension, IDisposable
|
||||||
{
|
{
|
||||||
private readonly ManualResetEvent _extensionDisposedEvent;
|
private readonly ManualResetEvent _extensionDisposedEvent;
|
||||||
|
|||||||
@@ -13,10 +13,14 @@ public partial class PowerToysExtensionCommandsProvider : CommandProvider
|
|||||||
|
|
||||||
public PowerToysExtensionCommandsProvider()
|
public PowerToysExtensionCommandsProvider()
|
||||||
{
|
{
|
||||||
DisplayName = "PowerToysExtension";
|
DisplayName = "PowerToys";
|
||||||
Icon = IconHelpers.FromRelativePath("Assets\\StoreLogo.png");
|
Icon = IconHelpers.FromRelativePath("Assets\\PowerToys.png");
|
||||||
_commands = [
|
_commands = [
|
||||||
new CommandItem(new PowerToysExtensionPage()) { Title = DisplayName },
|
new CommandItem(new Pages.PowerToysListPage())
|
||||||
|
{
|
||||||
|
Title = "PowerToys",
|
||||||
|
Subtitle = "PowerToys commands and settings",
|
||||||
|
},
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user