d53828c150
### 新增功能 - **Linux 官方支持**:新增 Hua.Todo.Avalonia 项目,正式适配 Linux 平台,同时支持 Windows 和 macOS - **Avalonia 桌面交互**:增加托盘菜单(显示/退出)、关闭隐藏到托盘、Windows 全局热键唤起主窗口、热键配置本地持久化 - **SQLite DateTime 兼容修复**:新增 LenientUtcDateTimeStringConverter,解决历史遗留的 DateTime 脏数据解析问题 - **用户文档完善**:新增 docs/manual/新手指南.md 和 docs/manual/用户指南.md - **部署文档**:新增 docs/manual/部署文档.md,详细说明多平台发布流程 ### 优化与修复 - **发布脚本整理**:拆分/对齐各平台发布入口,新增 publish.ps1 作为统一入口 - **Windows WebView2 优化**:数据目录调整到 %LocalAppData%\Hua.Todo\WebView2,修复 Runtime 误判问题 - **MAUI 多平台构建**:在 Windows 开发机上默认仅构建 Android + Windows 目标 - **SPA 路由回落**:修复 Release 模式下 /swagger 路径的 404 问题 - **Swagger 输出**:补齐 Dynamic API 端点,避免接口缺失 ### 文档更新 - **版本记录**:更新 v1.2.0 开发进度和功能列表 - **技术设计文档**:添加 Avalonia 项目架构和模块设计 - **项目结构**:更新 README.md 中的项目结构说明 ### 其他变更 - 新增 Directory.Build.props 和更新 Directory.Build.targets - 调整 src/Hua.Todo.Avalonia 项目配置和资源文件 - 更新 src/Hua.Todo.Web 前端资源文件 - 修复 src/Hua.Todo.Maui 相关配置和打包脚本
Hua.Todo MAUI 跨平台快捷键功能
功能概述
本项目实现了基于 MAUI + WebView 架构的跨平台代办管理应用,支持全局快捷键快速唤醒功能。
支持的平台
- Windows: 完整支持,使用 Windows API 实现全局快捷键
- macOS: 完整支持,使用 AppKit API 实现全局快捷键
- Android: 基础支持,通过通知快捷方式实现
- iOS: 基础支持,通过通知快捷方式实现
核心功能
1. 全局快捷键
- Windows 默认快捷键:
Alt + X - macOS 默认快捷键:
Cmd + Option + X - 移动端: 通过通知快捷方式实现
2. 快捷键设置
- 用户可以自定义快捷键组合
- 支持多种修饰键组合(Alt、Control、Shift 等)
- 支持禁用/启用快捷键功能
- 设置持久化保存
3. WebView 集成
- 主界面嵌入 WebView,显示 Hua.Todo Web 应用
- 快捷键按下时自动激活窗口并聚焦 WebView
- 支持与本地 API 服务通信
项目结构
Hua.Todo.Maui/
├── Models/
│ └── HotKeyConfig.cs # 快捷键配置模型
├── Services/
│ ├── IGlobalHotKeyService.cs # 快捷键服务接口
│ ├── HotKeySettingsService.cs # 设置存储服务
│ ├── GlobalHotKeyServiceFactory.cs # 平台工厂
│ └── Platforms/
│ ├── WindowsGlobalHotKeyService.cs # Windows 实现
│ ├── MacGlobalHotKeyService.cs # macOS 实现
│ └── MobileGlobalHotKeyService.cs # 移动端实现
├── Views/
│ ├── MainPage.xaml # 主页面(WebView)
│ ├── MainPage.xaml.cs
│ ├── HotKeySettingsPage.xaml # 快捷键设置页面
│ └── HotKeySettingsPage.xaml.cs
├── App.xaml.cs # 应用入口
└── MauiProgram.cs # MAUI 配置
使用方法
1. 运行项目
Windows
cd Hua.Todo.Maui
dotnet build -f net10.0-windows10.0.19041.0
dotnet run -f net10.0-windows10.0.19041.0
Windows Debug 编译下,MAUI 内嵌 WebServer 会提供接口文档:
- Swagger UI:
{HostUrl}/swagger - OpenAPI JSON:
{HostUrl}/swagger/v1/swagger.json其中{HostUrl}来自appsettings.json: WebServer.HostUrl(默认http://localhost:5057)。 按默认配置,对应地址为: - Swagger UI:
http://localhost:5057/swagger - OpenAPI JSON:
http://localhost:5057/swagger/v1/swagger.json
Windows(三件套热更新:MAUI + Vite + Host)
该模式用于开发阶段获得最佳热更新体验:
Hua.Todo.Host:提供 API(http://localhost:5173)Hua.Todo.Web:Vite dev server(http://localhost:5174),并将/api代理到 5173Hua.Todo.Maui:WebView 加载 5174 在该模式下,Swagger UI 地址为:http://localhost:5173/swagger(仅ASPNETCORE_ENVIRONMENT=Development时启用)。
.\start-dev.ps1
然后在 Visual Studio 中启动 Hua.Todo.Maui(F5)。
macOS
cd Hua.Todo.Maui
dotnet build -f net10.0-maccatalyst
dotnet run -f net10.0-maccatalyst
Android
cd Hua.Todo.Maui
dotnet build -f net10.0-android
dotnet run -f net10.0-android
2. 使用快捷键
- 启动应用后,默认快捷键为
Alt + X(Windows)或Cmd + Option + X(macOS) - 按下快捷键,应用窗口会自动激活并聚焦
- 在 WebView 中可以直接输入任务内容
3. 自定义快捷键
- 点击主界面右上角的"设置"按钮
- 在设置页面中:
- 切换"启用快捷键"开关
- 选择想要的修饰键组合
- 选择主键
- 点击"保存设置"按钮
- 设置会立即生效
4. 恢复默认设置
在设置页面点击"恢复默认"按钮,快捷键将恢复为默认配置。
技术实现细节
Windows 平台
- 使用
RegisterHotKey和UnregisterHotKeyWindows API - 支持全局快捷键监听
- 通过
WindowNative获取窗口句柄
macOS 平台
- 使用
NSEvent.AddGlobalMonitorForEventsMatchingMask监听全局事件 - 支持 Command、Option、Control、Shift 等修饰键
- 需要配置
com.apple.security.automation.apple-events权限
移动端
- Android: 使用
ShortcutManagerCompat创建通知快捷方式 - iOS: 使用
UIApplicationShortcutItem实现快捷操作
数据持久化
- 使用
Microsoft.Maui.Storage.Preferences存储配置 - JSON 序列化保存快捷键配置
- 支持重置为默认配置
依赖项
NuGet 包
Microsoft.Maui.ControlsMicrosoft.Extensions.DependencyInjectionMicrosoft.Extensions.Logging.Debug
平台特定
- Windows:
Microsoft.Windows.SDK.BuildTools - macOS:
Microsoft.Maui.Controls.Compatibility
注意事项
- macOS 权限: 首次运行时需要在系统设置中授予辅助功能权限
- Windows UAC: 某些情况下可能需要管理员权限
- 移动端限制: 移动端不支持真正的全局快捷键,使用通知快捷方式替代
- WebView(开发): 三件套模式下需要确保
Hua.Todo.Host在http://localhost:5173运行,同时Hua.Todo.Web在http://localhost:5174运行 - Windows WebView2 数据目录: WebView2 的缓存/存储写入
%LocalAppData%\Hua.Todo\WebView2,避免在安装目录生成*.WebView2文件夹 - Windows WebView2 Runtime: 依赖系统安装的 Microsoft Edge WebView2 Runtime;若缺失应用会提示下载安装
后续计划
- 添加 Linux 平台支持
- 实现云同步功能
- 添加更多快捷键功能
- 优化性能和响应速度
- 添加快捷键冲突检测