{"id":50760023,"url":"https://github.com/flyu518/launch-box","last_synced_at":"2026-06-11T09:01:29.722Z","repository":{"id":363178558,"uuid":"1262209992","full_name":"flyu518/launch-box","owner":"flyu518","description":"macOS 启动台替代工具 / Launchpad replacement built with SwiftUI. 支持搜索、分类、文件夹、收藏、隐藏应用和菜单栏快捷启动。","archived":false,"fork":false,"pushed_at":"2026-06-07T19:32:15.000Z","size":284,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-07T20:15:32.712Z","etag":null,"topics":["app-launcher","launcher","launchpad","launchpad-replacement","macos","macos-app","menu-bar","menubar-app","productivity","swift","swift-package","swiftui"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/flyu518.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-07T17:57:44.000Z","updated_at":"2026-06-07T19:32:18.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/flyu518/launch-box","commit_stats":null,"previous_names":["flyu518/launch-box"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/flyu518/launch-box","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flyu518%2Flaunch-box","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flyu518%2Flaunch-box/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flyu518%2Flaunch-box/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flyu518%2Flaunch-box/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flyu518","download_url":"https://codeload.github.com/flyu518/launch-box/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flyu518%2Flaunch-box/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34190585,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-11T02:00:06.485Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["app-launcher","launcher","launchpad","launchpad-replacement","macos","macos-app","menu-bar","menubar-app","productivity","swift","swift-package","swiftui"],"created_at":"2026-06-11T09:01:28.361Z","updated_at":"2026-06-11T09:01:29.634Z","avatar_url":"https://github.com/flyu518.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 启动台（launch-box）\n\n`launch-box` 是一个 macOS 启动台替代工具，用户可见名称为 **启动台**。也可以理解为一个用 SwiftUI 构建的 Launchpad replacement / app launcher / menu bar launcher。\n\n项目目标是保留旧版 macOS 启动台的直接、快速和可拖拽整理体验，同时补上更实用的搜索、收藏、分类、文件夹、隐藏应用、导入导出和菜单栏入口。\n\n\u003e 当前项目仍处于本地可用阶段。公开发布前建议补齐正式签名、公证和版本发布流程。\n\n## 预览\n\n![启动台截图](docs/images/screenshot.jpg)\n\n## 功能\n\n- 菜单栏应用，左键打开启动台，右键打开菜单和设置\n- 全屏半透明 SwiftUI 启动台界面\n- 默认全局快捷键：`Option + Space`\n- 扫描 `/Applications`、`/System/Applications` 和 `~/Applications`\n- 支持应用名称、包标识符、路径、中文拼音和常见别名搜索\n- 内置分区：全部、收藏、最近、未分类、隐藏\n- 自定义分类，支持重命名、删除和手动排序\n- 分类内支持文件夹，支持拖拽创建、拖入、拖出和自动整理\n- 支持应用排序、收藏排序、分类排序\n- 支持隐藏应用，隐藏后只在“隐藏”分区显示\n- 支持配置导入、导出和导入前备份\n- JSON 持久化配置，便于备份和排查问题\n\n## 系统要求\n\n- macOS 14.0 或更高版本\n- Xcode 15 或更高版本，或匹配的 Swift 5.9+ 工具链\n- Swift 包管理器\n\n本项目使用 Swift 包管理器组织，没有依赖第三方包。\n\n## 快速开始\n\n```bash\ngit clone https://github.com/flyu518/launch-box.git\ncd launch-box\nswift test\n./script/build_and_run.sh --verify\n```\n\n构建脚本会生成并启动：\n\n```text\ndist/启动台.app\n```\n\n该开发包使用本地临时签名，只适合本机开发和测试。面向用户分发时，应使用 Apple Developer ID 签名并完成公证。\n\n## 常用命令\n\n运行测试：\n\n```bash\nswift test\n```\n\n只运行核心测试：\n\n```bash\nswift test --filter LaunchBoxCoreTests\n```\n\n编译 Swift 包可执行文件：\n\n```bash\nswift build\n```\n\n构建 `.app` 并启动：\n\n```bash\n./script/build_and_run.sh\n```\n\n构建、启动并校验进程：\n\n```bash\n./script/build_and_run.sh --verify\n```\n\n启动并查看应用日志：\n\n```bash\n./script/build_and_run.sh --logs\n```\n\n启动并查看遥测日志：\n\n```bash\n./script/build_and_run.sh --telemetry\n```\n\n使用 LLDB 调试器启动：\n\n```bash\n./script/build_and_run.sh --debug\n```\n\n## 项目结构\n\n```text\nPackage.swift\nSources/\n  LaunchBox/              macOS 应用入口、SwiftUI 界面、菜单栏、快捷键、扫描和启动逻辑\n  LaunchBoxCore/          可测试的核心模型、搜索、持久化、分类/文件夹整理逻辑\nTests/\n  LaunchBoxCoreTests/     核心逻辑测试\nscript/\n  build_and_run.sh        构建 .app、生成图标、签名、启动、日志和调试入口\n  generate_app_icon.swift 生成开发用 AppIcon.icns\ndocs/\n  superpowers/            中文设计和实现过程文档\n```\n\n## 配置和数据\n\n应用配置默认保存到：\n\n```text\n~/Library/Application Support/launch-box/LaunchLibrary.json\n```\n\n配置中包含：\n\n- 应用排序\n- 收藏列表\n- 最近打开记录\n- 分类和文件夹结构\n- 隐藏应用列表\n- 快捷键设置\n\n设置页支持导入和导出配置。导入前会尝试备份当前配置，备份文件也放在同一目录。\n\n## 权限和隐私\n\n`启动台` 只扫描本机应用目录并在本机保存配置，不需要网络服务。\n\n可能触发的系统提示：\n\n- 首次打开或控制其他应用时，macOS 可能弹出安全确认\n- 开启“登录时启动”时，会使用系统登录项接口注册应用\n- 使用“在 Finder 中显示”会调用 Finder 打开应用所在位置\n\n如果应用无法启动、无法打开其他应用，先检查 macOS 的“隐私与安全性”提示和系统设置。\n\n## 开发说明\n\n核心业务逻辑应优先放在 `Sources/LaunchBoxCore`，并配套测试。SwiftUI 和 AppKit 相关的窗口、菜单栏、快捷键和界面逻辑放在 `Sources/LaunchBox`。\n\n提交前建议至少运行：\n\n```bash\nswift test\n./script/build_and_run.sh --verify\n```\n\n如果只改了 UI，也建议运行 `--verify`，避免本地 app bundle 没有刷新导致误判。\n\n## 故障排查\n\n如果 `swift test` 或 `swift build` 在包清单阶段失败，通常是命令行工具或 Xcode 工具链不匹配。建议安装完整 Xcode，并确认：\n\n```bash\nxcode-select -p\nswift --version\n```\n\n如果 `./script/build_and_run.sh --verify` 构建成功但校验失败，先确认系统是否允许查询进程列表。脚本会优先使用 `pgrep`，不可用时会退回到 macOS 系统事件查询。\n\n如果配置损坏，应用会把损坏文件移动为类似下面的备份文件，并使用空配置启动：\n\n```text\nLaunchLibrary.json.corrupt-\u003ctimestamp\u003e\n```\n\n## 贡献\n\n欢迎通过议题或拉取请求参与改进。建议拉取请求包含：\n\n- 清晰的问题描述或功能说明\n- 对应的测试或手动验证步骤\n- 影响用户数据、权限或启动流程时的兼容说明\n\n请尽量保持改动聚焦，避免把 UI 调整、数据迁移和无关重构混在同一个 PR 中。\n\n## 发布前清单\n\n公开发布 GitHub 仓库或版本前，建议补齐：\n\n- `CHANGELOG.md`\n- 正式包标识符\n- Apple Developer ID 签名和公证\n- 版本发布构建脚本\n- 截图或录屏\n\n## 许可证\n\n本项目使用 MIT 许可证。详见 [LICENSE](LICENSE)。\n\nMIT 许可证允许他人使用、复制、修改、合并、发布、分发和再授权本项目代码，但需要保留原始版权声明和许可证文本。软件按“原样”提供，不提供担保。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflyu518%2Flaunch-box","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflyu518%2Flaunch-box","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflyu518%2Flaunch-box/lists"}