应用收据 · App Receipt
追踪 macOS 应用使用时长,自动汇总成纸质收据风格的 HTML/PNG 报告。
预览
每日自动生成 HTML/PNG 收据。点状分隔、★ brand、[感谢自己的辛勤劳作] 双语彩蛋、Code 128 条形码、红色印章 —— 类似真实热敏纸小票。Web UI 在 :7878 提供表单 + 实时预览 + PNG 下载。
安装
需要 macOS + Node.js 18+。一行 curl 装好 LaunchAgent + tracker + web UI:
curl -sL https://github.com/linweiheng2009-ops/app-receipt/raw/main/install.sh | bash
使用
- tracker 每 10s 采样前台 app,数据写入
~/app-receipts/<YYYY-MM-DD>.json - CLI:
node ~/app-receipt/scripts/app-receipt.mjs today出当天 HTML 收据 - Web UI:
node ~/app-receipt/scripts/app-receipt-web.mjs→ 浏览器打开http://localhost:7878 - 支持中英双语切换,事件追踪(应用切换/屏幕锁/唤醒次数)
- 卸载:
~/app-receipt/uninstall.sh(可选--purge删数据 +--keep-repo留仓库)
技术栈
- NSWorkspace.frontmostApplication — 前台 app 检测(无需 TCC 权限)
- ioreg HIDIdleTime — 闲置秒数检测
- LaunchAgent (StartInterval=10) — 后台常驻,无需手动启动
- Node.js + 自包含 HTML 模板 — 收据渲染
- Playwright + 系统 Chrome — PNG 导出 1080×1350 retina
- JSONL 原子写(tmp + rename)— 防半写状态
数据格式
每日一份 JSON,字段: date / apps / totalSec / idleSec / startedAt / lastUpdated / events。直接 cat 可读,备份容易。