一个原生 macOS 桌面宠物:在 HsiangHo/Kaka 的基础上,用 Swift + AppKit 重写了交互与播放引擎,无需 Xcode、零第三方依赖,swift build 即可构建。
⚠️ 关于素材(重要):本仓库只包含代码。小狮子的动画帧与音效(Animations/)版权归瑞星(Rising所有,不在本仓库内分发。请自行从上游 HsiangHo/Kaka 获取素材后放到KakaPet/Animations/再构建,并仅在你被允许的范围内使用。MIT 协议只覆盖源码,不覆盖这些素材。
- 🦁 原生 macOS 桌宠:Swift + AppKit,无需 Xcode、零第三方依赖,App 仅约 500K
- 🪟 透明无边框置顶窗口:以「附属应用」模式运行,没有 Dock 图标,仅在菜单栏放一个盾牌图标
- 🧍 安静不吵:平时只是站立,不自动乱演动画
- 👆 单击/双击逗它:随机播放逗趣动作(吃西瓜、挠头、做鬼脸、剪刀等);有 1-2-3 连续的动作会整串连播
- 😴 可设定的入睡时间:无操作 30 秒 / 1 分钟 / 2 分钟 / 5 分钟 / 永不(菜单里选,记忆设置)
- ⏰ 睡眠自动活动:睡满 2 分钟自动醒来,之后每 30 秒做一个随机动作,做满 3 个再重新入睡
- 🙌 多种唤醒:睡着时单击或鼠标经过都能把它叫醒
- ✋ 流畅拖动:即时跟手、抓取点与动画对齐,且始终限制在屏幕内不会拖丢
- 🫣 拖到右边缘躲起来:在拖动高度就地探头藏在右侧
- 躲藏静置时每 30 秒探一次头
- 鼠标悬停时循环摆手,移开就回到探头静置
- 单击让它钻出来走回站立(位置无缝衔接)
- 🔊 动画音效开关(菜单,记忆设置)
- 🖱️ 右键菜单:动画音效 / 睡眠时间 / 如何拖动 / 动画说明 / 退出
- 🛡️ 菜单栏盾牌图标,点击弹出同一套菜单
- 📦 一键打包:脚本生成
.app和便于分发的.dmg
需要:macOS 11+、Swift 工具链(Command Line Tools 即可,无需完整 Xcode)。
# 1) 准备素材(本仓库不含):从上游 Kaka 取到各动画文件夹,放到这里
# 最终目录形如 KakaPet/Animations/Stand, /Happy, /Sleep1 ...
git clone https://github.com/HsiangHo/Kaka
cp -R Kaka/Kaka/Kaka/Animations ./Animations
# 2)(可选)放一张 1024×1024 的图标
# cp your-icon.png ./AppIcon-1024.png
# 3) 开发模式快速跑
KAKA_ANIM_DIR="$PWD/Animations" swift run
# 4) 打包成 App / DMG
./build-app.sh # 生成 KakaPet.app
./make-dmg.sh # 生成 KakaPet.dmg(便于分发)运行后菜单栏右上角会出现盾牌图标;退出:右键小狮子 → 退出咔咔,或点菜单栏图标 → 退出咔咔。
| 操作 | 反应 |
|---|---|
| 不打扰 | 安静站立,不自动播放任何动作 |
| 无操作满设定时间 | 进入睡眠(时间可在右键「睡眠时间」里选) |
| 睡满 2 分钟 | 自动睡醒,之后每 30 秒做一个随机动作,做满 3 个后重新入睡 |
| 单击 / 双击 | 醒着 → 随机逗趣动作;睡着 → 睡醒;躲着 → 钻出来 |
| 拖动 | 即时跟手、抓取点与动画对齐,始终限制在屏幕内 |
| 拖到屏幕右边缘 | 就地探头躲到右侧;悬停循环摆手,移开回到探头;单击钻出来 |
| 右键单击 / 菜单栏图标 | 弹出菜单(音效 / 睡眠时间 / 如何拖动 / 动画说明 / 退出) |
- 透明无边框、置顶
NSWindow,.accessory模式(无 Dock 图标)。 - 58fps 定时器驱动逐帧播放;行为是一个小状态机(站立 / 逗趣 / 睡眠 / 拖动 / 躲藏)。
- 悬停检测用「轮询鼠标位置」而非系统进/出事件,避免贴边时反复触发。
.app内资源路径Contents/Resources/Animations,运行期定位(亦支持KAKA_ANIM_DIR覆盖)。
源码各文件职责见 Sources/KakaPet/。
- 源码基于上游 HsiangHo/Kaka(MIT,© 2018 Xiang He)适配重写,沿用 MIT,见 LICENSE。
- 小狮子美术与音效素材版权归**瑞星(Rising)**所有,不在本仓库分发,请自行获取并合规使用。