Val*_*adu 1 javascript ubuntu gnome gnome-3 gnome-shell-extensions
我对 GNOME 扩展开发非常陌生,并且由于严重缺乏 API 文档(或者可能我的互联网受到秘密审查),我很难使用它。我首先修改现有的扩展,以便更容易地绕过它。
问题是,我可以使用 获取活动窗口global.display.focus_window,还可以使用 获取连接到计算机的监视器列表Main.layoutManager.monitors。现在,我想做的是找出获得的窗口位于哪个显示器上(这样我就可以将顶部面板移动到该显示器,因为这可能意味着我目前正在该显示器上工作)。我尝试了各种方法,例如 .screen、.monitor 等,但没有成功。我对此没有 IntelliSense 完成,我试图猜测成员可能是什么,因为我似乎找不到任何相关文档。
我很欣赏 GNOME 比我以前使用的(Unity,根本不提供任何定制)更具可定制性,但我不知道如何使用它,而且资源也很稀缺。我尝试查看源代码,但我不熟悉它的组织方式,并且找不到声明我需要的成员(如果存在)的相关代码部分。
我正在编写 .js 文件,所以我想我需要一些 JavaScript 代码。
非常感谢。
虽然 Gnome Shell 的大多数用户可见部分都是用 JavaScript 编写的,但这些通常只是底层 C 库的绑定。如果您使用 Windows、监视器和屏幕,那么您将需要参考 Mutter 文档,可能还需要参考 Shell 文档:
对象上有一个global名为screen(so global.screen) 的属性,毫无疑问,它MetaScreen具有函数、get_n_monitors()以及其他函数。另一方面,包含一个名为 的函数,该函数返回一个整数。我发现监视器是通过整数引用的,该整数被传递给和的各种函数,因为 Mutter 文档中似乎没有对应的对象。get_primary_monitor()get_current_monitor()MetaWindowget_monitor()MetaScreenMetaWindow
大多数与您想做的事情相关的 JavaScript 似乎都在layout.js中,其中可能有比我能给您的更好的关于如何在 Gnome Shell 中使用 Mutter 的示例。它还包含一个Monitor类,它似乎只是监视器索引的 JS 包装器。LayoutManager该类在类(即实例的定义)中使用Main.layoutManager。
关于文档的注释
最初,没有“正确的”gnome-shell 文档的原因是(内部 JavaScript)API 相当不稳定。协议是,你没有获得稳定的 API,但你可以用你要编写的语言来阅读源代码。在某些方面,这是有道理的,因为你可以修改prototype活动对象和猴子的- 一时兴起的补丁。
API 已经稳定了很多,但还没有人真正开始编写脚本来自动记录它。我最好的建议是为 Mutter、Shell 和 St 文档添加书签,并使用 Github 或 GitLab 的搜索来让事情变得更容易。
然而,Gnome API 的文档以及一些值得浏览的内置模块:
| 归档时间: |
|
| 查看次数: |
2425 次 |
| 最近记录: |