1、什麼是google-gadgethtml
1. google-gadget:google的桌面小應用java
2. 通常窗口不大,看起來很炫(窗口不一樣區域可設置不一樣透明度),能夠隨意移動,疊放,能夠顯示在普通應用之上(置頂)linux
3. 想一想看,把實時匯率gadget拖到桌面上置頂,你能夠一隻眼寫着文檔,一隻眼掃着你的股票外匯和期貨;打開multinote記事本,列上一天的日程表,隨時編輯,而不用在應用之間切來切去……ubuntu
2、原理及實現api
1. 組成
google-gadget由兩部分組成:桌面應用程序+gadget引擎瀏覽器
2. 桌面應用程序網絡
1) gg文件
桌面應用程序通常是以.gg爲擴展名的文件
gg文件爲zip壓縮文件,只是擴展名爲gg
gg文件能夠本身編寫,也能夠從網上下載
它能夠是本地應用,也能夠是網絡應用,通常網絡應用使用https協議鏈接
實現邏輯的語言用java script框架
2) 一個桌面應用的組成curl
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應用,和瀏覽器比起來,靈活,流量還小,系統資源佔用小
3、安裝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和打開側欄等
4、gadget引擎代碼介紹(Linux中源碼gtk部分爲例)
1. 每一個桌面應用開啓兩個獨立gtk窗口(獨立窗口),一個窗口是應用的內容,另外一個用於顯示菜單區域
2. 窗口不一樣區域顯示不一樣透明度的效果效果經過cairo實現,gtk的基本控制只能設置窗口的異形和總體透明度
3. 代碼google-gadgets-for-linux-0.10.5/ggadget/gtk/single_view_host.cc是桌面應用對應gtk窗口的源碼,能夠經過修改它來改變桌面風格及窗口邏輯
5、寫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」