Kreminder,python写的定时提醒工具

Kreminder

定时提醒工具,间隔一段时间以后提醒长时间坐在电脑面前的你休息一下。python

源码:http://git.oschina.net/kuanghy/kreminder
git

开发初衷

对于须要长时间坐在电脑前工做的人来讲,适当起来活动活动老是好的。若是长时间坐在电脑前不动,对于我的的健康来讲,可能时一场噩梦。有人的可能想 着要适当休息下,但一坐下来就忘了时间;有的人多是明明已经感受到坐着有些不舒服了,却没有毅力起来。我经常跟个人朋友说,我有“坐着”恐惧症,平时能 站着,我绝对不会坐着。由于只要一工做,我就是坐一天,经常是忘了时间起来,便是闲下来时又没毅力起来了。中午通常是订外卖,坐着吃完就坐着眯一会,醒了 又继续工做。想一想也是太可怕了。shell

(ˇˍˇ)框架

因此,后来写了一个脚本,用 notify-send 输出气泡做提醒,并设置 crontab 隔一段时间就提醒本身休息一下。这就是该项目建立的初衷。工具

实现原理

在最初用 notify-send + crontab 基本实现本身想要的功能以后,又发现这样灵活性太差,并且移植起来麻烦,换了台电脑又得从新配置。因而打算本身写一个定时任务,python 则是替代 shell 的好工具。刚开始是直接在 python 中调用 notify-send 命令。后来发现 python 有一个 pynotify 的模块能实现 notify-send 一样的功能,因而用 pynotify 改写。定时就不在用 crontab 了, 直接用个死循环 sleep 就搞定。至此,用 python 的替换就完成了,不在有麻烦的配置,我只要带着这份代码处处跑就能够了。测试

过了一段时间,我发现我中午老是忘了订饭。因而我想,该给它添加一个功能,让它在快到中午的时候提醒我订饭。这个功能则区别于间隔提醒,它是须要在 指定的一个时间来提醒你作某事。因而开始更加这个功能,这样就须要在循环中不停的对比时间,为以前的循环中有 sleep,因此就只能另外起一个线程。我打算用一个配置文件来设置全部须要处理的事物,而后让脚本一个一个的读取出来,这样我要增长一个事项的时候就不 用直接改代码。优化

写完以后运行程序,发现过了一会风扇就嗡嗡的转了起来。资源消耗太大了。这可能跟在循环中须要不断的获取当前时间来比较的缘由。因而又寻求新的解决 方案,最后发现了 Python 有一个定时任务框架 APScheduler (Advanced Python Scheduler)能够彻底替代 crontab 的功能。因而由决定用 APScheduler 来改写程序。spa

改写完成以后,在屡次测试中发现 pynotify 彷佛与 APScheduler 有些不太兼容,有些时候会出错。搞到最后,决定用 pyqt 来作算了。原本最开始也打算用 pyqt 写的,以为要写界面,麻烦。Pyqt 的 QSystemTrayIcon 能够建立系统托盘,而且也能产生气泡。想一想用 pyqt 写也好,之后能够在此基础上扩展更多的功能。.net

至此,该项目才有了基本的雏形。线程

使用说明

本程序依赖 apscheduler 和 pyqt4,要运行本程序需自行下载安装。获取源代码以后,执行项目目录中的 install.sh 便可安装:

./install

安装完成以后需修改配置文件:

vi ~/.kreminder/config/kreminder.conf

程序会在每次开机时随系统启动。退出可点击系统托盘处的退出项。

卸载程序只需删除主目录下的 .kreminder 目录便可:

rm -rf ~/.kreminder

本项目会不断优化完善,并增长新的功能。


Huoty sudohuoty@163.com

2016.01.08

相关文章
相关标签/搜索