conky
Table of Contents
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 结束
好了,介绍完了,下面是我的截图,祝愉快!
Date: 2011-04-10 00:15:57 CST
HTML generated by org-mode 6.21b in emacs 23