ubuntu下定时弹窗记录工作日志

背景

记录工作日志,是一个很好的习惯,但不容易坚持,本来打算每天记录,但经常拖延,拖着拖着,有一些事情就忘记了。

等到写周报或月报的时候,才会开始翻邮件,聊天记录,各个仓库的提交log等,回忆都干了些啥。

为了解决这个问题,需要有一个工具来帮助我,提高工作日志的完成度。

最开始的设想是,自动定时发送一个邮件或聊天消息,在其中回复工作记录。但转念一想,公司的系统就是这么做的,每天一封邮件提醒我写工作日志,但没什么实际作用。看来需要更加强力的提醒才行。想来想去,试试就用弹窗吧。

任务管理Taskwarrior

弹窗如果只是一个输入框,每次都需要手工输入,那就太麻烦了。还是需要有一些预设的任务,可以直接选择。必要的时候,才做输入。所以首先要有一个方法,记录当前的任务,作为弹窗的数据源。

简单点的话,就是一个txt文件即可,手工往里面加入任务。但其实有更好的方法,那就是使用Taskwarrior,一款基于命令行的任务管理工具。具体可见

linux命令行todo列表管理工具Taskwarrior介绍

根据默认配置,taskwarrior 的记录保存在 $HOME/.task/pending.data

我们只需要在脚本中读取这个文件,过滤出所需要的任务即可

弹窗Zenity

初步设计是,弹窗中需要列出任务,可供选择。当我在完成预设任务时,可简单勾选。但也需要有输入框,可让我补充其他情况。

简单搜索后,决定使用Zenity 来做弹窗。关于Zenity,网上有很多介绍,此处不赘述。

为了进一步简化,我们在task中多建立一个任务叫做“其他”,选择此项表明需要输入,用于配合脚本处理。

task add “其他”

代码及效果

初步的代码如下(可查看github版本,也许会比此处的代码更完善些,https://github.com/zqb-all/pop-up-task-diary)


#!/bin/bash

# author: https://github.com/zqb-all

diary="$HOME/taskdiary.txt"

taskchoice=$(cut -d'"' -f 2 "$HOME"/.task/pending.data | sed '{x;p;x;}' |     zenity --list --checklist --title="选择你正在做的工作" --column="是否正在做?" --column="工作项"     --timeout 600 --width 600 --height 400)

timenow=$(date "+%Y-%m-%d %H:%M:%S")

[[ $taskchoice = *"其他"* ]] && {
    taskother=$(zenity --title="补充说明" --text "其他工作" --entry --timeout 600)
    [  x"$taskother" != x"" ] && echo "$timenow : $taskother" >> "$diary"
}

[ x"$taskchoice" = x"" ] && {
    taskother=$(zenity --title="补充说明" --text "请输入当前工作" --entry --timeout 600)
    [  x"$taskother" != x"" ] && echo "$timenow : $taskother" >> "$diary"
}

[ x"$taskchoice" != x"其他" ] && {
    [  x"$taskchoice" != x"" ] && echo "$timenow : $taskchoice" >> "$diary"
}

将以上代码,保存成脚本后,比如保存为~/pop-up-task-diary.sh

运行即会出现弹窗。弹窗中会列出所有任务。选中后点击确定,就会将选中的值和当前时间,一起写入home目录下的 taskdiary.txt文件中。

如果选择了“其他”,还会再弹出一个窗口,可以输入,作为补充。

如果在指定的时间内未输入,说明人不在电脑前,则弹窗自动消失。

例如,我的task如下

$ task
[task next]

ID Age  Description Urg
 1 1min 其他           0
 2 7s   测试任务1      0
 3 2s   测试任务2      0

3 tasks

则调用脚本后,会出现

选择任务后,点击确定。由于我选择了 其他,所以再次出现弹窗,这次的弹窗可以任意输入。

补充完成后,点击确定即可。

$ 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

其他

总觉得这种东西,应该有现成的才对。但一时没找到,实现起来也不麻烦,就自己写了这么个脚本先用着。

如果有人知道有现成的解决方案,或一些更好的工作日志记录方式,请推荐给我,谢谢。

原文地址:https://www.cnblogs.com/zqb-all/p/9979399.html

时间: 2024-10-12 09:03:08

ubuntu下定时弹窗记录工作日志的相关文章

Linux下定时切割Mongodb数据库日志并删除指定天数前的日志记录(转)

文章转自:http://www.osyunwei.com/archives/8998.html 说明: 操作系统:CentOS Mongodb安装目录:/usr/local/mongodb Mongodb数据库存放目录:/home/data/mongodb/mongodb_data Mongodb日志存放目录:/home/data/mongodb/mongodb_log 实现目的: 对Mongodb数据库日志按天保存,并且只保留最近7天的日志记录. 具体操作: 使用Mongodb数据库自带的命令

JIRA开启时间追踪并为问题记录工作日志

在升级版的JIRA中(4.2or4.3),我们可以使用其记录工作日志的功能.之前研究了很长时间,就是找不到初始预估时间在哪里设置,但是剩余工作时间与耗费时间都可以填写.根据官网的帮助文档也没找到合适的解决办法.下面将具体设置方法记录如下,方便日后查询. 1.开启时间追踪 用管理员(或有相应权限)的角色登录,进入管理-->问题-->时间追踪.设置好自定义的内容后,如:每天的工作时长.每周的工作日天数.默认的时间单位.及模式等,点击激活. 2.在权限方案中,添加时间追踪的权限,并且设定不同角色等的

Ubuntu下iptables使用记录

这里参考了百度百科还有Ubuntu论坛  http://wiki.ubuntu.org.cn/UbuntuHelp:IptablesHowTo/zh 这里参考了博主just_young大湿的文章  http://blog.csdn.net/just_young 1.查看iptables表项 sudo iptables -L -v 默认情况下,ubuntu下的iptables是允许任意流量进入的.所以刚开始时会看到如下的表项. 解释下target,防火墙的规则指定所检查包的特征,和目标.如果包不匹

ubuntu 下anroid开发--工作备忘

1 使用命令 查询字符串(搜索所有文件)grep mobile_provisioning * -r 2 删除一些没有git add 的文件即 git rm Untracked filesgit clean -f 3 全编anroid源码时,编译加速 export USE_CCACHE=1 ubuntu 下anroid开发--工作备忘,布布扣,bubuko.com

ubuntu下针对php的thrift 安装折腾记录

此安装针对php开发配置 按照官方的文档做法,会出现各种bug,总结正确的安装方法: STEP1: 安装必要的依赖插件: sudo apt-get install libboost-dev libboost-test-dev libboost-program-options-dev libevent-dev automake libtool flex bison pkg-config g++ libssl-dev sudo apt-get install php5-dev php5-cli ph

python脚本,方便工作,ubuntu下很方便

相比于windows的图形方式,ubuntu的命令行显得简单很多,但是每次需要打开命令行去寻找路径,打开应用程序还是不方便. 以下使用python写了一个小脚本,方便启动常用的工具,初学python,还请多指教,hehe. #coding=utf-8 #!/usr/bin/python # start.py import sys import os commandDict = {     "idea" : "/home/cwz/tools/idea-IU-129.1525/b

Oracle下定时删除归档日志脚本

一.报错信息 前几天网站突然访问不了,并且报了如下错误: ora-27101: shared memory realm does not exist ora-01034: oracle not available 11g ORA-24324: service handle not initialized 原因:由于数据库归档日志满了,不能继续往数据库里写数据. 二.查看归档日志大小 su - oracle sqlplus / as sysdba show parameter recover 可查

在Ubuntu下工作

以前我使用的操作系统是windows系列的,后因工作需要转用Ubuntu.刚开始接触Ubuntu时,我使用的是14.04版本,但没有多久就升级到16.04 64位桌面版了.下面介绍一下自己在Ubuntu下使用的软件,给大家参考一下. 1.Office办公软件 在Ubuntu安装时,会默认安装LibreOffice,使用上没有多大问题,但还是推荐大家使用国产的WPS.一方面WPS符合国人的习惯,另一方面在与微软的Office兼容性上更好. 此外,德国有一个office系统--softmaker o

工作经验:Java 系统记录调用日志,并且记录错误堆栈

前言:现在有一个系统,主要是为了给其他系统提供数据查询接口的,这个系统上线不会轻易更新,更不会跟随业务系统的更新而更新(这也是有一个数据查询接口系统的原因,解耦).这时,这个系统就需要有一定的方便的线上查错方式,我便想到了记录每一次的调用日志,而且需要记录错误堆栈,同时被白名单过滤的也要记录下来. 想法 这个日志记录,需要在每一次访问接口时记录一下,在有异常时将异常的堆栈信息记录在每次访问记录里.这里由于要使用数据库信息,所以选择了 spring 的拦截器. 在拦截器抛放心之后,运行业务代码,如