如何使用GNOME的镜子?

Cob*_*ast 12 debugging gnome-shell gnome-shell-extensions looking-glass

我想进入Gnome Shell的扩展开发,但我似乎无法理解我是如何在Looking Glass中执行一些lg实际调试我的东西的任务.

  1. 当我输入global.log("hi");LG时,它会把我扔回去r(...) = undefined.为什么?
  2. 当我想调试不加载的扩展时,我该怎么做?
    很高兴看到无法加载扩展的原因.
    我试过Main.ExtensionSystem.loadExtension()undefined无论是否给它扩展名的字符串或扩展名的对象,它都会返回.
  3. 我在哪里可以找到类,对象和成员方法的文档?
    (LG检查员似乎无法检查功能.)

如果我拥有这些资源,我至少可以开始为更新的Gnome版本更新一些扩展.我不会问这些简单的问题,如果他们会在某处得到很好的解释,但获取所有信息看起来真的很难(我用谷歌搜索了几个小时).

Riv*_*aye 5

1:LookingGlass 基本上是一个 GJS 控制台。它允许您执行和测试 GJS 的行,抓取和操作对象并用于r(...)在以下命令中使用结果。你得到的原因r(...) = undefined是因为log(String);不返回任何东西,因此结果是undefined.

2:要么记录整个init()enable(),然后检查它在哪里中断并尝试使用日志或注释掉代码行来查明断行(尽管罪魁祸首可能在一般日志中定义,在底部的部分中描述)。

3:没有官方文档。他们有一些过时的 GNOME Shell 3.4 教程,对 3.6 的解释略有不同,在您使用的库的 C(++) 端有几页(尽管大多数函数、变量和常量使用相同的名称),但是对于您需要经验的任何真实信息,请挖掘其他 GNOME 和 shell 扩展代码或一些非官方来源。然而,非官方来源并不总是最新的。

  • 最新生成的 RooJS 文档,尽管至少事件是关闭的,因为它们用 -(减号)而不是 _(下划线)分隔。
  • 旧的,但主要是有用的文档,MathematicalCoffee 有更多有用的东西,比如深入解释的代码,这是一个非常可靠的学习资源。
  • 生成的文档,几乎所有东西都在那里,非常广泛,但有时网站会离线几天。您可以尝试克隆 git repo 以在本地运行它,但 readme.md 是他们分叉的内容的逐字副本...
  • 用户最近提供的参考资料,虽然这相当广泛,但如果您使用的是旧版本的 GNOME Shell,它就没有多大用处,因为不推荐使用的旧版本比下一代更可能工作。我建议查看官方扩展网站并浏览您可以获得的任何有趣扩展的源代码,因为这是学习任何东西的最佳选择。

Generally Debugging gnome can be done in several ways. - use the log() function and follow journalctl in a commandline, check either GNOME or JS, use journalctl -f | grep -i js (or use grep -i gnome). You will see some warnings no matter what, but most mention what extension they're from. This is nice and works on all distros implementing systemd - Or log a specific process that is a part of GNOME like journalctl /usr/bin/gnome-session -f -o cat, just beware that some distros and versions log to different files and old GNOME versions often log to whatever your display manager logs to. - use the official (albeit tricky) manner of logging: GNOME on debugging. I personally couldn't get this to work.