PowerToys Run 是 PowerToys 套件中的一个启动器实用程序,它通过简化的键盘驱动界面使用户能够快速搜索和启动应用程序、文件并执行各种操作。本文档涵盖了 PowerToys Run 的架构、组件和功能。有关 PowerToys Run 插件开发的信息,请参阅创建 PowerToys Run 插件。
PowerToys Run 提供了一个快速启动器界面,可通过自定义键盘快捷键(默认:Alt+Space)激活。它通过基于插件的架构处理用户查询,其中每个插件处理特定类型的搜索(应用程序、文件、计算等)并返回与查询匹配的结果。
PowerToys Run 工作流程
来源
PowerToys Run 由几个核心组件构成,这些组件协同工作以提供其功能。
PowerToys Run 类关系
来源
PowerToys Run 构建于几个关键组件之上
| 组件 | 描述 | 关键类 |
|---|---|---|
| UI 层 | 提供用于输入和结果显示的 UI | MainWindow、LauncherControl、ResultList |
| 视图模型层 | 处理 UI 逻辑和数据处理 | MainViewModel、ResultsViewModel、ResultViewModel |
| 插件系统 | 通过插件实现可扩展性 | PluginManager、PluginPair、IPlugin |
| 设置系统 | 管理用户偏好设置和配置 | PowerToysRunSettings、SettingsReader |
| 遥测 | 提供使用指标 | PowerToysTelemetry、LauncherEventLogger |
来源
PowerToys Run 启动时,它会遵循一个结构化的初始化序列
PowerToys Run 初始化序列
来源
在初始化期间,PowerToys Run 执行以下关键步骤
SettingsReader 从磁盘加载设置MainViewModelMainWindow 并将其连接到视图模型PluginManager.InitializePlugins() 初始化插件系统来源
PowerToys Run 使用基于插件的架构,允许通过新功能进行扩展。每个插件负责处理特定类型的查询(文件搜索、应用程序搜索、计算等)。
插件系统架构
来源
在 PowerToys Run 初始化期间加载插件。PluginManager 会扫描插件目录并为找到的每个插件创建一个 PluginPair。 PluginPair 包含插件元数据和插件实现。
- Preinstalled Directory: Internal plugins that come with PowerToys
- Plugins Directory: User-installed plugins
来源
插件加载过程遵循以下步骤
PluginPair 实例来源
PowerToys Run 支持多种插件接口
| 接口 | 描述 |
|---|---|
IPlugin | 所有插件都必须实现的基本插件接口 |
IContextMenu | 允许插件为结果提供上下文菜单项 |
ISettingProvider | 使插件能够提供自定义设置 |
IDelayedExecutionPlugin | 支持需要延迟执行以提高性能的插件 |
IReloadable | 可以重新加载其数据的插件 |
来源
当用户在 PowerToys Run 中键入查询时,系统会处理输入并从插件检索相关结果。
查询处理流程
来源
MainViewModel,它会创建一个查询来源
PowerToys Run 使用双执行方法来保持响应性
此方法由以下设置控制
SearchQueryResultsWithDelay:启用/禁用延迟执行SearchInputDelay:在执行延迟搜索之前等待的毫秒数SearchInputDelayFast:在执行快速搜索之前等待的毫秒数来源
PowerToys Run 使用一个复杂的系统来管理、显示和交互搜索结果。
结果数据结构
来源
ResultsViewModel 负责管理结果集,而 ResultViewModel 则封装单个结果,提供 UI 相关功能,如选择、上下文菜单和视觉格式化。
主要功能包括
来源
结果基于以下几个因素进行排序:
排序算法实现在 ResultsViewModel.Sort() 方法中
来源
PowerToys Run 包含几个提供用户界面的关键 UI 组件。
MainWindow 是主要的 UI 容器,它承载搜索框和结果列表。它是一个无边框的置顶窗口,在按下热键时出现。
主要功能
来源
搜索框是用户输入查询的主要控件,由 LauncherControl 类实现。
主要功能
来源
结果列表显示插件匹配到的结果,由 ResultList 类实现。
主要功能
来源
PowerToys Run 通过 PowerToys 设置界面提供了广泛的配置选项。
设置系统架构
来源
PowerToys Run 支持众多设置,包括:
| 设置类别 | 示例 | 描述 |
|---|---|---|
| 激活函数 | 热键、UseCentralizedKeyboardHook | 控制 PowerToys Run 的激活方式 |
| 外观 | 主题、TitleFontSize、MaxResultsToShow | 控制视觉外观 |
| 行为 | ClearInputOnLaunch、HideWhenDeactivated | 控制操作行为 |
| 性能 | SearchQueryResultsWithDelay、SearchInputDelay | 控制搜索性能/响应能力 |
| 插件 | 单个插件设置 | 插件特定配置 |
来源
每个插件都可以通过 ISettingProvider 接口提供自己的设置。这些设置存储在同一个设置文件中,并在插件更新时进行更新。
插件设置包括:
来源
PowerToys Run 支持多种主题,以匹配 Windows 主题或用户偏好。
主题系统
来源
ThemeManager 类负责根据以下条件应用相应的主题:
来源
PowerToys Run 通过以下方式为 Windows 提供强大而灵活的启动器:
该系统的模块化设计允许持续的扩展和增强,使其成为 PowerToys 套件中的强大工具。