我一直想开发一些Gnome Shell扩展,因为它们只是在javascript中,但是我一直在寻找并且实际上有零个文档,在我看来人们只是说使用基本Gnome文档的任何地方,但这无济于事,我可以找不到用于扩展的导入的任何文档,或用于扩展开发的任何类型的javascript api,我尝试浏览了一些教程(其中大多数用于Gnome 3.0,而不是3.2),但是没有任何帮助。
有谁知道他们是否正在编写扩展开发文档?我真的很喜欢一些好的文档...
我一直想开发一些Gnome Shell扩展,因为它们只是在javascript中,但是我一直在寻找并且实际上有零个文档,在我看来人们只是说使用基本Gnome文档的任何地方,但这无济于事,我可以找不到用于扩展的导入的任何文档,或用于扩展开发的任何类型的javascript api,我尝试浏览了一些教程(其中大多数用于Gnome 3.0,而不是3.2),但是没有任何帮助。
有谁知道他们是否正在编写扩展开发文档?我真的很喜欢一些好的文档...
Answers:
我对演示代码和教程不满意的原因是,它们引入了一堆随机导入,并且从不解释它们是什么或如何使用它们。我正在构建自己的答案,供其他人添加,以便人们实际上可以知道他们可以调用什么功能,可以导入什么,等等。
有针对Gnome Shell生成的文档,但是它有些不完整-我找不到在各种教程,示例和已发布的扩展中看到的大多数内容。
唯一真正可靠的文档是Gnome Shell源代码本身。根本没有其他任何最新或完整的方法来知道可用的内容。
这两个起点特别好:
C源代码显示有一个重要的对象称为 global
不需要导入,它提供了对诸如窗口管理器(包括键绑定),会话信息,可用屏幕等内容的访问。来源:
我想知道如何使用global.display
对象,目前最好的文档是 Alan Knowles提供的。
可以通过GObject自省绑定导入其他内容,例如:
通常,您可以浏览参考文档以了解各种Gnome组件,以查找其他导入。
关于窥镜的注释:尽管在窥镜上使用这些导入有一些古怪之处-我浪费大量时间只是试图即时测试事物。例如:
const Clutter = imports.gi.Clutter;
...不起作用,因为Clutter
已经存在。但是之后:
const MyClutter = imports.gi.Clutter;
...也不会起作用;MyClutter
未定义,因此无法使用。你所要做的:
MyClutter = imports.gi.Clutter;
当然在这种情况下 Clutter
已经存在,因此并不是必须的。但是由于没有记录在外观玻璃命名空间中,什么已经存在和尚未存在,因此如果您尝试导入某些内容并遇到这些问题,请记住这一点。
Mainloop
啊 这是导入main.js
并似乎具有与GLib主循环相关的功能。是否有相关文件?imports.misc
啊 那里似乎有一些非常有用的东西,例如ExtensionUtils
-那是什么?文档有点滞后,一个潜在的信息来源是OS管道工的缪斯(Musings),例如,有关更新GNOME Shell扩展以与3.2版一起使用的文章
根据所需的信息,您可以尝试gnome邮件列表。