一、什么是google-gadget
1. google-gadget:google的桌面小应用
2. 一般窗口不大,看起来很炫(窗口不同区域可设置不同透明度),可以随意移动,叠放,可以显示在普通应用之上(置顶)
3. 想想看,把实时汇率gadget拖到桌面上置顶,你可以一只眼写着文档,一只眼扫着你的股票外汇和期货;打开multinote记事本,列上一天的日程表,随时编辑,而不用在应用之间切来切去……
二、原理及实现
1. 组成
google-gadget由两部分组成:桌面应用程序+gadget引擎
2. 桌面应用程序
1) gg文件
桌面应用程序一般是以.gg为扩展名的文件
gg文件为zip压缩文件,只是扩展名为gg
gg文件可以自己编写,也可以从网上下载
它可以是本地应用,也可以是网络应用,一般网络应用使用https协议连接
实现逻辑的语言用java script
2) 一个桌面应用的组成
a) main.xml 程序主框架实现的xml文件,含界面和函数调用
b) main.js 程序主逻辑实现的java script脚本,主要函数的实现
c) gadget.gmanifest 属性文件,双击它可运行程序
d) en/strings.xml 语言文件,用于本地化
e) background.png 背景图,支持透明背景
f) icon_large.gif 大图标
g) icon_small.gif 小图标
3) 运行gadget桌面应用程序
a) 在window平台上,双击gg文件启动应用(启动前需安装过google桌面
b) 在Linux平台上,双击gg文件启动应用(启动应用前,需先启动引擎)
c) 程序不需要编译,通过引擎运行在各个平台上
4) 使用场景
它可以作为一个独立的应用比如小工具,游戏之类,有其界面中操作;也可以作为漂亮的桌面图标,通过它开启其它应用
3. gadget引擎
1) gadget引擎解析java script和xml文件,并用本平台上的图形程序显示出来
如:在linux平台写桌面应用,一般用gtk/qt这些图形化工具,写代码编译后执行,而gadget应用是用java script编写逻辑,用xml描述界面后,打包成gg文件(不用编译),运行时gadget引擎把它翻译成了gtk或者qt程序,然后运行,它屏蔽了不同平台,不同程序设计语言不同的细节。即使你对某个平台不熟悉,也可以轻松地写程序了。
2) 只要把gadget引擎移植到手机之类的嵌入式系统中,系统就可以运行各种gadget应用,和浏览器比起来,灵活,流量还小,系统资源占用小
三、安装google-gadget
1. Windows
http://desktop.google.com/
点击安装google桌面
2. Linux
按网页 http://code.google.com/p/google-gadgets-for-linux/wiki/HowToBuild 安装
以下是我在安装时遇到的问题,和简要步骤
1) 操作系统
我使用ubuntu 8.04 DVD版,可正常安装
也试过suse, 但是因为编译器版本的差异,总是编不过
2) 下载源码
http://google-gadgets-for-linux.googlecode.com/files/google-gadgets-for-linux-0.10.5.tar.bz2
3) 安装依赖包
$ apt-get install libmozjs-dev libgstreamer-plugins-base0.10-dev libcurl3-openssl-dev libdbus-1-dev libxul-dev
安装时若提示某个包无法安装,可能是系统默认的软件源不包含该软件,需要重新指定软件源
$ vi /etc/apt/sources.list 写入新的软件源
$ apt-get update 使刚设置的软件源生效
以下网站中列出了很多可用的软件源,我试过台湾的那个速度很快
http://hi.baidu.com/leonkuo1984/blog/item/6624fe3db1b4d1e83c6d976d.html
4) 编译
$./configure
$ make; make install
5) 运行gadget引擎
$ ggl-gtk
此时在工具条上能看到四个小方块的图标,点开它的菜单,可以添加gadget和打开侧栏等
四、gadget引擎代码介绍(Linux中源码gtk部分为例)
1. 每个桌面应用开启两个独立gtk窗口(独立窗口),一个窗口是应用的内容,另一个用于显示菜单区域
2. 窗口不同区域显示不同透明度的效果效果通过cairo实现,gtk的基本控制只能设置窗口的异形和整体透明度
3. 代码google-gadgets-for-linux-0.10.5/ggadget/gtk/single_view_host.cc是桌面应用对应gtk窗口的源码,可以通过修改它来改变桌面风格及窗口逻辑
五、写gadget桌面应用程序
1. 创建一个新的gardge应用
1) 教程
http://code.google.com/intl/zh-CN/apis/desktop/docs/Tutorials/GadgetDesigner/index.html
2) 注意
如果有些版本的gadget designer无法自动生成gg包,以使用以下方法
a) 进入新建应用的目录,选中所有文件
b) 点右键,选添加到压缩文件
c) 设置生成压缩文件的位置为上层目录,并指定ZIP压缩
d) 把生成的压缩包扩展名改为.gg,即可正常运行
2. 修改一个已有的gardet应用
1) 教程
http://code.google.com/intl/zh-CN/apis/desktop/docs/Tutorials/ModifyHelloWorld/index.html
2) 用一个应用改出别一应用时,记住要在gadget.gmanifest文件中修改id号,因为同时不能运行两个ID号一样的应用
若没有ID号生成工具,可以google上查关键字”uuid generator”