ActivityWatch Reminder 是一个基于 ActivityWatch 的桌面小工具,旨在监测用户的应用/网页使用时长,并在达到特定阈值后进行提醒或干预,帮助用户更好地管理注意力和休息时间。
如果你经常因为刷网页或看视频导致时间管理失控,这个工具可以帮你在“过度使用”时及时提醒,并让你选择是否强制休息。
- ActivityWatch 数据获取
- 利用 ActivityWatch 提供的 API,定期获取用户在各个应用/网站上的使用时长。
- 阈值提醒
- 用户可设置某一时间阈值(如连续 30 分钟),当超过时自动触发桌面通知弹窗。
- 可定制配置
- 在
config.py中或其他配置界面里,设置提醒间隔、监控的应用范围等。
- 在
- (可选)强制阻断
- 当用户多次忽略提醒或达到更高阈值时,进入全屏弹窗/锁屏,帮助用户强制休息。
- (可选)AI 个性化提示
- 接入 OpenAI 或其他大语言模型,为用户生成更具人性化的提醒文案。
- 跨平台可行性
- 目前主要在 Windows 上测试和使用,其他平台(macOS、Linux)后续可以适配。
- 操作系统:Windows 10/11(目前只在此环境下测试)
- Python:版本 3.7+(建议 3.9 或更高)
- ActivityWatch:已在本地安装并运行(确保 ActivityWatch 的服务端口可用)
git clone https://github.com/<YourUsername>/activitywatch-reminder.git
cd activitywatch-reminderpip install -r requirements.txt如果没有
pip,请先安装对应的 Python 环境或使用conda等包管理工具。
- 在
src/config.py中修改以下关键参数:THRESHOLD_MINUTES:使用阈值(例如 30 分钟)CHECK_INTERVAL_SECONDS:监控间隔时间(例如 300 秒)- 其他的自定义设置(如监控哪些应用、是否开启AI提醒等)。
python src/main.py- 程序将会在后台定期从 ActivityWatch 获取数据,并在达到阈值后弹出提醒或执行阻断操作。
- 若需要停止程序,直接关闭终端窗口或使用
Ctrl + C中断执行。
activitywatch-reminder/
├── README.md # 项目说明文件
├── .gitignore # Git忽略文件列表
├── requirements.txt # Python依赖列表
└── src/
├── main.py # 主入口脚本
├── aw_api.py # ActivityWatch 数据获取相关代码
├── config.py # 全局配置,比如提醒阈值、监控间隔等
└── notifier.py # Windows 弹窗或提醒功能
main.py:项目启动主脚本,包含主逻辑循环。aw_api.py:与 ActivityWatch 交互,获取数据的相关函数。config.py:存储并管理应用的各种配置(阈值、间隔、开关等)。notifier.py:实现 Windows 通知或弹窗逻辑;后续可扩展到 macOS/Linux。
requests:用于与 ActivityWatch API 通信win10toast或plyer等通知库(可根据你的选择更新)pywin32(可选,如果需要更深度的 Windows 通知/锁屏功能)- (可选)
openai:如果你要使用 AI 提示,需要安装并配置 API Key
详细依赖见 requirements.txt。
-
Q: ActivityWatch 运行报错或无法获取数据怎么办?
A: 请先确保 ActivityWatch 已经启动,默认端口是5600(文档参考)。如果端口冲突,需在aw_api.py中修改相应地址。 -
Q: 为什么没看到通知/弹窗?
A: 检查 Windows 通知是否开启;或者确认notifier.py所用的函数在你的系统上可用。如果弹窗被屏蔽,可以尝试用全屏弹窗(如tkinter)方式进行测试。 -
Q: 如果我想让它自动开机启动怎么办?
A: 目前本项目还没实现自动开机启动。你可以通过把脚本放进系统启动文件夹或注册表的方法来实现(后续可在 README 中补充此操作)。
- 强制阻断:在超过更长时长或连续多次忽视提醒后,使用全屏/锁屏来让用户休息。
- AI 整合:使用 OpenAI/ChatGPT 接口生成个性化的提醒文案。
- UI 界面:提供更友好的图形界面查看统计数据、配置提醒策略。
- 跨平台支持:尝试兼容 macOS 和 Linux(需要做通知与依赖的适配)。
- 数据可视化:展示本日/本周使用时长曲线图或分类统计。
- Fork 该项目。
- 创建新分支进行开发:
git checkout -b feature/my-feature。 - 提交并推送分支:
git push origin feature/my-feature。 - 发起 Pull Request 并描述具体修改内容。
如果你对 ActivityWatch Reminder 有任何建议或想法,欢迎提 Issue 或直接参与贡献。
本项目可能参考了 ActivityWatch 的相关代码/文档。由于 ActivityWatch 自身采用 Mozilla Public License 2.0(或其他开源协议),请在使用本项目前确认是否符合其协议要求。本项目本身可以使用 MIT / Apache / GPL 等你喜欢的开源协议(请自行选择并在此声明)。
- 项目作者:ziyu-wei
- GitHub: @ziyu-wei
- 如果你有更多问题或想法,可以在 GitHub Issues 中提出。
感谢你使用 ActivityWatch Reminder,愿它能帮助你更好地把握时间、保持健康专注!