LightUp 是一个面向 Windows 的桌面启动器,基于 .NET 10 和 Avalonia 构建。它把可分类的磁贴工作区与全局唤出的搜索栏组合在一起:常用程序、文件夹、快捷方式和链接可以放入工作区,也可以通过搜索快速启动。
当前处于积极开发阶段。核心启动器体验已经可用,完整搜索、插件平台和产品化能力仍在持续完善。
- 独立、可拖动的启动器窗口,启动时默认显示,也可从托盘或全局热键唤出。
- 分类侧栏或顶部导航;“全部”为虚拟聚合视图,“未分类”为受保护的真实归属分类。
- 新建、重命名、排序和删除分类。删除时可选择迁移入口到目标分类,或同时删除入口;操作需要确认并支持撤销。
- 通过文件选择器或拖放添加文件、文件夹、程序、
.lnk、.url和 HTTP(S) 链接。 - 磁贴支持拖动排序、跨分类拖动、键盘排序、右键操作、名称/备注编辑、自定义图标,以及最近一次移除撤销。
- 读取 Windows Shell 图标,并在目标不可用时显示状态、提供直接重新选择目标和移除操作。
- 紧凑与舒适两种磁贴密度;窗口位置、尺寸和置顶状态会恢复。
- 全局搜索窗口,支持键盘导航、打开、右键上下文操作与窗口置顶。
- 简约模式只搜索磁贴入口;空查询按最近打开时间和使用次数展示常用入口。
- 完整模式在磁贴之外搜索常见快捷方式、PATH 可执行文件、内建操作和已启用插件。
- 内建操作包括打开磁贴启动器、打开设置,以及调用已安装 Everything 的
es:搜索协议。 - 搜索结果会保留磁贴自定义图标、使用记录和备注,并对失败启动给出可行动提示。
- 两套独立全局热键:搜索默认
Alt + Space,磁贴启动器默认Alt + Shift + Space。 - 托盘图标可打开搜索、磁贴启动器和设置,也可退出应用。
- 可选跟随系统、浅色或深色主题;提供预设和自定义强调色。
- 可配置搜索结果上限、磁贴搜索范围、分类导航位置、磁贴密度、热键和插件启用/权重。
- 对损坏或旧版配置提供默认值回退和兼容迁移;保存使用临时文件替换,避免半写入配置。
- Windows 10/11 x64
- .NET 10 SDK:从源码构建时需要
- Everything:可选;仅用于完整模式的 Everything 内建操作,不会由 LightUp 自动安装或启动
git clone https://github.com/bbdd2729/LightUp.git
Set-Location LightUp
dotnet restore LightUp.slnx
dotnet run --project LightUpUI/LightUpUI.csproj启动后先看到磁贴工作区。可以直接把文件、文件夹或快捷方式拖进去,或通过右上角的添加按钮选择入口。
dotnet build LightUp.slnx -c Release
dotnet test LightUpTest/LightUpTest.csproj -c ReleaseGitHub Actions 会在每次推送时构建、测试并上传自包含 Windows x64 包。手动触发 Release Windows Package 工作流时,输入语义化版本号即可构建发布包、创建 v<version> 标签并生成 GitHub Release。
- 在启动器中创建分类,或直接将入口拖入当前分类。
- 单击磁贴选中,双击或按
Enter打开。 - 使用
F2编辑选中磁贴名称;在底部编辑备注和移动目标。 - 将磁贴拖到其他分类移动,拖到另一磁贴的上半或下半调整顺序。
- 右键磁贴可打开所在位置、重新选择失效目标、设置/清除自定义图标或移除入口。
删除分类前会显示确认条。选择“迁移入口”时可指定目标分类;选择“删除入口”时会删除其中的磁贴记录。两种操作都可以从底部的撤销入口立即恢复。
| 模式 | 搜索范围 | 适用场景 |
|---|---|---|
| 简约模式 | 已添加的磁贴 | 只希望启动个人工作区中的常用入口 |
| 完整模式 | 磁贴、快捷方式、PATH 程序、内建操作和插件 | 希望像桌面搜索器一样查找更多本机入口 |
完整模式中的 Everything 项会通过 Windows es: 协议委托给本机安装的 Everything;它尚不是直接的 Everything IPC 文件结果提供器。
所有用户数据仅保存在本机:
%LOCALAPPDATA%\LightUp\launcher.json:分类、磁贴、排序、使用记录、备注和自定义图标路径。%LOCALAPPDATA%\LightUp\search-launcher.json:搜索模式、热键、主题、窗口状态、布局和插件设置。
不要将这些文件中的个人路径和快捷方式内容提交到仓库。删除这两个文件可恢复默认状态,但会清空自己的启动器数据。
当前提供最小的进程内搜索插件入口。将插件 DLL 放到发布目录下的 Plugins 文件夹,插件实现 ISearchProviderPlugin 并返回 ISearchProvider 即可参与完整模式搜索。插件设置可控制启用状态和权重。
插件加载目前仍是基础实现:没有 manifest、权限模型、可卸载加载上下文或插件安装界面。不要加载不受信任的 DLL。
LightUpUI:Avalonia UI、ViewModel、服务、存储和 Windows 适配层。LightUpTest:xUnit 测试,覆盖搜索、设置、热键、窗口行为、磁贴状态、拖放、图标与目标健康度。.github/workflows:Windows 构建与手动发布自动化。
代码采用 MVVM:ViewModel 负责状态与命令,服务负责持久化、搜索、热键、窗口宿主和平台调用,策略类负责可单测的规则。
- 持久化、配置迁移、窗口状态、热键与托盘基础能力。
- 磁贴分类、分类安全删除与撤销、拖放移动、目标修复与启动失败反馈。
- 为分类删除、窗口生命周期和托盘路径补充可重复的 Windows UI 冒烟验证。
- 简约/完整搜索模式、磁贴排序、主题设置与基础插件入口。
- 完善拖入预览、非法项目明细和原生拖放验证。
- 引入异步、可缓存且可失效的磁贴图标提供器,并扩展自定义图标流程。
- 重构统一搜索结果/操作契约。
- 实现真实的 Everything 文件提供器、查询前缀、计算/URL/系统动作和搜索历史。
- 增加单实例、开机启动、诊断日志和明确的发布/升级策略。
- 建立带 manifest、诊断、隔离边界和管理界面的稳定插件平台。
欢迎问题报告和改进建议。提交更改时请保持 MVVM 边界清晰,新增行为应有相应测试,并使用:
dotnet build LightUp.slnx -c Release
dotnet test LightUpTest/LightUpTest.csproj -c Release