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

时间:2018-10-03 17:47:57

标签: gnome-shell-extensions gjs

我的扩展程序具有这样的代码

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

1 个答案:

答案 0 :(得分:2)

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

您可能可以从the diff in Gnome Shell中了解如何调整代码。

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