繁体   English   中英

如何在 GNOME 中获取活动窗口的监视器?

[英]How do I get the monitor of an active window in GNOME?

我对 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 (所以global.screen )的属性,它无疑是一个MetaScreen ,它具有函数get_n_monitors() ,以及get_primary_monitor()get_current_monitor()等。 MetaWindow ,在另一方面,包含一个函数调用get_monitor()返回一个整数。 我认为监视器是由整数引用的,整数被传递给MetaScreenMetaWindow各种函数,因为 Mutter 文档中似乎没有一个对象。

大多数与您想要做的事情相关的 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 的文档以及一些值得浏览的内置模块:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM