上文才说到了无关紧要的conky,这里还是折腾了一回它。看来已经是严重的"折腾综合症"了。
话说网上很多的conky的天气脚本都不能用了,这回是使用的Yahoo! Weather的rss服务。获取数据之后使用perl进行处理,获取想要的信息。这里实用的是全文字的输出。
先看一张图(右上角可以看见最终的效果):
~/weather.pl文件:
#!/usr/bin/perl
use Switch;
use Encode;
use Text::Wrap;
$code=$ARGV[0];
$what=$ARGV[1];
$file="/tmp/weather.txt";#缓存位置
$update=3600;#更新时间
switch($what){
case "c" {#获取当前天气信息。
&file_op;
while(){
if (/){
if (/= 1000){
my $date=`date -u +%s`;
my $created=`stat -c %Y $file`;
$age=$date - $created;
}
else{
$age=$update+1;
}
}
else{
`touch $file`;
$age=$update+1;
}
if ($age>=$update){
`wget -O - http://weather.yahooapis.com/forecastrss?p="$code""\&u=c" > $file`;
}
open(FILE, $file) or die "Could not open file $file: $!\n";
}
从rss天气服务中可以获取的信息是很多的。这里只是取出了天气状况,温度和湿度。详细的可以参见/tmp/weather.txt里面的信息,适当修改就可以实现大量信息的提取。
使脚本可以被执行:
sudo chmod a+x ~/weather.pl
在conky中使用~/.conkyrc:
${color2}${execi 3600 perl ~/weather.pl CHXX0354 c}
${color2}${execi 3600 perl ~/weather.pl CHXX0354 f}
注意:
调用时的第一个参数(如:CHXX0354)是zip code。你可以在这里查找到。
第二个参数(c或者f)。c表示输出当前天气状况,f表示输出天气预报的内容。
方法参考至这里(注:他这里使用的是直接获取的网页而不是rss,并且里面对html的截断现在已经失效了。),他里面还提到了按照字体方式的输出。
本文由 Bin 创作
ubuntu自带的那个天气只能显示到成都
好像是的,不过那个会比较方便些,不折腾。