用户工具

站点工具


software:c:conky

Conky

本文谈一下 conky 的设置,包括为 conky 获取天气情况。

为何选用 Conky?

Conky 是一个非常强大的系统监视工具(是torsmo的后继者,比torsmo好),可以在桌面上实时地显示你想要的内容,简直就是传说中的“水晶球”。你可以实时地看到 CPU 的使用情况,音乐播放器 MPD 的情况,或者当地的天气情况等等,是懒人必备之工具。

我喜欢开机就听到今天需要做的事情和今天的天气预报,它们的内容也能biu地一下显示于桌面上,于是就有了下面的小玩意儿:我要求 conky 每隔两小时报一下天气和提醒我做某些事情,将 MPD 的基本情况显示于桌面上等等。如果不喜欢机器频繁汇报打扰主人,也可以修改 .conkyrc 中语音提示那几行命令,天气预报的更新时间也可以根据需要自己设定。

Conky 的设置

在安装 conky 注意,WITH_XFT 和 WITH_MPD 项一定要选上,否则 conky 就不能显示中文和管理 MPD 了。譬如,FreeBSD 的用户可以在 /usr/ports/sysutils/conky 下键入命令:

make WITH_XFT=yes WITH_MPD=yes install clean

有时候用 portupgrade 升级软件包的时候需要注意这些配置(configuration),我就遇到过一次升级 conky,升级后 conky 不能识别 mpd 的状态。找了许久原因,后来简单地 make deinstall clean 了 conky,重新正确地安装一次就搞定了。


Conky 的中文化

这里要说明的是 conky 的中文化,必须支持 xft、并用 utf-8 编码。 安装 conky 时,别忘记加 WITH_XFT=yes 选项。在配置文件 .conkyrc 中,有关xft 的选项都是 yes。其他出现在 TEXT 部分的中文,想要正常显示,也必须是 utf-8 编码。可以在 Emacs 下编辑 .conkyrc,键入命令 C-x RET-f,然后键入 utf-8 保存即可。


Conky 的主要设置

我的~/.conkyrc 中对 TEXT 的那部分设置如下,见 效果图

TEXT
${color green}时间 ${alignc}${color yellow}${time %H:%M:%S} ${alignr}${color yellow}${time %Y年%b月%d日星期%a}${color}

${color green}系统情况${alignr}$color${alignr} 登录名: ${color #0077ff}$nodename$color
   CPU 使用率:${color #0077ff} $cpu% $alignr${color}CPU 温度:${color #0077ff} ${acpitemp}C
   ${cpugraph 000000 e818e7}$color
   剩余电量:${color #0077ff} ${battery}$color
   机器用时:${color #0077ff} $uptime$color $alignr${color}

${color green}内存消耗 $color${alignr} 使用率:${color #0077ff} $mem/1GB = $memperc%$color
   程序 ${alignr 55}PID ${alignr 25}CPU% ${alignr}MEM%
   ${color #0077ff}${top_mem name 1} ${alignr 40}${top_mem pid 1} ${alignr 20}${top_mem cpu 1} $alignr${top_mem mem 1}
   ${color #0077ff}${top_mem name 2} ${alignr 40}${top_mem pid 2} ${alignr 20}${top_mem cpu 2} $alignr${top_mem mem 2}
   ${color #0077ff}${top_mem name 3} ${alignr 40}${top_mem pid 3} ${alignr 20}${top_mem cpu 3} $alignr${top_mem mem 3}

${color green}网络连接 $color${alignr}IP 地址: ${color #0077ff}${addr em0}${color}
   上传速度 ${alignc}下载速度 ${alignr}下载总量
   ${color #0077ff}${upspeed em0} ${alignc}${downspeed em0} ${alignr}${totaldown em0}$color

${color green}FREEBSD 提示 ${hr 2}$color
${execi 120 fortune freebsd-tips | fold -w 37}

TEXT部分可以根据自己的需求设置,譬如下面的每隔两个小时提醒我要做的事情。

TEXT
${color green}System Status $color
  |
  +-- Uptime:${color #cc2222} $uptime $color
  +-- CPU Usage:${color #cc2222} $cpu% ${cpubar} $color
  +-- RAM Usage:${color #cc2222} $mem/$memmax - $memperc% $color
  +-- Adapter status:${color #cc2222} $apm_adapter $color
  +-- Battery life:${color #cc2222} $apm_battery_time - $apm_battery_life
${execi 7200 festival --tts /tmp/.VoiceRemind}
${color green}Music Player Daemon $color
  |
  +-- MPD Status:${color #cc2222} $mpd_status $mpd_elapsed/$mpd_length $color
  +-- Artist:${color #cc2222} $mpd_artist - $mpd_title $color
  +-- Process:${color #88aadd} $mpd_percent% $mpd_bar $color
  +-- Volume:${color #cc2222} $mpd_vol
${execi 7200 festival --tts /tmp/weather.txt}
${color green}Beijing Weather of${execi 7200 ~/.conky/weather.sh Time} $color
  |
  +-- Sky:${execi 7200 ~/.conky/weather.sh Sky}
  +-- Temperature:${execi 7200 ~/.conky/weather.sh Temperature}
  +-- Wind:${execi 7200 ~/.conky/weather.sh Wind}

为 Conky 自动获取天气信息

这里的 weather.sh 是一个自动从 http://weather.yahoo.com 获取天气信息的脚本(用英文显示天气情况,中文的见后),存放在 ~/.conky/ 里(也可存放于其他地方,.conkyrc 里 weather.sh 路径就需修改)。weasher.sh具体内容如下:

#!/usr/local/bin/bash
# Get weather information from Yahoo
# By IOU, Feb-10-2007
# The link is for the city of Beijing

link=CHXX0008.html
weather=/tmp/weather.txt
temporary=/tmp/temporary.txt
location=http://weather.yahoo.com/forecast/$link

lynx -accept_all_cookies -dump $location > $weather
begin=`cat -n $weather | grep "How to Read This" | cut -d ' ' -f4`
end=`expr $begin + 2`

head -n $end $weather > $temporary
tail -n 2 $temporary > $weather
cat $weather | cut -d "*" -f2 > $weather
rm -f $temporary

case $1 in
time)
    head -n 1 $weather | cut -d : -f1
    ;;
sky)
    head -n 1 $weather | cut -d : -f2 | cut -d . -f1
    ;;
temperature)
    head -n 1 $weather | cut -d . -f2
    ;;
wind)
    head -n 1 $weather | cut -d . -f3 | cut -d ' ' -f 3,5-8
    ;;
Time)
    tail -n 1 $weather | cut -d : -f1
    ;;
Sky)
    tail -n 1 $weather | cut -d : -f2 | cut -d . -f1
    ;;
Temperature)
    tail -n 1 $weather | cut -d . -f2
    ;;
Wind)
    tail -n 1 $weather | cut -d . -f3 | cut -d ' ' -f 3,5-8
    ;;
*)
    exit
    ;;
esac

我这里所选的城市是“Beijing”,也可以选其他的城市,不过link的内容就要随选择而定了。下面再提供一个weather.sh脚本,它是从google抽取北京的天气情况,中文显示结果。

#!/usr/local/bin/bash
# Purpose : Get weather information of Beijing from google
# Author  : IOU
# Date    : Feb-10-2007
# File    : weather.sh

URL=http://www.google.cn/search?q=tq+%B1%B1%BE%A9
weather=/tmp/weather.txt

lynx -accept_all_cookies -dump $URL > $weather
cp -f $weather /tmp/MyTmp1

end=`cat -n /tmp/MyTmp1 | grep "湿度" | cut -d " " -f5`
head -n $end /tmp/MyTmp1 > /tmp/MyTmp2
tail -n 4 /tmp/MyTmp2 > /tmp/MyTmp1
cat /tmp/MyTmp1 | cut -d " " -f4- > /tmp/MyTmp2

iconv -f gbk -t utf-8 /tmp/MyTmp2 > $weather   # 转化为utf-8编码

rm -f /tmp/MyTmp*
more $weather
/data/vhosts/wiki-data/pages/software/c/conky.txt · 最后更改: 2011/12/07 07:22 由 IOU