Find panes from PowerToys Command Palette on Windows #9

Open
opened 2026-10-13 15:49:29 -05:00 by jeff · 0 comments
Owner

GNOME Shell's search finds harrier's open panes (Activation.zig, org.gnome.Shell.SearchProvider2). Windows has no equivalent in Start: its only third-party search integrations are EEA-only web search providers and cloud files, and the indexer APIs (protocol handlers, IFilters, search connectors) are index-based, not live. For now harrier lists its open panes in its taskbar jump list instead.

The closest real equivalent is a PowerToys Command Palette extension (Win+Alt+Space). Revisit once:

What is known:

  • An extension is a WinRT API served by an out-of-process COM server: IExtension.GetProvider → ICommandProvider, with top-level commands, list pages and fallback commands. https://learn.microsoft.com/en-us/windows/powertoys/command-palette/extensibility-overview
  • IFallbackHandler.UpdateQuery(string) is called as the user types: live results, like GetInitialResultSet. Items carry a title, subtitle and icon; activation calls the item's ICommand.Invoke in the extension's process, like ActivateResult. https://learn.microsoft.com/en-us/windows/powertoys/command-palette/microsoft-commandpalette-extensions/ifallbackhandler
  • Discovery is only through AppExtensionCatalog.Open("com.microsoft.commandpalette") (WinRTExtensionService.cs in microsoft/PowerToys), so harrier needs package identity: an MSIX manifest with windows.comServer and a uap3:AppExtension.
  • zigwin32 does not include the Command Palette's metadata; the interfaces would be written by hand from the SDK's .winmd, as windows/Portal.zig does for toasts. A community Rust SDK exists for reference: https://docs.rs/cmdpal
  • PowerToys' own Microsoft.CmdPal.Ext.WindowsTerminal and Window Walker extensions are prior art.

It would help only those with PowerToys installed and the Command Palette enabled.

GNOME Shell's search finds harrier's open panes (`Activation.zig`, `org.gnome.Shell.SearchProvider2`). Windows has no equivalent in Start: its only third-party search integrations are EEA-only web search providers and cloud files, and the indexer APIs (protocol handlers, IFilters, search connectors) are index-based, not live. For now harrier lists its open panes in its taskbar jump list instead. The closest real equivalent is a **PowerToys Command Palette extension** (Win+Alt+Space). Revisit once: - the extension SDK reaches 1.0 (it is 0.9.x on NuGet as of October 2026: https://www.nuget.org/packages/Microsoft.CommandPalette.Extensions), and - package identity for an unpackaged exe — a sparse "package with external location" — is shown to work for discovery. What is known: - An extension is a WinRT API served by an out-of-process COM server: `IExtension.GetProvider` → `ICommandProvider`, with top-level commands, list pages and fallback commands. https://learn.microsoft.com/en-us/windows/powertoys/command-palette/extensibility-overview - `IFallbackHandler.UpdateQuery(string)` is called as the user types: live results, like `GetInitialResultSet`. Items carry a title, subtitle and icon; activation calls the item's `ICommand.Invoke` in the extension's process, like `ActivateResult`. https://learn.microsoft.com/en-us/windows/powertoys/command-palette/microsoft-commandpalette-extensions/ifallbackhandler - Discovery is only through `AppExtensionCatalog.Open("com.microsoft.commandpalette")` (`WinRTExtensionService.cs` in microsoft/PowerToys), so harrier needs package identity: an MSIX manifest with `windows.comServer` and a `uap3:AppExtension`. - zigwin32 does not include the Command Palette's metadata; the interfaces would be written by hand from the SDK's `.winmd`, as `windows/Portal.zig` does for toasts. A community Rust SDK exists for reference: https://docs.rs/cmdpal - PowerToys' own `Microsoft.CmdPal.Ext.WindowsTerminal` and Window Walker extensions are prior art. It would help only those with PowerToys installed and the Command Palette enabled.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
jeff/harrier#9
No description provided.