GJS: global.window_manager.get_workspaces() 未定义

GJS: global.window_manager.get_workspaces() is undefined

我的分机有这样的代码

for (let i = 0; i < screen.get_n_workspaces(); ++i) { let w = screen.get_workspace_by_index(i); //Do something }

由于gjs将c函数映射到javascript,meta_screen_get_n_workspaces变成了get_n_workspaces。然而,当我为 meta_screen_get_workspaces

尝试这个时

screen.get_workspaces().forEach(w => { //Do someting })

它说 'get_workspaces is not a function'。这里有什么问题?

您很可能依赖于最近在 libmutter 中更改的 API。如果您使用的是旧版本的 libmutter 或比更改日期更新的版本,则需要检查全局变量。

您大概可以从the diff in Gnome Shell中了解您的代码需要如何调整。

通常,工作区现在由 MetaWorkspaceManager 处理,在 Gnome Shell 中可用 global.workspace_manager,您可以调用 get_n_workspaces()。 libmutter 中相关的上游文件是workspace_manager.h。在那之前,我相信他们是通过 global.screen.

访问的