← Back
nicedoctors

nicedoctors/JiuNuoDesktopPet

啾糯桌宠:Windows 双角色桌宠,捏脸、双宠互动与桌面物理;源码公开,禁止商业使用。

View on GitHub ↗
desktop-petnoncommercialwindowswpfwuthering-waves
Stars
4
Forks
0
Watchers
4
Open issues
0
Contributors
1
Language
C#
License
Other
Default branch
main
Created Oct 1, 2026Updated Oct 1, 2026

Star growth

Today—
This week—
This month—

Star history will appear here once this repo has been tracked for a couple of days.

README

啾糯桌宠

在 Windows 窗口和任务栏上生活的 WPF 桌宠:糯糯把回收站文件当食物,菲比啾比把窗口当玩具。

Note

正式产品名为“啾糯桌宠”,包含糯糯与菲比啾比两位角色。正式发行采用 Windows x64 自包含免安装目录,完整解压后即可运行;实机验收状态见 角色说明。

许可与素材

维护者拥有权利的代码采用 PolyForm Noncommercial 1.0.0,允许条款范围内的非商业使用、修改和再分发,商业使用不在授权范围内。本项目定位为“源码公开、非商业使用”。适用范围见 NOTICE。

角色与素材来源、制作贡献及尚待确认的授权见 ASSET_RIGHTS.md。素材不自动套用代码许可,项目公开不表示已取得上游角色和画师的再分发授权。

项目简介

糯糯不是固定在屏幕角落的挂件。她会把真实桌面环境当作活动空间:在任务栏和应用窗口上行走,从窗沿掉落,被快速移动的窗口撞飞,也能被放进窗口内部随四壁摇晃弹跳,并根据饥饿、困倦和好奇心自主选择行为。

当文件通过常规方式进入回收站时,糯糯会记住原桌面项目的位置,跑过去完成进食互动。整个过程只使用文件系统事件和必要的系统元数据,不读取文件内容,也不会替用户删除文件。

功能亮点

  • 角色选择与共存:糯糯与活泼的菲比啾比可单独切换,也可启用“双宠共存”同时出现;动作、录音和养成存档仍各自独立,共用尺寸、禁音、安静模式与可选的头顶对话气泡(默认关闭)。素材与验收状态见 角色说明。
  • 菲比窗口捣蛋:踢、打、冲撞和帽子收藏窗口,满捣蛋条后扔帽踢碎或撕裂窗口快照,再将碎片或撕开的两半收进帽子。窗口不按时间自动恢复,由用户右键“把窗口还回来”返还;攻击取消额外蹲下、伸手收尾,大招放慢以看清蓄力、破坏和收纳过程。实机验收状态见 角色说明。菲比不吃或舔图标,也没有饥饿条。
  • 桌面物理系统:应用窗口顶边、任务栏和显示器工作区可以成为行走或落脚地形。
  • 窗口实体碰撞:普通窗口的左右边缘可以撞飞糯糯;把她放进窗口内部后,四壁会形成可摇晃的封闭容器。
  • 有惯性的拖拽:轻放、横甩、上抛和斜甩会得到不同的释放速度、重力和软弹效果。
  • 自主生活状态:糯糯维护饥饿、饱腹、困倦和好奇;菲比维护困倦、好奇和独立捣蛋状态,离线不积攒捣蛋。
  • 可调角色尺寸:托盘菜单提供 60%~200% 实时尺寸滑条,缩放时保持脚底锚点和碰撞比例一致。
  • 可选生活模式:糯糯可启用禁食模式,两角色共用安静模式和无限模式;菲比自主捣蛋默认开启,可在菜单关闭。
  • 系统启动选项:可选择随当前 Windows 用户登录启动,无需管理员权限。
  • 回收站进食交互:识别删除前的桌面项目位置,支持连续删除排队和批量处理。
  • 多显示器适配:支持负坐标显示器、跨屏窗口、工作区变化和 Per-Monitor DPI。
  • 本地优先:运行时不联网,不上传日志或截图,不读取文件正文、不主动删除文件;窗口特效快照只短时保存在内存。

完整能力、行为边界和当前限制见 功能说明。

环境要求

场景 要求
运行已打包版本 Windows 10/11 x64
从源码运行 Windows 10/11 x64、.NET 8 SDK
生成完整免安装包 上述环境、Python/Pillow,以及 Visual Studio 2022 C++ 组件或显式指定的 LLVM-MinGW;见开发指南

项目只面向 Windows。透明窗口、托盘菜单、桌面项目定位和窗口地形依赖 Win32/WPF,因此暂不支持 macOS 或 Linux。

快速开始

下载免安装版

当前版本为 v1.3.3,加入非商业代码许可、素材来源说明和第三方声明,固定内置 .NET/Windows Desktop 8.0.31,并加强打包检查。角色功能保持不变。发布决定、验证结果与后续事项见 发布记录。

从 GitHub Releases 下载标注为“啾糯桌宠-免安装版”的 ZIP,完整解压后运行根目录 啾糯桌宠.exe。公开源码位于本仓库,使用独立历史,不包含原私有仓库的旧提交或 PR 引用。

从源码运行

git clone https://github.com/nicedoctors/JiuNuoDesktopPet.git
cd JiuNuoDesktopPet
.\run.ps1

也可以直接使用 .NET CLI:

dotnet run --project .\src\SoftMochiPet\SoftMochiPet.csproj -c Release

生成免安装包

.\package.ps1

完成后会生成:

dist\啾糯桌宠-免安装版\
dist\啾糯桌宠-免安装版.zip

将 ZIP 完整解压后,双击根目录的 啾糯桌宠.exe 即可。正式包根目录只有这一个启动入口;程序文件 子目录包含程序运行所需内容,不能与启动器分开移动。专属测试入口仅保留在源码和开发构建中,不随正式包发布。

更多构建命令和打包说明见 开发指南。

菲比独立专属功能演示

专属测试入口仅用于开发构建,不包含在正式免安装包中。需要运行时请从源码构建测试启动器,或使用单独的开发测试目录;正式包只提供日常桌宠入口。

基本操作

操作 效果
左键按住糯糯并移动 拖动;自主巡游会立即暂停
缓慢松开左键 轻柔放下,随后落到最近的可用地形
快速松开左键 按手势末速度甩出或上抛
把糯糯放进普通窗口内部 进入封闭容器,随窗口四壁碰撞和弹跳;删除事件会让她跑出去进食
从左右移动普通窗口撞她 按窗口的撞击方向飞出
右键糯糯 打开与托盘入口相同的菜单
菜单“桌宠角色” 选择糯糯或菲比啾比;正在拖动或吃东西时延后切换
菜单“双宠共存” 同时显示两人;再次点击恢复单人模式,选择“桌宠角色”也会切回单人模式
菜单“无限模式” 隐藏两人的头顶进度条,并暂停糯糯的饥饿行为;菲比仍按原有节奏捣蛋
拖动菜单中的角色大小滑条 在 60%~200% 范围即时缩放并自动保存
托盘菜单“开机自启” 设置或取消随当前 Windows 用户登录启动
糯糯菜单“禁食模式” 隐藏饥饿条、饥饿归零,停止讨食、舔图标和饥饿打滚;菲比没有此项
菲比菜单“允许自主捣蛋” 持久开关,默认开启;旧设置版本为 4 或更早时升级会一次性开启,之后保留手动选择。自主与手动模式均可能作用于兼容的非最大化、非全屏前台窗口,不限于普通窗口
菲比菜单“捣蛋一下” / “逗逗她” 主动体验窗口玩法 / 增加捣蛋条,完整素材就绪后使用
菲比菜单“把窗口还回来” 主动恢复帽中、碎裂或撕裂的窗口;不会按时间自动归还
托盘菜单“安静模式” 停止自主走动、进食和捣蛋,仅待机或睡觉;已收起的窗口继续保留,仍可右键恢复
双击托盘入口 让糯糯回到当前可见工作区
托盘菜单“禁音” 立即关闭或恢复角色语音
托盘菜单“退出桌宠” 保存生活状态并退出

普通删除操作进入回收站后,糯糯会在捕获到原始桌面位置时前往进食。监听失败不会影响文件本身,也不会拦截或改变系统的删除流程。

窗口持有期间,安静、回家、尺寸调节及跨屏拖动不会自行恢复目标。切换角色、退出、锁屏、休眠或真实显示布局/工作区变化会安全归还,避免窗口遗留;这与日常按时间自动恢复不同。

开发与测试

# Release 构建
.\build.ps1

# 运行无界面逻辑测试
dotnet run --project .\tests\SoftMochiPet.LogicTests\SoftMochiPet.LogicTests.csproj -c Release

# 生成自包含的 Windows x64 目录版
.\publish.ps1

逻辑测试覆盖物理、尺寸、巡游、糯糯进食、角色隔离、捣蛋冷却和动画事件;生产素材检查真解码每个角色的全部必需帧,并核对真实接触点、帽子遮罩和哈希。当前验收结果见 角色进度,涉及外部窗口、Explorer、视觉及混合 DPI 的效果由用户按 手工清单 验证。

项目结构

NuonuoDesktopPet/
├─ src/SoftMochiPet/              WPF 主程序
│  ├─ Core/                       状态机、物理和行为策略
│  ├─ Interop/                    Win32 互操作声明
│  ├─ Models/                     设置与生活状态
│  └─ Services/                   桌面、日志、声音和文件监听服务
├─ tests/SoftMochiPet.LogicTests/ 无界面逻辑测试
├─ launcher/                      免安装包原生启动器
├─ packaging/                     便携版说明文件
├─ docs/                          功能与开发文档
└─ *.ps1                          构建、运行和发布脚本

数据、日志与隐私

啾糯桌宠只在当前 Windows 用户目录保存运行数据:

内容 路径
设置 %APPDATA%\SoftMochiPet\settings.json
生活状态 %APPDATA%\SoftMochiPet\life-state.json
菲比角色数据 见 角色数据边界;独立保存生活与捣蛋状态
诊断日志 %LOCALAPPDATA%\SoftMochiPet\activity.log
上一份轮转日志 %LOCALAPPDATA%\SoftMochiPet\activity.previous.log

“开机自启”使用当前用户的 HKCU\Software\Microsoft\Windows\CurrentVersion\Run 启动项;关闭选项后会移除该项目。

正式更名与旧版兼容

产品名、窗口/托盘标题及 EXE、DLL 发布名统一为“啾糯桌宠”;角色仍叫“糯糯”和“菲比啾比”。为继续读取已有设置与两角色存档,保留 SoftMochiPet 数据/日志目录、内部命名空间、单实例互斥量与激活事件,以及 Windows Run 值名。不会另建一份新品牌存档或启动项,也不重命名原图、录音或角色 ID。

升级时先退出旧版,再完整解压到新文件夹;不要只替换 EXE 或把新旧“程序文件”混在一起。旧版开机自启命令不会被静默修改;需要使用新版本自启时,在新版本菜单重新勾选“开机自启”,原 Run 值会更新为新入口。仓库地址与源码项目文件名保持不变,不代表发行文件仍使用旧品牌。

日志达到 8 MB 后轮转,记录行为状态、窗口地形、显示器参数和事件关联编号。v1.3.2 起不写入完整文件路径、文件显示名或窗口标题,异常保留类型、错误码与调用位置,不保存原始异常消息。旧版日志、截图及录屏仍需在公开前人工检查。公开署名、素材元数据与历史处理规则见 隐私与公开边界。

已知限制

  • 当前发布包没有 Authenticode 数字签名,Windows 可能显示“未知发布者”。
  • 桌面项目定位依赖 Windows Explorer 的当前实现;Explorer 重启、第三方桌面管理工具或非标准删除流程可能导致进食互动没有触发。
  • 混合 DPI、显示器热插拔和非常规任务栏布局已纳入适配,但仍属于重点测试区域。
  • 仓库暂未提供自动更新器,也不会在后台检查版本。

遇到问题时,请附上 Windows 版本、显示器布局与缩放比例、复现步骤,以及脱敏后的 activity.log。详细格式见 贡献指南。

贡献

欢迎提交 Bug 报告、复现日志和改进建议。提交代码前请先阅读 CONTRIBUTING.md,并确保逻辑测试通过;不要提交 dist、bin、obj、临时日志或包含个人路径的数据。

许可证

代码许可与素材范围见本页 许可与素材。分发时须保留 LICENSE、NOTICE 和适用的第三方声明;素材授权状态见 ASSET_RIGHTS.md。