# desktop_widget **Repository Path**: wanquan9527/desktop_widget ## Basic Information - **Project Name**: desktop_widget - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-05 - **Last Updated**: 2026-05-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 桌面小组件 Desktop Widget > 轻量级备忘录工具 | 桌面版(Python + PySide6) + 安卓版(Kotlin) | 局域网同步 | Linux CLI(规划中) --- ## 项目概述 ### 简介 桌面小组件是一个跨平台的备忘录和闹钟管理系统: - **桌面版**:基于 Python PySide6 (Qt 6) 的桌面应用,支持 Windows 开机启动、桌面挂件模式、脚本自动化、键盘快捷键、系统托盘、7套主题+自定义主题 - **安卓版**:基于 Kotlin + Jetpack Compose 的原生安卓应用(v4.0 已完成基础功能),包含 Room 数据库、局域网同步、扫码连接、本地通知 - **Linux CLI 版**:命令行界面 + 本地 Web 管理(规划中) - **局域网同步**:两设备间通过机器码连接码一键同步,自动去重 ### 设计原则 - **轻量级**:桌面版仅依赖 PySide6,启动快、占用小 - **本地优先**:所有数据存储在本地,无需云服务 - **安全第一**:同步后自动销毁服务,数据加密可选 - **模块化**:清晰的分层架构,便于扩展和维护 --- ## 功能特性 ### 核心功能 | 功能 | 桌面版 | 安卓版 | |------|--------|--------| | 备忘录增删改查 | ✅ | ✅ | | 完成状态标记(双击/右键) | ✅ | ✅ | | 优先级管理(高🔴/中🟡/低🟢) | ✅ | ✅ | | 标签分类(多标签支持) | ✅ | ✅ | | 备忘录置顶📌 | ✅ | — | | 重复内容检测 | ✅ | — | | 回收站(删除可恢复) | ✅ | — | | 搜索与过滤 | ✅ | ✅ | | 按优先级/时间排序 | ✅ | ✅ | ### 闹钟与提醒 | 功能 | 桌面版 | 安卓版 | |------|--------|--------| | 闹钟管理(单次/每天/工作日/周末) | ✅ | ✅ | | 提醒弹窗(推迟1/5/10/30分钟) | ✅ | — | | 提醒声音 | ✅ | — | | 本地通知 | — | ✅ | ### 界面与展示 | 功能 | 桌面版 | 安卓版 | |------|--------|--------| | 日历视图(月历/日期标记/快捷添加) | ✅ | 规划中 | | 数据统计(概览/趋势图/饼图) | ✅ | 规划中 | | 桌面挂件模式(置顶/半透明/可拖动) | ✅ | — | | 主题皮肤(浅色/深色/海洋蓝/清新绿) | ✅ | — | | Material 3 动态配色 | — | ✅ | | 报表生成(周报/月报导出) | ✅ | — | ### 数据管理 | 功能 | 桌面版 | 安卓版 | |------|--------|--------| | JSON 导出/导入 | ✅ | ✅ | | CSV 导出/导入 | ✅ | — | | 数据加密(密码保护) | ✅ | — | | 旧数据格式自动迁移 | ✅ | ✅ | ### 局域网同步 | 功能 | 说明 | |------|------| | 连接码机制 | base64 编码携带 IP+端口+验证码,一键连接 | | 拉取/推送/双向同步 | 三种同步模式可选 | | 同步范围选择 | 全部/仅未完成/按标签/按时间 | | 自动去重 | text+created_at 为主键,完成状态优先 | | 服务自动销毁 | 同步完成3秒后/5分钟超时自动关闭 | | 扫码连接 | 桌面版纯Python QR码 / 安卓版 CameraX+ML Kit | ### 推送通知 (v2.5) 企业微信 / 钉钉 / 飞书 / 邮件 / Bark / Server酱 / PushPlus / 通用Webhook 支持消息模板、网络数据源、多渠道同时推送、频率限制、推送日志。 ### 脚本任务 (v3.0) | 功能 | 说明 | |------|------| | 脚本任务管理器 | 添加/编辑/删除/启用/禁用脚本任务 | | 脚本编辑器 | 带行号+语法高亮的代码编辑框,支持即时运行 | | 定时调度 | 每日/每周/间隔/单次 四种调度模式 | | 内置API | 数据访问、网络请求、推送通知、文件操作、共享数据 | | 执行日志 | 完整的执行记录(状态/耗时/输出/错误) | | 错误处理 | 异常捕获、超时控制、自动重试、失败通知 | | 权限控制 | 网络/文件/推送/数据访问 独立权限配置 | | 脚本模板库 | 预置5种模板:天气播报/数据汇总/定时提醒/网页监控/空白模板 | | 脚本间数据传递 | 通过共享数据字典实现脚本间通信 | | 脚本导入导出 | JSON格式分享脚本给其他用户 | | 数据看板 | 可配置的仪表盘,展示统计数据和脚本输出(支持5种数据源) | ### 键盘快捷键 (v3.x) | 快捷键 | 功能 | |--------|------| | Ctrl+N | 聚焦输入框,快速添加备忘录 | | Ctrl+F | 聚焦搜索框 | | Ctrl+E | 编辑选中的备忘录 | | Ctrl+D | 完成/取消完成选中的备忘录 | | Delete | 删除选中的备忘录(移入回收站) | | Ctrl+Z | 撤销上一次删除 | | Ctrl+T | 切换浅色/深色主题 | | Ctrl+1~8 | 切换到对应标签页 | | Ctrl++/- | 放大/缩小字体 | | Ctrl+0 | 重置字体大小 | --- ## 系统架构 ### 桌面版模块结构 ``` desktop_widget/ ├── main.py # PySide6 入口 (QApplication + 密码验证) ├── core/ # 核心业务层 │ ├── data_manager.py # 数据管理(CRUD/统计/导入导出/加密/回收站) │ ├── theme_manager.py # 主题管理(QSS样式表/切换/自定义主题) │ ├── alarm_manager.py # 闹钟管理(统一时间处理器:闹钟+定时推送+脚本调度) │ ├── sync_server.py # 同步服务器(HTTP REST/机器码/自动销毁) │ ├── push_manager.py # 推送管理(企业微信/钉钉/飞书/邮件/Bark等) │ ├── template_engine.py # 模板引擎(变量替换/网络数据源) │ ├── schedule_manager.py # 定时推送执行器(被AlarmManager驱动) │ ├── script_manager.py # 脚本任务管理器(CRUD/调度/执行/日志/重试) │ ├── script_api.py # 脚本API(受限执行环境+内置接口) │ └── qrcode_lib/ # QR码生成库(纯Python零依赖) ├── ui/ # 用户界面层 (PySide6) │ ├── main_window.py # 主窗口(QMainWindow + QTabWidget + QSystemTrayIcon) │ ├── tabs/ # 标签页组件 │ │ ├── memo_tab.py # 备忘录(QListWidget/搜索/过滤/优先级/多标签/置顶/回收站) │ │ ├── widget_tab.py # 桌面挂件(QWidget无边框/置顶/拖动/透明度调节) │ │ ├── calendar_tab.py # 日历(QPainter自绘月历/日期标记/快捷添加) │ │ ├── script_tab.py # 脚本管理(QSyntaxHighlighter/行号/模板库/导入导出) │ │ ├── dashboard_tab.py # 数据看板(QGridLayout卡片/6种数据源) │ │ ├── stats_tab.py # 统计(QPainter柱状图+饼图/报表导出) │ │ ├── sync_tab.py # 同步(连接码/服务控制/同步模式/日志) │ │ └── settings_tab.py # 设置(主题/标签颜色/数据管理/加密/回收站/自动备份) │ └── components/ # 共用组件 │ └── alarm_popup.py # 闹钟弹窗(QDialog) ├── config/ │ └── themes.json # 主题配置文件(7套内置+自定义) ├── scripts_data/ # 脚本文件操作的安全沙箱目录 └── docs/ # 设计文档 ``` ### 安卓版模块结构 ``` android_app/ ├── build.gradle.kts # 项目级构建配置 ├── settings.gradle.kts └── app/src/main/ ├── AndroidManifest.xml # 应用清单(权限/组件) ├── java/com/desktopwidget/app/ │ ├── DesktopWidgetApp.kt # Application(数据库/仓库/通知渠道) │ ├── MainActivity.kt # 主Activity(Compose导航/所有业务逻辑) │ ├── data/ │ │ ├── local/ # Room数据库 │ │ │ ├── AppDatabase.kt │ │ │ ├── MemoDao.kt # 备忘录CRUD/搜索/统计 │ │ │ ├── SettingDao.kt # 键值对设置存储 │ │ │ └── entities/ # Room实体(MemoEntity/SettingEntity) │ │ ├── model/ # 领域模型(Memo/SyncModels) │ │ ├── repository/ # 仓库层(MemoRepository) │ │ └── sync/ # 同步相关 │ │ ├── SyncManager.kt # 同步协议(兼容桌面版REST API) │ │ ├── AlarmScheduler.kt # 闹钟调度(AlarmManager封装) │ │ ├── AlarmReceiver.kt # 闹钟广播接收(发送通知) │ │ └── BootReceiver.kt # 开机广播接收(重注册闹钟) │ ├── ui/ │ │ ├── theme/ # Material 3 主题(颜色/排版) │ │ ├── navigation/ # 导航图(路由定义) │ │ ├── screens/ # 7个页面 │ │ │ ├── MemoListScreen.kt # 备忘录列表 │ │ │ ├── MemoEditScreen.kt # 添加/编辑 │ │ │ ├── CalendarScreen.kt # 日历视图 │ │ │ ├── StatsScreen.kt # 统计 │ │ │ ├── SyncScreen.kt # 同步 │ │ │ ├── SettingsScreen.kt # 设置 │ │ │ └── ScanScreen.kt # 扫码 │ │ └── components/ # 共用组件(预留) │ └── util/ # 工具类 │ ├── Constants.kt # 常量定义 │ ├── DateUtils.kt # 日期工具 │ └── DataTransferManager.kt # 数据导入导出(SAF) └── res/ # 资源文件 ``` ### 同步协议(桌面版 ↔ 安卓版) 两个版本完全兼容,无需修改任何一端: | 接口 | 方法 | 说明 | |------|------|------| | `/api/ping` | POST | 连接测试 | | `/api/auth` | POST | 验证码认证 | | `/api/sync/pull` | POST | 拉取数据 | | `/api/sync/push` | POST | 推送数据 | | `/api/sync/full` | POST | 双向全量同步 | 连接码格式:`base64(ip:port:verify_hash[:8]:salt)` ~48字符 --- ## 数据模型 ### 备忘录 ```json { "text": "开会讨论需求", "time": "2026-04-05 09:00", "created_at": "2026-04-05 09:00", "completed": false, "completed_time": null, "remind_time": "2026-04-05 10:00", "priority": "high", "tags": ["工作"], "pinned": false, "alarm_enabled": true, "alarm_repeat": "单次" } ``` --- ## 安装部署 ### 桌面版 **环境要求**:Python 3.7+ / PySide6 / Windows 10/11 ```bash # 安装依赖 pip install PySide6 # 直接运行 python main.py # 或批处理 start.bat ``` ### 安卓版 **环境要求**:Android Studio Hedgehog+ / Android 8.0+ ```bash # 使用 Android Studio 打开 android_app/ 目录 # 或命令行构建 cd android_app ./gradlew assembleDebug ``` --- ## 文档 | 文档 | 说明 | |------|------| | [升级计划](docs/升级计划.md) | 各版本功能规划和完成状态 | | [架构设计](docs/ARCHITECTURE.md) | 系统架构详细说明 | | [开发规范](docs/开发规范.md) | 代码规范和开发流程 | | [维护说明](docs/维护说明.md) | 日常维护和故障排查 | | [Bug记录](docs/BUGS.md) | 已知问题和历史修复记录 | | [PySide6设计文档](docs/DESIGN_PYSIDE6.md) | PySide6 迁移设计文档 | | [PySide6影响评估](docs/IMPACT_PYSIDE6.md) | PySide6 迁移影响评估 | | [PySide6测试计划](docs/TESTPLAN_PYSIDE6.md) | PySide6 迁移测试计划 | | [PySide6迁移计划](docs/MIGRATION_PYSIDE6_PLAN.md) | PySide6 迁移详细实施计划 | | [v4.0设计文档](docs/DESIGN_v4.0.md) | 安卓版设计文档 | | [v4.0影响评估](docs/IMPACT_v4.0.md) | 安卓版影响评估 | | [v4.0测试计划](docs/TESTPLAN_v4.0.md) | 安卓版测试计划 | | [v4.0 API文档](docs/API_v4.0.md) | 安卓版API接口文档 | --- **项目维护人**: wanquan9527 **当前版本**: 桌面版 4.0 (PySide6) / 安卓版 4.0 **许可证**: MIT License