背景
记录工作日志,是一个很好的习惯,但不容易坚持,本来打算每天记录,但经常拖延,拖着拖着,有一些事情就忘记了。
等到写周报或月报的时候,才会开始翻邮件,聊天记录,各个仓库的提交log等,回忆都干了些啥。
为了解决这个问题,需要有一个工具来帮助我,提高工作日志的完成度。
最开始的设想是,自动定时发送一个邮件或聊天消息,在其中回复工作记录。但转念一想,公司的系统就是这么做的,每天一封邮件提醒我写工作日志,但没什么实际作用。看来需要更加强力的提醒才行。想来想去,试试就用弹窗吧。
任务管理Taskwarrior
弹窗如果只是一个输入框,每次都需要手工输入,那就太麻烦了。还是需要有一些预设的任务,可以直接选择。必要的时候,才做输入。所以首先要有一个方法,记录当前的任务,作为弹窗的数据源。
简单点的话,就是一个txt文件即可,手工往里面加入任务。但其实有更好的方法,那就是使用Taskwarrior,一款基于命令行的任务管理工具。具体可见
选择任务后,点击确定。由于我选择了 其他,所以再次出现弹窗,这次的弹窗可以任意输入。

补充完成后,点击确定即可。
$ cat taskdiary.txt 2018-11-25 17:09:46 : 这里可以输入 2018-11-25 17:09:46 : 其他|测试任务1定时调用crontab
有了弹窗脚本后,就只差定时调用了。直接用crontab就可以。
这里有两个需要注意的地方
-
为了让crontab能正常使用zenity弹出弹窗,需要设置 export DISPLAY=:0
-
为了在zenity的弹窗中能正常输入中文,还需要另外设置几个变量,具体见下方示例
示例,9点到20点之间,每隔一个小时弹出一次。
0 9-20 * * * export DISPLAY=:0 && export XMODIFIERS="@im=fcitx" && export GTK_IM_MODULE=fcitx && export QT_IM_MODULE=fcitx && $HOME/pop-up-task-diary.sh其他
总觉得这种东西,应该有现成的才对。但一时没找到,实现起来也不麻烦,就自己写了这么个脚本先用着。
如果有人知道有现成的解决方案,或一些更好的工作日志记录方式,请推荐给我,谢谢。
