编写GNOME Shell扩展的文档

时间:2012-10-28 09:37:10

标签: gnome-shell-extensions

我被要求自定义GNOME 3桌面的布局。显然,这样做的方法是写一个“扩展”。

我已经成功完成了一些我想做的事情,但我完全缺乏信息。我无法在任何地方找到任何有用的文档。我浪费了整个的生活,疯狂地搜索每一个可以想象的搜索词,以寻求有用的信息。

GNOME网站有数百个的扩展程序供下载。这些不是简单的3线;它们是复杂的代码片段。它无法相信任何人都可以在没有文件解释如何做的情况下编写这些内容。

拜托,有人可以告诉我实际文件在哪里吗?到目前为止,我设法做的最好的事情是拆开现有的扩展程序,试图找到执行我感兴趣的特定位的魔术命令。(这不是一件容易的事!)

命令名称,对象路径,示例程序,任何都会有所帮助!

2 个答案:

答案 0 :(得分:70)

我最近自己挖了它。文档通常稀疏或过时。以下是一些帮助我开始(并通过开发)的资源:

由于文档几乎不可用(或最新),您需要大量源读取。我链接了上面的gnome-shell源代码(JavaScript部分),这是潜入官方文档未涵盖的部分(这是你将找到的最完整的部分)的良好开端。

特别有用的是检查extensions.gnome.org是否有与您要创建的内容类似的扩展,并查看其来源(大多数是GitHub或Bitbucket上的开源。您也可以安装它们并找到~/.local/share/gnome-shell/extensions/)下的来源。

在搜索特定功能的内容或更多文档时,您还可以查阅手册以了解不同语言的绑定(认为参数和返回值可能不匹配)。


最后但并非最不重要的是,这里有一些调试建议

LookingGlass并不是特别有帮助。它只显示一行异常(描述),并且只有在启动时(首次启动扩展时)才会出现。

有关完整的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
  

注意,自Gnome 3.6以来,如果您使用gdm作为显示管理员,则当前会话日志是文件~/.cache/gdm/session.log

在使用systemd的一些较新的发行版上,您可以使用以下命令获取错误日志:

journalctl -f /usr/bin/gnome-session

对于调试扩展程序的prefs-part ,您可以使用终端上的gnome-shell-extension-prefs - 工具启动首选项,以查看控制台上的任何异常输出(您也可以调用像gnome-shell-extension-prefs [uuid]这样的工具来直接显示您的扩展程序首选项。

由于目前没有真正的断点调试方法(但有it's tricky),您可以登录控制台进行快速检查,使用print() -功能。您将看到上面提到的输出(在sessions-error文件中或在启动gnome-shell-extension-prefs - 工具时在终端上)。


尽管进入它可能有点困难,但扩展框架非常强大。 有趣


我写了一篇 Blog-Post更详细一点,可以在这里找到:Making Gnome-Shell Extensions

答案 1 :(得分:12)

可以在Gnome Developer - API Reference页面找到大量参考文献。

我使用以下内容进行扩展,但您的使用可能会有所不同:

  • <强> GTK+ 3
    GTK +是用于在GNOME应用程序中构建用户界面的主库。它提供用户界面控件和信号回调来控制用户界面。

  • <强> GDK 3
    GDK是一个中间层,它将GTK +与窗口系统的细节隔离开来。

  • <强> Clutter
    Clutter是一个基于GObject的库,用于创建快速,视觉丰富的图形用户界面。

  • <强> GObject Introspection
    GObject Introspection正在努力在(基于GObject的)C库和语言绑定之间提供中间件层。

  • <强> Shell
    Shell参考手册

  • <强> St
    St - Shell Toolkit - 是GNOME Shell定制的基于Clutter的工具包,用于定义有用的actor。其中一些参与者(例如StBoxLayoutStBin)实现了各种布局选项。

  • <强> Icon Theme Specification
    freedesktop.org规范描述了存储图标主题的常用方法。

注意:最后两个在查找视觉元素参数方面非常有用!

  • <强> PyGTK
    PyGTK是Python的GTK +。该引用包含每个包含类描述的Python PyGTK模块(对应于底层GTK +库)的章节。

  • <强> PyGObject
    PyGObject是一个Python扩展模块,通过使用GObject Introspection提供对整个GNOME软件平台的干净和一致的访问。具体来说,它是GLib,GObject,GIO和GTK +的Python Bindings 该引用包含每个包含类描述的PyGObject模块的章节。