当前位置: 首页>>技术教程>>正文


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/article/12283.html,未经允许,请勿转载。