最近十分懒惰,只是在看文章,一直没来更新博客。今天有负罪感,所以就来涂两笔。
此前就一直见有人的Ubuntu桌面上面有个很漂亮的系统监视器,后来才知道叫Conky。去项目主页看了一下,觉得好复杂就懒得弄了。后来搜到有个Wizard软件可以傻瓜式配置Conky,但是又有人说不是很好用,有些特性调不出来,作罢。前天不知道怎么想的,突然又来劲了,于是开始啃Conky的Wiki,最后发现,其实Conky的配置非常简单。
Conky的默认配置文件.conkyrc内分两部分,配置和显示。配置部分内主要是编写Conky运行的一些基本参数,例如宽度、默认颜色、默认字体、刷新间隔等等。TEXT行之后进入显示部分的配置。显示的配置也很简单,无非就是“你写什么它显示什么”,“你换行它也换行”。然后在一些重要数值的位置,用Conky的变量填充进去就可以了。例如显示计算机的名称和内核版本:
TEXT
Hostname: $nodename
Kernel: $kernel
完了。$nodename和$kernel就是两个Conky的内置变量,前者显示机器名称,后者显示内核版本。全部的内置变量可以去Conky的Reference内查找。这里先贴一个我的Conky的截图:
见http://www.linuxidc.com/Linux/2011-02/32508.htm
对应的我的.conkyrc文件:
update_interval 1.0 # 更新时间间隔
double_buffer yes # 双缓存,解决Conky闪烁问题
use_xft yes # 自定义字体
xftfont DejaVu Sans Mono:size=9
maximum_width 300 # Conky最大宽度像素值
default_color gray # Conky默认颜色
alignment top_right # Conky默认位置
#draw_outline yes # 绘制文本、图案的轮廓线
# 解决Conky和桌面图标的冲突问题
own_window yes
own_window_type override
own_window_hints undecorated
own_window_transparent yes
TEXT
# 系统信息总览
${color white}${font :bold:size=12}[SYSTEM] $font$color $alignr$time
Hostname: $alignr $nodename
Kernel: $alignr $kernel
Uptime: $alignr $color $uptime
System load: $alignr $loadavg
Running Processes: $alignr $running_processes/$processes
Running Threads: $alignr $running_threads/$threads
# 显示当前四核CPU的频率、使用率的数值和示意图
${color white}${font :bold:size=12}[PROCESSORS] $font$color ${execpi 8 sensors
| grep 'Core 0' | cut --characters
14-21} ${execpi 8 sensors | grep 'Core 1' | cut --characters 14-21}
Core 1: ${freq_g 1}GHz (${cpu cpu1}%)
${alignr 100}${cpubar cpu1}
Core 2: ${freq_g 2}GHz (${cpu cpu2}%)
${alignr 100}${cpubar cpu2}
#Core 3: ${freq_g 3}GHz
(${cpu cpu3}%) ${alignr 100}${cpubar cpu3}
#Core 4: ${freq_g 4}GHz
(${cpu cpu4}%) ${alignr 100}${cpubar cpu4}
# 列出排名前五的CPU消耗进程
${font :bold:size=9}Name $alignc PID $alignr CPU $font
${top name 1} $alignc ${top pid 1} $alignr ${top cpu 1}%
${top name 2} $alignc ${top pid 2} $alignr ${top cpu 2}%
${top name 3} $alignc ${top pid 3} $alignr ${top cpu 3}%
${top name 4} $alignc ${top pid 4} $alignr ${top cpu 4}%
${top name 5} $alignc ${top pid 5} $alignr ${top cpu 5}%
# 显示计算机当前内存的使用情况
${color white}${font :bold:size=12}[MEMORY] $font:$color $mem/$memmax - $memperc%
${membar}
# 列出排名前五的内存消耗进程
${font :bold:size=9}Name $alignc PID $alignr RAM $font
${top_mem name 1} $alignc ${top_mem pid 1} $alignr ${top_mem mem 1}%
${top_mem name 2} $alignc ${top_mem pid 2} $alignr ${top_mem mem 2}%
${top_mem name 3} $alignc ${top_mem pid 3} $alignr ${top_mem mem 3}%
${top_mem name 4} $alignc ${top_mem pid 4} $alignr ${top_mem mem 4}%
${top_mem name 5} $alignc ${top_mem pid 5} $alignr ${top_mem mem 5}%
# 显示磁盘的使用情况,并且显示磁盘使用示意图
# 因为只分有两个区,所以只显示/和/home的磁盘使用情况
${color white}${font :bold:size=12}[HDD] $font$color
/ $alignr ${fs_used /} of ${fs_size /}
(${fs_used_perc /}%)
${fs_bar /}
/home $alignr ${fs_used /home} of ${fs_size /home}
(${fs_used_perc /home}%)
${fs_bar /home}
swap $alignr $swap of $swapmax ($swapperc%)
$swapbar
# 显示网络使用情况
${color white}${font :bold:size=12}[NETWORK] $font$color
IP address: $alignr${addr eth0}
Download: $alignr ${downspeed eth0}/s
Upload: $alignr ${upspeed eth0}/s
# 天气预报
${color white}${font :bold:size=12}[WEATHER] $font$color $alignr ${execi 1800 conkyForecast -l
FRXX0141 -d CN},${execi 1800 conkyForecast -l
FRXX0141 -d CO}
${font ConkyWeather:size=50}${execi 1800 conkyForecast -l
FRXX0141 -d WF}$alignc${font ConkyWind:size=50}${execi 1800 conkyForecast -l
FRXX0141 -d BS}$font
# 当前日期的天气情况汇报
Condition: $alignr${execi 1800 conkyForecast -l FRXX0141 -d
CC}
Temperature: $alignr${execi 1800 conkyForecast -l FRXX0141 -d
HT}
Humidity: $alignr${execi 1800 conkyForecast -l FRXX0141 -d
HM}
Wind speed: $alignr${execi 1800 conkyForecast -l FRXX0141 -d
WS}
Sunrise: $alignr${execi 1800 conkyForecast -l FRXX0141 -d
SR}
Sunset: $alignr${execi 1800 conkyForecast -l FRXX0141 -d
SS}
Last update: $alignr${execi 1800 conkyForecast -l FRXX0141 -d
LF}
# 今后四天的天气情况汇报
${execi 1800 conkyForecast -l FRXX0141 -d
DW -s 1 -e 4 -w -c 9}
${font ConkyWeather:size=30}${execi 1800 conkyForecast -l
FRXX0141 -d WF -s 1 -e 4 -c 3}$font
${execi 1800 conkyForecast -l FRXX0141 -d
HT -s 1 -e 4 -c 9}
${execi 1800 conkyForecast -l FRXX0141 -d
LT -s 1 -e 4 -c 9}
这里唯一麻烦一点的就是气象预报的显示。首先你需要安装conkyForecast包:
sudo add-apt-repository ppa:conky-companions/ppa sudo apt-get update sudo apt-get install conkyforecast
然后把ConkyForecast目录下的配置文件样本复制到你自己的个人目录内,默认隐藏:
cp /usr/share/conkyforecast/conkyForecast.config ~/.conkyForecast.config
ConkyForecast的气象信息都是去www.weather.com这个网站上面读取的。先去这个网站申请一个帐号,然后去服务页面申请一个Weather XML Data Feed的服务,免费的。接着很快你就可以收到一个电子邮件,内容一大堆,最重要的是两串字符:Partner ID和License Key。分别填充到XOAP_PARTNER_ID和XOAP_LICENCE_KEY里面。
然后还需要你所在地区的代码,去气象网首页,在Find Weather的搜索栏里面输入你所要搜索气象的地区的名称,例如我搜杭州的,就是Hangzhou, China。如果网站成功搜到地区,则会显示该地区的气象,然后在浏览器里面的地址栏里面,就会显示该地区的代码:http://www.weather.com/weather/today/CHXX0044,杭州的代码就是CHXX0044,留着一会儿有用。
现在在你的.conkyrc文件里面需要插入气象的地方,插入:
${execi 1800 conkyForecast -l FRXX0141 -d WF}
1800是刷新事件,也就是30分钟刷新一次。频率不用太高,因为气象网站上面的气候是1小时刷新一次的。l参数后面跟的就是地区代码,d参数指定数据返回类型。如果需要查看所有数据类型,就在终端内输入:
conkyForecast --help
conkyForecast的气象图标实际是一种字体,所以想要显示对应天气的图标,只需要设置好字体就可以了,所以此前那条命令的完整格式是:
${font ConkyWeather:size=50}${execi 1800 conkyForecast -l FRXX0141 -d WF}$font
也就是使用50号的ConkyWeather字体来显示当前的天气情况,这样Conky就会显示对应的天气图标了。所需的字体文件都被安装在/usr/share/fonts/truetype/下。对字体的使用有一定的要求,并不是任何字体都适用于任何数据类型。按照作者自己的说法:
- ConkyWeather字体适用于WF类型;
- Arrows字体适用于BF类型,用于显示风向;
- ConkyWind,ConkyWindN和ConkyWindNESW适用于BF或者BS类型,也是显示风向;
- Moon Phases字体适用于MF类型,用来显示月相。
我的天气设置可以在上面的.conkyrc文件末尾处找到。不是很难理解的。
唯一需要注意的就是:启动Conky之后,你可以一边修改配置文件,一边直接观察效果。Conky可以检测到配置文件的变动,然后刷新显示。但是如果你在Conky启动以后安装了ConkyForecast,并且开始配置气象预报等等,你需要重启启动一次Conky,不然即便你的气象配置都是正确的也是无法正常显示气象信息的。
最后就是制作一个启动脚本,每次系统启动的时候,自动启动Conky了:
sleep 10 killall conky conky -c /home/shouyanbo/.conkyrc exit
我这里设置的是先等待10秒钟,等你的桌面加载完毕之后再启动Conky,将这个文件保存为start_conky.sh到你喜欢的目录,然后为其赋予执行权:
chmod u+x start_conky.sh
然后去你的桌面菜单:“系统” → “首选项” → “启动应用程序”,把这个脚本添加进去就可以了。试着“注销”,然后重新登录登录看下效果,一般来说是木有问题的了。
P.S. 一直很烦新版Ubuntu里面面板上那个Indicator的插件。就是可以同时聊天、收发邮件、泡虚拟社区的东东。三项功能集合在一起,本来是一个挺好的创意。但是聊天使用的是Empathy,邮件用的Evolution,虚拟社区那个是叫硅什么玩意儿的。最后那个没用过不好说,其他两个真的很垃圾。聊天不敌emesene,邮件不及雷鸟。还有那个至今不是很明白的Ubuntu Me还是什么的插件。好像是你的Ubuntu的ID也可以用来聊天或者如何,可以设置状态等等,一点用没有。所以以上两个东西可以直接毙掉,净化桌面:
sudo apt-get remove indicator-messages sudo apt-get remove indicator-me sudo apt-get remove evolution sudo apt-get remove empathy sudo apt-get autoremove killall gnome-panel
搞定……