Cinnamon Develop Extension Start
測試環境
- 「Linux Mint 17 “Qiana” Cinnamon」
- 「Cinnamon 2.2.16」
如何開發「Cinnamon Extension」
終於來到開始寫這篇的階段了,雖然腦海中還有一篇「gjs imports」的議題尚未寫出來,但目前先列到TODO吧。
來練習寫出一個練習的「Cinnamon Extension」吧。
產生「Extension」放置的資料夾
先來到個人「Cinnamon Extension」放置的資料夾「~/.local/share/cinnamon/extensions」,還記得「之前整理出來的路徑」吧。
1 | $ cd ~/.local/share/cinnamon/extensions |
產生「Extension」放置的資料夾,這個由你自己命名,以下只是範例。
1 | $ mkdir hello-notify@home |
進到資料夾1
$ cd hello-notify@home
產生兩個必要的檔案「extension.js」和「metadata.json」。
1 | $ touch metadata.json extension.js |
編輯「metadata.json」
1 | $ vi metadata.json |
「metadata.json」填入以下內容
1 | { |
編輯「extension.js」
1 | $ vi extension.js |
填入以下內容
1 | const Main = imports.ui.main; |
測試
- 啟用「Hello Notify (hello-notify@home)」這個「Extension」,就可以看到效果了。會跳出兩個「訊息視窗」。
- 停用「Hello Notify (hello-notify@home)」這個「Extension」,就可以看到效果了。會跳出一個「訊息視窗」。
還記得怎麼「啟用」和「停用」「Extension」嗎?請參考「這篇」。
另一個範例
不過剛剛那個範例,我在測試的時候,多試可幾次,都會讓我的「cinnamon」「crash」。我也不曉得是為啥。
上面那個只是要引起你興趣。未來開發,還是以下面的「log」版,來顯示「除錯訊息」比較好。
先安裝一個開發的輔助工具
請先安裝「Cinnamon Developer’s Tools」這個「Desklet」,並啟用他。就會出現在桌面上。
會安裝這個工具,是因為我發現預設的「Looking Glass」對「log」好像不是很即時。還好有發現這個工具,不然又要像我以前在「Ubuntu Gnome 14.04」找了老半天,不知道去哪可以看到「log」,雖然「後來有找到了」。
產生「Extension」放置的資料夾
產生「Extension」放置的資料夾「~/.local/share/cinnamon/extensions/hello-log@home」。
1 | $ mkdir ~/.local/share/cinnamon/extensions/hello-log@home -p |
進到資料夾1
$ cd ~/.local/share/cinnamon/extensions/hello-log@home
產生兩個必要的檔案「extension.js」和「metadata.json」。
1 | $ touch metadata.json extension.js |
編輯「metadata.json」
1 | $ vi metadata.json |
「metadata.json」填入以下內容
1 | { |
編輯「extension.js」
1 | $ vi extension.js |
填入以下內容
1 | const Main = imports.ui.main; |
測試
- 啟用「Hello Notify (hello-notify@home)」這個「Extension」。
- 停用「Hello Notify (hello-notify@home)」這個「Extension」。
- 請在剛剛安裝啟用的「Cinnamon Developer’s Tools」,左方有一個「+」的按鈕,按下後會變成「-」,同時會下拉一塊區區域,在「Cinnmon Log」就可以看到剛剛的「log」訊息。
如何找Api
因為對GTK完全不懂,所以我只好採取下面的策略。
- 觀看「人家寫好」的,一些路徑和網址,在「這篇」可以查到。在用關鍵字去查詢和推敲。
- 利用「Looking Glass」,輸入「物件」執行,然後就可以找到function名稱,參考我「這篇」的說明(雖然寫的很雜,還沒時間整理,但還是可參考)。
- 「這裡」可以找到一些「Api文件」。找到後,在用關鍵字再去查網路上的的資料。
- 查看這個作者有關「gjs」的相關文章,我最早接觸到「gjs」是從這個作者的部落格看到的,也是他的文章引起我對「gjs」的興趣的,才會導致我後來會陸續關注「gnome-shell」和「cinnmon」。不過也是這個禮拜才開始有認真的在玩。例如「這篇」可以知道「Mainloop」的用法。還有「這篇」可以了解到「imports」和「module」,「searchPath」的概念,我根據那篇也有做了探索,也同樣紀錄在「這篇」,額外發現了一個「__init__.js」檔,有點類似「Python」的用法。另外「這篇」有簡單介紹「Seed」「Gjs」「GNOME Shell」。