2011年9月18日星期日

在 N900 状态栏上显示中文星期几以及 openvpn 连接状态

众所周知俺是很弱智的每次用到英文星期几都要 Sunday,Monday... 这样数下去才知道谁是谁。 N900 用英文界面方便 google ,看星期几费劲是我唯一的不爽之处。以前在桌面上搞了一个中文星期几,但是开着窗口就看不见,用处不大。
我本来的实现思路是把 active-desktop-sp 的源代码扒出来,图改一下,把里面定义当前桌面序号的语句改成今天星期几,编译打包安装,真的不难。不过这程序是 C 写的,一想到要搭编译环境我的脑袋就大了三圈,于是一放就放到今天。
这两天其实一直在折腾基于 Queen Beecon 的雅虎天气插件,前人写得七七八八了,我主要拿来练习 awk/sed/grep 的。改进之一是把可能用到的图片都存到本地了,用的时候不需要 wget ,只要把解析出来的图片名做个符号链接就好,算是用磁盘空间换了时间和流量,蛮符合国情的。
今天突然福至心灵,我定了每天早晨起床的闹钟, advanced-clock-plugin 可以在状态栏上显示一个刺眼的大红点或者自定义的闹铃提示图片。不过因为一直没有大小合适的图片,我都把这个功能禁用的。定制一套闹铃提示图片,用脚本做符号链接,每天 0 点刷新就可以了。另外 openvpn-applet 不提供命令行接口,每次点菜单太麻烦,我早就卸载了,可是上网的时候状态栏没有个翻墙指示器,还真是挺不爽的。正好我 advanced-clock-plugin 设置成上下两行显示日期和时间,星期几也只占状态栏一半的高度,剩下的部分就给 openvpn 的图标了,无非在 /etc/init.d/openvpn 里最后的退出语句之前加上一句调用刷新图片的脚本而已。
图标做了十四个,大小是 16*36 ,星期一到星期天, openvpn 开/不开。
判断 openvpn 是否开启的标准是 /var/run/openvpn.*.pid 是否存在——我开始走了一点弯路,判断条件用的是 pgrep -f "/usr/sbin/openvpn" ,启动没问题,停止的时候明明 vpn 已经关了但是进程还会存在几秒,图标刷新的结果就错了。看 /etc/init.d/openvpn 里开启 vpn 会在 /var/run/ 里创建文件,关闭的时候先删它们,拿它们当判断标准就好了。
闹铃图片修改之后不会自动刷新。去看 advanced-clock-plugin 的代码,还好驱动的脚本都是 python 的。刷新的条件不少,最容易做到的就是选上"每个桌面用独立的时钟设置",然后切换一下桌面。这两个动作都可以用 gconftool 做到,后一个甚至可以用 gconftool -s /apps/osso/hildon-desktop/views/current -t int $(gconftool -g /apps/osso/hildon-desktop/views/current) 切换到自己,什么也不影响~改好刷新脚本。搞定~灭哈哈~
--

没有评论:

发表评论