Termux+crontab实现手机通知栏定时通知emacs的org-agenda任务列表

Termux+crontab实现手机通知栏定时通知emacs的org-agenda任务列表

通知栏通知任务列表

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# 测试
cat ~/org/tasks.org | termux-notification -t 'org-agenda'
# 实例1,显示内容有限,勉强接受
grep -R "\** TODO " ~/org/* | grep -v "list" | sed 's|\(^.*.org:\)\(.*\)|\2|g' | sort | termux-notification -t 'org-agenda'
# 如果不想显示TODO前缀
grep -R "\** TODO " ~/org/* | grep -v "list" | sed 's|\(^.*.org:\)\(.*TODO \)\(.*\)|\3|g' | sort | termux-notification -t 'org-agenda'

# 实例2,显示内容只有几行,不实用
termux-toast -b white -c black "$(grep -R "\** TODO " ~/org/* | grep -v "list" | sed 's|\(^.*.org:\)\(.*\)|\2|g' | sort)"

# 实例3,可以显示完整TODO List,但是必须要在Termux界面
termux-dialog confirm -t 'TODO List' -i "$(grep -R "\** TODO " ~/org/* | grep -v "list" | sed 's|\(^.*.org:\)\(.*\)|\2|g' | sort)"

# 实例4,可以显示完整内容
termux-notification -t "org-agenda" --action "bash -l -c 'termux-dialog confirm -t TODO -i \"$(grep -R "\** TODO " ~/org/* | grep -v "list" | sed 's|\(^.*.org:\)\(.*\)|\2|g' | sort)\"'"

通过crond第小时通知一次TODO List

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 通过crond第小时通知一次TODO List
# 查看当前定时任务
crontab -l

# 创建定时任务要执行的脚本
cat > ~/todo_list.sh << 'EOF'
termux-notification -t "org-agenda" --action "bash -l -c 'termux-dialog confirm -t TODO -i \"$(grep -R "\** TODO " ~/org/* | grep -v "list" | sed 's|\(^.*.org:\)\(.*\)|\2|g' | sort)\"'"
EOF
# 每次执行会清空其他任务,然后再加入当前任务
echo "0 * * * * bash ~/todo_list.sh" | crontab -
# 如果要追加任务,可以这样做
(crontab -l; echo "0 * * * * bash ~/todo_list.sh") | crontab -

# crontab任务时间格式如下
<<'CONTENT'
,*    *    *    *    *
-    -    -    -    -
|    |    |    |    |
|    |    |    |    +----- 星期中星期几 (0 - 6) (星期天 为0)
|    |    |    +---------- 月份 (1 - 12) 
|    |    +--------------- 一个月中的第几天 (1 - 31)
|    +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)
CONTENT