# Sprout Launcher · 萌芽桌面启动器

> 一个清新风格的 Windows 应用启动器，基于 **Tauri 2 + React 18 + TypeScript** 构建。

把常用的程序、脚本、文件夹收纳到一个漂亮的网格面板里，点击即启动，常驻系统托盘随用随开。

## ✨ 功能特性

- 🚀 **一键启动** — 支持 `.exe` / `.bat` / `.cmd` / `.ps1` / `.vbs` 及文件夹，点击图标即运行
- 🖼️ **自动提取图标** — 通过 .NET `System.Drawing` 自动抓取程序图标并缓存为 PNG
- 🔗 **快捷方式管理** — 自动在数据目录生成 `.lnk`，可在资源管理器中定位目标
- 🖱️ **右键上下文菜单** — 打开、以管理员身份运行、在资源管理器中显示、编辑、移除
- 📁 **分类管理** — 自定义分类整理应用，默认分类不可删除
- 🎨 **清新界面** — 淡绿渐变背景 + 毛玻璃效果，自定义无边框标题栏
- 🔔 **系统托盘** — 关闭窗口隐藏到托盘，左键托盘唤出主窗口
- 🔄 **开机自启** — 一键开启 / 关闭随系统启动
- 💾 **配置导入导出** — 一键备份 / 迁移所有应用与分类
- 🔂 **单实例运行** — 重复启动时聚焦已有窗口

## 📦 技术栈

| 层级 | 技术 |
|------|------|
| 桌面框架 | [Tauri 2](https://v2.tauri.app/) |
| 前端 | React 18 + TypeScript 5 |
| 构建工具 | Vite 5 |
| 后端 | Rust（图标提取 / 快捷方式 / 托盘 / 进程启动） |
| Tauri 插件 | `dialog`、`autostart`、`single-instance`、`log` |

## 🚀 快速开始

### 环境要求

- [Node.js](https://nodejs.org/) ≥ 18
- [Rust](https://www.rust-lang.org/tools/install) 工具链
-（Windows）[Visual Studio Build Tools](https://visualstudio.microsoft.com/downloads/)

### 安装依赖

```bash
npm install
```

### 开发运行

```bash
npm run tauri dev
```

### 构建安装包

```bash
npm run tauri build
```

产物位于 `src-tauri/target/release/bundle/nsis/`，生成简体中文 NSIS 安装包（当前用户安装模式）。

## 🎯 使用方法

### 添加应用

1. 点击「➕ 添加应用」
2. 浏览选择 `.exe` / 脚本 / 文件夹（支持一次多选）
3. 系统自动提取图标与文件名
4. 可选：自定义名称、选择分类、填写描述
5. 确认添加

### 管理应用

- **启动**：单击应用卡片
- **右键菜单**：打开 / 以管理员身份运行 / 在资源管理器中显示快捷方式或目标 / 编辑 / 移除
- **编辑、删除**：鼠标悬停卡片显示操作按钮

### 分类与配置

- 「📁 管理分类」中新增 / 删除分类（默认分类不可删除）
- 设置中可导入 / 导出配置 JSON，以及开关开机自启

## 📝 数据存储

| 内容 | 位置 |
|------|------|
| 应用与分类配置 | `%APPDATA%\com.smyhub.sprout-launcher\launcher-config.json` |
| 快捷方式缓存 | `%APPDATA%\com.smyhub.sprout-launcher\data\shortcuts\` |
| 图标缓存 | `%APPDATA%\com.smyhub.sprout-launcher\data\icons\` |

## 🗂️ 项目结构

```text
SproutLauncher/
├── src/                        # React 前端
│   ├── components/
│   │   ├── AppCard.tsx         # 应用卡片
│   │   ├── AddAppDialog.tsx    # 添加应用对话框
│   │   ├── CategoryManager.tsx # 分类管理
│   │   └── GridWithFill.tsx    # 自适应网格布局
│   ├── types.ts                # 类型定义
│   ├── App.tsx                 # 主应用
│   └── main.tsx                # 入口
├── src-tauri/
│   ├── src/lib.rs              # Rust 后端（命令 / 托盘 / 图标 / 快捷方式）
│   ├── icons/                 # 应用图标
│   ├── Cargo.toml
│   └── tauri.conf.json
├── public/                     # 静态资源（含托盘 logo）
├── package.json
└── vite.config.ts
```

## 📄 许可证

MIT
