终于打通任督二脉! 把org日程显示在i3blocks上的脚本

这个脚本的一些参数是按我自己的需要显示的, 需要的可以自己改里面的参数.

下面这个脚本的功能:

  1. 没有3天内的任务时,显示"NOTHING TODO

  2. 3天内到期的任务用红色显示.

  3. 当不止一个任务时自动轮询任务.时间间隔由i3blocks的刷新间隔控制.

     #!/bin/bash
     [ ! -f /tmp/todo ] && echo 0 > /tmp/todo
     n=$(cat /tmp/todo)
     n=$(expr $n + 1)
     echo $n > /tmp/todo
     todo=$(emacs \
                --batch\
                --user\
                $USER\
                --eval "(progn (org-agenda-list nil nil 'week) (write-file \"/dev/stdout\"))" \
                2> /dev/null\
                | grep "^ .*"\
                | grep -v "Deadline"\
         )
     lines=$(echo "$todo" | sed '/^$/d' | wc -l)
     if [[ 0 -eq $lines ]]; then
         echo "NOTHING TODO"
         echo
         echo \#00FFFF
         exit
     fi
     if [[ $n -gt $lines ]]; then
         n=1
         echo 0 > /tmp/todo
     fi
     text=$(echo "$todo" | head -n $n | tail -n 1)
     text=$(echo "$text" | sed 's/.*my-todo: *//')
     days=$(echo "$text" | sed 's/.*In *\(.*\)\s *d.*/\1/')
     text=$(echo "$text" | sed 's/.*TODO \(.*\)/\1/')
     echo "[$n/$lines] ${days}d $text"
     echo
     if [[ $days -le 3 ]]; then
         echo \#FF0000
     else
         echo \#00FFFF
     fi
1 个赞