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



我的扩展有这样的代码

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不是一个函数"。这里有什么问题?

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

你可以从 Gnome Shell 的差异中弄清楚你的代码需要如何调整。

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

最新更新