[App Sharing] 周末花两天时间用ai手搓了一个桌面宠物
Tofloor
poster avatar
180******57
deepin
4 hours ago
Author

DeskPet - 桌面宠物

image.png

一款跨平台桌面宠物应用,在桌面上显示动态虚拟角色,集成番茄钟、日程提醒、天气查询、待办管理、笔记、便签、计算器等实用工具,让桌面宠物不仅好看好玩,更能帮助提高效率。

下载连接 网盘下载(60天有效)

功能概览

桌面宠物

功能 说明
透明窗口 无边框透明背景,融入桌面
精灵动画 精灵表逐帧动画,支持程序化绘制和外部精灵图
拖拽移动 左键拖拽宠物在桌面自由移动
点击交互 左键点击玩耍,双击触发特殊互动
右键菜单 喂食/玩耍/添加待办/笔记/便签/番茄钟/计算器/设置等
桌面行走 宠物在桌面上随机行走(SmoothedAnimation 平滑移动)
系统托盘 最小化到托盘,双击恢复,托盘菜单快速访问所有功能
开机自启 跨平台开机自动启动(Windows注册表/macOS LaunchAgent/Linux .desktop)
置顶/非置顶 可配置宠物窗口是否始终置顶

宠物状态系统

宠物拥有三维属性,随时间和交互变化:

属性 范围 衰减速率 影响
心情(mood) 0-100 -1/小时 < 30 伤心表情
饥饿(hunger) 0-100 -2/小时 < 20 饿肚子
精力(energy) 0-100 -1.5/小时 < 15 自动睡眠

状态机驱动行为:IdleWalking / Sleeping / Playing / Eating / Working

  • 喂食:饥饿值 +30
  • 玩耍:心情 +10,精力 -5
  • 番茄钟完成:心情 +5,经验 +10
  • 长时间无操作:宠物自动进入睡眠

多皮肤系统

支持两种渲染模式:

  • 程序化绘制:QCanvas 实时绘制角色(默认橘猫等)
  • 精灵表动画:外部精灵图帧动画,支持多状态切换

内置皮肤:

皮肤 说明
pom(默认) 程序化绘制的橘猫
mirana 暗夜精灵女祭司骑乘白虎(Blender 渲染精灵图)

自定义皮肤只需在 skins/ 目录下新建文件夹,编写 skin.json

番茄钟

  • 25 分钟工作 + 5 分钟短休息 × 4 轮 + 15 分钟长休息
  • 工作期间宠物进入 Working 状态
  • 计时结束系统通知,支持暂停/跳过/停止
  • 每日番茄数统计,JSON 持久化
  • 可在工作/短休/长休时长自由配置

日程提醒

  • 快速预设:5分钟 / 15分钟 / 30分钟 / 1小时 / 2小时
  • 自定义日期时间选择器
  • 30 秒轮询检查,到期弹出桌面通知
  • 提醒数据持久化

天气查询

  • 基于 Open-Meteo API(免费无需 Key)
  • 30 分钟自动刷新
  • 托盘工具提示显示当前天气
  • 可配置经纬度定位

待办管理

  • 待办列表:标题、优先级(高/中/低)、分类(工作/生活/学习/其他)、截止时间
  • 桌面悬浮卡片:未完成待办显示为桌面卡片,左侧彩色优先级条
    • 红色 = 高优先级,橙色 = 中优先级,蓝色 = 低优先级
    • 过期红色标记,即将到期橙色提示
    • 完成后卡片自动关闭
  • 到期提醒:60 秒轮询,到期时提醒,提前 15 分钟预警
  • 全部数据持久化到 todos.json(含已完成历史)

快速笔记

  • 分类管理:工作 / 生活 / 灵感 / 代码 / 其他
  • 搜索和分类过滤
  • Markdown 预览、字数统计
  • 分栏 UI(列表 + 编辑器)
  • JSON 持久化

桌面便签

  • 多窗口独立悬浮便签
  • 拖拽移动、QSizeGrip 缩放、折叠/展开
  • 可编辑标题
  • 7 种颜色(黄/绿/蓝/粉/橙/紫/白)
  • 7 种字体大小
  • 每个便签的位置/大小/内容/颜色独立持久化
  • 便签管理对话框统一管理

计算器

  • 递归下降解析器(parseExpression → parseTerm → parseFactor)
  • 支持 +-*/%、括号、一元负号
  • 历史记录(最多 50 条)

设置

  • 通用:开机自启、宠物/卡片/便签窗口置顶、透明度
  • 番茄钟:工作时长、短休时长、长休时长、循环次数
  • 皮肤:下拉切换已有皮肤
  • 天气:经纬度设置

通知系统

  • 宠物头顶弹出悬浮通知气泡
  • 用于番茄钟提醒、日程到期、待办预警等

技术栈

层面 技术
语言 C++ 17
UI 框架 Qt 6(QML / Quick)
渲染 QML Canvas / SpriteSheet 动画
网络 Qt Network(天气 API)
构建 CMake 3.19+
包管理 vcpkg(可选)

数据存储

所有用户数据存储在:

平台 路径
Linux ~/.config/desk-pet/
macOS ~/Library/Application Support/desk-pet/
Windows %APPDATA%\desk-pet\

文件列表:

文件 说明
config.json 应用设置
pet_state.json 宠物状态
todos.json 待办数据
todo_cards.json 待办卡片位置
notes.json 笔记数据
stickies.json 便签数据
reminders.json 提醒数据
pomodoro_stats.json 番茄钟统计
calc_history.json 计算器历史

自定义皮肤

skins/ 下新建目录,创建以下文件:

skin.json - 皮肤元数据:

{
    "idle": {
        "sheet": "idle.png",
        "frame_width": 128,
        "frame_height": 128,
        "columns": 8,
        "frame_count": 32,
        "fps": 24,
        "loop": true
    }
}

界面设计

  • 主色调#2B5EA7(深蓝)
  • 强调色#E8A317(金黄)
  • 背景色#F5F5F5(浅灰)
  • 文字色#1A1A1A(深灰)
  • 全界面中文化,统一视觉风格

许可证

本项目仅供学习和个人使用。

Reply Favorite View the author
All Replies

No replies yet