當前位置: 首頁>>技術教程>>正文


gnome shell 擴展開發的文檔?

,

問題描述

我一直想開發一些 Gnome Shell 擴展,因為它們隻是在 javascript 中,但是我一直在尋找並且幾乎零文檔,在我看到的任何地方人們隻是說使用基本的 Gnome 文檔,但這沒有幫助,我可以找不到任何關於擴展導入的文檔,或任何類型的用於擴展開發的 javascript api,我嘗試查看一些教程(其中大部分是針對 Gnome 3.0,而不是 3.2),但沒有任何幫助。

有誰知道他們是否正在為擴展開發編寫文檔?我真的很喜歡一些好的文檔……

最佳答案

我對演示代碼和教程不滿意的原因是它們引入了一堆隨機導入,並且從不解釋它們是什麽或如何使用它們。我正在構建我自己的答案,其他人可以添加,以便人們可以真正知道他們可以調用哪些函數,可以導入哪些函數等。

有為 Gnome Shell 生成的文檔,但它有點不完整——我找不到我在各種教程、示例和已發布的擴展中看到的大部分內容。

唯一真正可靠的文檔是 Gnome Shell 源代碼本身。根本沒有任何其他 up-to-date 或完整的方法來了解可用的內容。

這兩個起點特別好:

C 源代碼顯示有一個名為 global 的重要對象,它不需要導入,並提供對諸如窗口管理器(包括鍵綁定)、會話信息、可用屏幕等內容的訪問。這是來源:

我想知道如何使用 global.display 對象,目前最好的文檔是 that provided by Alan Knowles

可以通過 GObject 內省綁定導入其他內容,例如:

通常,您可以查看 reference documentation for the various Gnome components 以查找其他導入。

關於窺鏡的注意事項:雖然在窺鏡中使用這些導入有一些怪癖——我浪費了很多時間隻是試圖在運行中進行測試。例如:

const Clutter = imports.gi.Clutter;

…不會工作,因為 Clutter 已經存在。但是之後:

const MyClutter = imports.gi.Clutter;

…也行不通; MyClutter 未定義且無法使用。你必須要做:

MyClutter = imports.gi.Clutter;

當然,在這種情況下,Clutter 已經存在,因此沒有必要。但是由於它沒有記錄在 Lookglass 命名空間中的內容和不存在的內容,如果您嘗試導入某些內容並遇到這些問題,請記住它。

剩餘問題:

  • Mainloop 是什麽?這是在 main.js 中導入的,似乎具有與 GLib 主循環相關的功能。有這方麵的文件嗎?

  • imports.misc 是什麽?裏麵似乎有一些非常有用的東西,比如 ExtensionUtils——那是什麽?

  • 你如何使用DBus?內省呢?

次佳答案

文檔有點滯後,一個潛在的信息來源是 Musings of an OS plumber ,例如updating GNOME Shell extensions to work with version 3.2 上的這篇文章

根據您想要的信息,您可以嘗試使用 gnome 郵件列表。

第三種答案

這個為 gnome 3.4 創建擴展的分步教程可能會有所幫助:https://live.gnome.org/GnomeShell/Extensions/StepByStepTutorial

參考資料

本文由Ubuntu問答整理, 博文地址: https://ubuntuqa.com/zh-tw/article/12283.html,未經允許,請勿轉載。