2012-10-28 77 views
45

我被要求定製GNOME 3桌面的佈局。顯然,這樣做的方式是通過編寫一個「擴展名」。編寫GNOME Shell擴展的文檔

我已經設法做了一些我想做的事情,但我完全感到餓死了的信息。我找不到任何有用的文檔。我浪費了整個瘋狂搜索每一個可以想象的搜索術語,拼命試圖找到有用的信息。

GNOME的網站有數百個擴展下載。這些不是微不足道的三分線;他們是複雜的代碼片斷。它不相信任何人都可以在沒有文件解釋如何去做的情況下寫下這些信息。

請問,有人可以告訴我實際文檔在哪裏嗎?到目前爲止,最好的我已經成功地做的就是拆開現有擴展試圖追查神奇的命令,做具體一點我感興趣的(不是一件容易的事!)

命令名,對象路徑,示例程序,什麼將是有幫助的!

回答

52

我最近自己挖了一下。該文檔大多不可用或過時。這裏有一些來源這讓我上手(並通過開發):

由於文檔幾乎不可用(或最新),因此您需要做很多源代碼閱讀的。我上面的鏈接(JavaScript的部分),這是一個良好的開端侏儒殼源時潛入未涵蓋的所有官方文件的部分(這是你會發現最完整的東西)。

還有一點特別有用的是檢查extensions.gnome.org的擴展,它與你想要創建的類似的東西,並查看它們的源代碼(其中大多數是GitHub或Bitbucket上的開源代碼,也可以安裝它們並找到來源於~/.local/share/gnome-shell/extensions/)。

當在特定功能尋找的東西,使用或更多的文檔,你還可以參考手冊不同語言的綁定(以爲參數和返回值可能不匹配)。


最後但並非最不重要的,這裏是一些調試建議

的鏡子是不是特別有幫助。這隻能說明一個異常(說明)的一行且僅當它們出現在啓動時(當您的分機首次啓動)。

對於完整的StackTraces和運行時異常,請查閱~/.xsession-errors-文件。它可能非常漫長和臃腫。我用這個handy script來閱讀:

# Grabs the last session-errors from the current X11 session. 
# This includes full Stack-Trace of gnome-shell-extension errors. 
# See https://live.gnome.org/GnomeShell/Extensions/StepByStepTutorial#lookingGlass 
tail -n100 ~/.cache/gdm/session.log | less 

注意,由於侏儒3.6,如果您使用gdm作爲顯示管理器,當前會話日誌文件~/.cache/gdm/session.log

使用systemd一些較新的發行版,你可以得到錯誤日誌:

journalctl -f /usr/bin/gnome-session 

對於擴展的調試首選項部分,您可以通過使用啓動喜好gnome-shell-extension-prefs - 工具從終端上查看任何異常輸出(您也可以撥打工具gnome-shell-extension-prefs [uuid]直接顯示您的分機首選項)。

由於目前調試的斷點沒有真正的方法(有,但it's tricky),你可以日誌進行快速檢查控制檯上,使用print() -function。您將看到如上所述的輸出(在啓動gnome-shell-extension-prefs-tool時在會話錯誤文件或終端中)。


儘管進入它可能有點困難,但擴展框架非常強大。有好玩


我寫了一個博客,用後比較詳細,它可以在這裏找到:Making Gnome-Shell Extensions

+0

也可能在〜/ .cache/upstart/gnome-session-GNOME.log中找到gnome會話日誌(例如,在Ubuntu 14.04上)。 –

10

一個廣泛引用的名單可以在Gnome Developer - API Reference頁面上找到。

我用我的推廣下,但你的使用可能會有所不同:

  • GTK+ 3
    GTK +是用於構建GNOME應用程序用戶界面的主要庫。它提供用戶界面控件和信號回調來控制用戶界面。

  • GDK 3
    GDK是從窗口系統的細節隔離GTK +的中間層。

  • Clutter
    雜波是一個用於創建快速,視覺效果豐富的圖形用戶界面GObject的基礎庫。

  • GObject Introspection
    GObject的自省正在努力提供(GObject的基於)C庫和語言綁定之間的中間件層。

  • Shell
    Shell參考手冊

  • St
    聖 - 外殼工具包 - 是GNOME Shell的基於雜波的自定義工具,定義有用的角色。其中一些演員,如StBoxLayoutStBin實施各種佈局選項。

  • Icon Theme Specification
    freedesktop.org規範描述了存儲圖標主題的常用方法。

注:最後兩個是在尋找視覺元素的參數非常有幫助!

  • PyGTK
    PyGTK是GTK +爲Python。該引用包含每個包含類描述的Python PyGTK模塊(對應於底層GTK +庫)的章節。

  • PyGObject
    PyGObject是一個Python擴展模塊,它提供了通過使用GObject的反省的乾淨和一致的訪問整個GNOME軟件平臺。具體來說,它是GLib,GObject,GIO和GTK +的Python綁定。
    該引用包含每個包含類描述的PyGObject模塊的章節。