首页 > 解决方案 > 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 不是函数”。这里有什么问题?

标签: gnome-shell-extensionsgjs

解决方案


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

您可能可以从Gnome Shell 中的差异中找出您的代码需要如何调整。

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


推荐阅读