簡體   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