个人配置笔记,如有转载,请注明作者和出处。
——by realasking
先来一个效果:
很久很久以前,曾经用过很长一段时间的conky,那是一个类似于服务一样的启动后驻留的可以提供系统状态监控的小工具。它可以将系统配置、应用、运行进程以自动而直观的形式显示在桌面上,而且支持扩展,可以通过lua或shell脚本,连接系统中的各种程序、调用cairo图形库等,将用户想显示在桌面上的东西一目了然的显示出来。曾几何时,Linux平台上的日历功能非常弱小,我就自己写过一套脚本来进行日程安排,同时,修改过一个网上的农历程序以便自己使用,并且我曾结合conky,以实现桌面上的自动显示和到时提醒,另外,conky还曾被我结合mutt等软件当做邮件提醒工具使用,自己也完善过一个天气预报的脚本——当时感觉,conky既方便,又强大。唯一的怨念是它内存的泄露问题:无论怎么修改脚本,只要使用了lua,就一定会泄露,而且图形功能用得越多越严重——持续很久,这一问题未能解决,国内免费天气预报的API一度一茬儿一茬儿的关,自己被弄得不胜其烦,而同时的智能手机发展却非常迅速,几年时间里,日历、天气、邮件功能都成熟得很了——最终,我放弃了conky。
虽然心中还怀念着方便的系统监控,以及电脑右边的widgets的调调儿,也曾一度想重新配置conky,却发现其语法已经发生改变,而且当时没有能成功完成支持lua和cairo的conky版本的编译,于是只好暂歇了心思。
又过了一段时间。前几天,却偶然间发现了一个只用于kde5平台的监控工具,叫做awesome-widgets,试用一下,发现其简洁明了,支持脚本扩展和函数操作,又有图形前端的支持,上手方便,就很快做了配置,使用了起来。在使用中,发现其手册写得过于简易,有些应注意的地方并未提及,未免今后遗忘,就想做个记录。
1.该程序的部件窗口点击应用按钮只是保存设置,并不会刷新widgets,需要点击确定才可以
2.该程序自带的天气,如果选择使用图形,则$weatherN是不能在函数中return回来的,只有不勾选使用图形时方可
3.对于需要二次登录的环境,不能使用$netdev是否为lo来判断网络是否连接,必须自行构造脚本来判断
4.通过return来定义变量值颜色的时候,<span>变量</span>中,变量的周围最好不要有空格,否则可能输出不了变量
5.要让监控像conky常见的那样换行显示,需要在高级设置中勾选自动换行,同时不勾选启用自动换行
6.如果自定义脚本的输出要用于显示,则需要输出为<span ...>值</span>这样的形式,如果要用于判断,或者用在函数里,则输出的直接是值
例如,假设是用bash脚本输出本地城市,若要直接显示,则可以输出为:
echo "<span style=\"color:#479e34;\">$cityname</span>"
若要输出出来再在函数中处理,则脚本的输出是:
echo "$cityname"
下面是自己做的几个扩展脚本:
1.获取linux发行版名称,及当前用户信息:
#!/bin/bash
#obtain Linux distribution name and user information
#by realasking
AA=`lsb_release -a|grep Description|cut -d":" -f2|xargs`
me=`whoami`
hn=`hostname`
echo "<span style=\"color:#6b97ff;\">$AA</span><span style=\"color:#479e34;font-size:9pt;\"><i> $me@$hn </i></span>"
2.获取城市名称:
#!/bin/bash
#obtain cityname
#by realasking
site1="myip.opendns.com"
site2="@resolver1.opendns.com"
externalip=`dig +short $site1 $site2`
cityname=`geoiplookup $externalip|awk '{if(NR==1) print $5;else if(NR==2) print $8;}'|xargs|sed 's/,//g'|awk '{print $2,$1}'`
#echo "<span style=\"color:#479e34;\">$cityname</span>"
echo "$cityname"
3.结合colunar输出,显示中国农历
#!/bin/bash
#display chinese traditional calendar
#by realasking
gz=`colunar |grep "干支"|cut -d" " -f2`
gz2=`colunar |grep 干支|cut -d" " -f3`
gz3=`colunar |grep 干支|cut -d" " -f4`
gz4=`colunar |grep 干支|cut -d" " -f5`
yl1=`colunar |grep 阴历|cut -d" " -f4`
yl2=`colunar |grep 阴历|cut -d" " -f5`
echo "<span style=\"color:#ff0000;font-size:12pt;\">$gz</span><span style=\"color:#479e34;font-size:12pt;\"> $gz2 </span><span style=\"color:#ff9125;font-size:12pt;\"> $gz3 </span><span style=\"color:#0000ff;font-size:12pt;\"> $gz4 </span>"
echo "<b><span style=\"color:#b8860b;font-size:12pt;\"> $yl1</span><span style=\"color:#b8860b;font-size:12pt;\">$yl2 </span></b>"
4.获取Intel cpu信息(需要intel parallel suite)
#!/bin/bash
#cpu info
#by realasking
intel_home="/opt/intel/composer_xe_2013_sp1.0.080/mpirt/bin/intel64"
AA=`$intel_home/cpuinfo -g|grep "Processor name"|awk '{for(i=4;i<=NF;i++){printf $i" "}}'`
echo "<span style=\"color:#d0922f;\">${AA} </span>"
5.检查网络是否连通,二次登录网络可以使用
#!/bin/bash
#net stat
#by realasking
site1=`dig +short www.baidu.com|grep -v "[A-Za-z]"|head -n 1`
if [ "$site1"x = x ];then
stat=0
else
stat=1
fi
echo "$stat"
配置文件中的功能实现方法:
1.显示cpu频率,根据频率变化色彩不同:
CPU频率:${{
function colorCpufq()
{
if ($cpucl > 2500)
return "<span style=\"color:#ff0000;\">$cpucl</span>"
else
if($cpucl>2400)
return "<span style=\"color:#ffaa00;\">$cpucl</span>"
else
if($cpucl>1600)
return "<span style=\"color:#6b97ff;\">$cpucl</span>"
else
return "<span style=\"color:#479e34;\">$cpucl</span>"
}
colorCpufq()
}} MHz
2.显示连接的网络和网速:
网络连接:${{
function colornet()
{
return "<span style=\"color:#6b97ff;\"> $netdev</span><span style=\"color:#d0922f;\"> $down</span>/<span style=\"color:#479e34;\">$up</span>"
}
colornet()
}} KB/s
3.如果网络连接处于连通状态,则输出城市和天气信息:
${{
function nettest()
{
if($custom7==1)
return "<span>城市:</span><span style=\"color:#479e34;\">$custom6</span>"
else
return ""
}
nettest()
}}
${{
function nettest2()
{
if($custom7==1)
return "<span>天气:</span>$weather1<span>气温:</span>$temperature1<span>°C</span>"
else
return ""
}
nettest2()
}}