zoukankan      html  css  js  c++  java
  • 用 conky 记录 TODO

    conky

    1 前言

    本来一直认为 conky 没多大用处,反而会影响我的注意力,但用 FVWM 之后发现看时间不太方便,就决定重新使用 conky,配置了一下发现还不错。另外感觉 Emacs 下的 Org 的 TODO 很不错,就写了一个脚本,可以跟 conky 配合显示待办事项。

    2 conky配置

    先给出我的 .conkyrc 文件,其实就只实现了显示时间的功能,本来可以显示天气的,但校园网真的很不给力,每次打开都要 n 长时间,就去掉了。

    background no
    cpu_avg_samples 2
    net_avg_samples 2
    out_to_console no
    use_xft yes
    xftfont Monospace:size=8
    own_window_transparent no
    xftalpha 0.8
    mail_spool $MAIL
    update_interval 1
    own_window yes
    own_window_transparent yes
    own_window_hints undecorated,below,skip_taskbar
    own_window_type override
    double_buffer yes
    minimum_size 260 5
    maximum_width 250
    draw_shades no
    draw_outline no
    draw_borders no
    stippled_borders no
    border_width 1
    default_shade_color black
    default_outline_color green
    gap_x 10
    gap_y 145
    alignment top_right
    use_spacer none
    no_buffers yes
    uppercase no
    TEXT
    ${color gold}${font 方正少儿_GBK:size=30}${alignc}FVWM${font}${color}
    ${color #238EEB}${hr 2}${color}
    ${font DS\-Digital:style=Bold:size=45}${color #000000} ${time %l:%M:%S}${font}${color}
    ${color #08CEEB}${font 方正少儿_GBK:size=12}${alignc}${time %b%d 星期%a}${color}${font}
    ${color #03CEEB}${hr 1}${color}
    ${color green}${font 方正少儿_GBK:size=16} ${alignc}小呼的桌面${font}${color}
    ${color #038EEB}${hr 5}${color}
    ${color gold}${font FZShaoEr\-M11:size=12}${alignc}------------- ${color #0E8EEB}TODO ${color gold}-------------${font}${color}
    ${color green}${font 方正少儿_GBK:size=14}${execpi 3 cat -n ~/.todolist}${color}

    3 使用 TODO

    我把待办事项放在了家目录下的 .todolist 中,用 todo 命令维护其中的待办事项。

    3.1 todo 脚本

    下面是 todo 脚本的内容(不懂shell编程,可能写得比较差,但功能是实现了):

    ,#!/bin/bash
    case $1 in
    "-s") # 长期任务
    shift
    task=$*
    while [[ $# > 0 ]]; do
    echo "$""{color orange}" $1 "$""{color green}" >> ~/.todolist
    shift
    done
    echo "成功添加任务:$task"
    ;;
    "-d") # 按字符串删除
    t=`sed -n /$2/p ~/.todolist`
    if [ "$t" != "" ]; then
    echo "要删除任务 \""$t"\"吗? 是(y)/否(n)"
    read answer
    if [ $answer \= "y" ]; then
    sed -i /$2/d ~/.todolist
    echo "Task deleted."
    else
    echo "Task not deleted."
    fi
    else
    echo "不存在这个任务。"
    fi
    ;;
    "-dl") # 按行删除
    shift
    task=$*
    while [[ $# > 0 ]]; do
    sed -i $1s/.*// ~/.todolist # 将选中行变为空行
    shift;
    done
    sed -i /^$/d ~/.todolist # 删除空行
    echo "成功删除任务:$task" ;
    ;;
    "-m") # 按字符串标记为完成
    shift;
    task=$*;
    while [[ $# > 0 ]]; do
    sed -i /$1/s/green/red/ ~/.todolist #将绿色(待办)改成红色(完成)
    shift;
    done
    echo "成功标记任务:$task" ;
    ;;
    "-ml") # 按行标记为完成
    shift;
    task=$*;
    while [[ $# > 0 ]]; do
    sed -i /$1/s/green/red/ ~/.todolist #将当前行的绿色(待办)改成红色(完成)
    shift;
    done
    echo "成功标记任务:$task" ;
    ;;
    "-a") # 添加新任务,每次可以增加多个,可以包含空格(要用'\'转义)
    shift
    task=$*
    while [[ $# > 0 ]]; do
    echo "$""{color green}" $1 "$""{color green}" >> ~/.todolist
    shift
    done
    echo "成功添加任务:$task" ;
    ;;
    *) # 同上
    task=$*
    while [[ $# > 0 ]]; do
    echo "$""{color green}" $1 "$""{color green}" >> ~/.todolist
    shift
    done
    echo "成功添加任务:$task"
    esac
    ,#done

    将上面内容复制到一个 todo 文件中,给它可执行权限,再放到 /usr/bin 目录即可:

    chmod +x todo
    sudo mv todo /usr/bin

    3.2 todo 使用

    下面是todo脚本的用法,其实脚本里已经写行很清楚了:

    参数用法
    -d item 删除与item匹配的项
    -dl l1[l2,l3…] 删除第l1[l2、l3…]项
    -m item 将与item匹配的项标记为完成(红色)
    -ml l1[l2,l3…] 将第l1[l2、l3…]项标记为完成(红色)
    -s item 增加一个待办项目(橘黄色,表示长期项目)
    -a item1[item2、item3…] 增加项目item1[item2、item3…],(绿色,表示小型项目)
    item1[item2、item3…] (无参数)同上,增加项目(绿色)

    4 一个问题

    如果从源里安装,或者编译时用 conky 的默认代码,我们的 TODO 功能并不能显示多少项目的, 因为 conky 的 execpi 的文本缓冲区默认是256个字节,所以我们要修改一下代码, 将conky的源码包解压(我用的是1.8.1版), 在 src 文件夹中的 conky.c 中,将415行(1.8.1版本):

    unsigned int text_buffer_size = DEFAULT_TEXT_BUFFER_SIZE ;
    改为:
    unsigned int text_buffer_size = DEFAULT_TEXT_BUFFER_SIZE * 10 ;
    这样就将缓冲区增大到原来的 10 倍,应该够用了。编译安装。

    5 结束

    好了,介绍完了,下面是我的截图,祝愉快!

    本文

    Author: Hu Wenbiao <huwenbiao@Ubuntu>

    Date: 2011-04-10 00:15:57 CST

    HTML generated by org-mode 6.21b in emacs 23

  • 相关阅读:
    【Demo 0062】文件遍历
    【Demo 0068】获取分区信息
    【Demo 0060】记录个人信息
    【Demo 0069】文件读写
    【Demo 0064】监控文件/目录变更
    【Demo 0067】文件类型关联图标
    【Demo 0065】获取被修改的文件/目录
    【Demo 0062】目录及文件基本操作
    【Demo 0061】打开与保存文件
    【Demo 0066】监控被变更文件/目录(完成端口)
  • 原文地址:https://www.cnblogs.com/Open_Source/p/2011000.html
Copyright © 2011-2022 走看看