gnome-shell-extensions - 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
.
推荐阅读
- php - 在 Symfony 4 上的 Sonata 管理页面中创建一个新页面
- swift - RxSwift 中的 Binder,它接受可选的 Any
- linux - Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager 未配置 XML 加密器。可以以未加密的形式保存到存储中 LINUX
- c++ - 向量如何将数据复制到另一个向量?
- javascript - 如何在 React Native 中渲染 Text 组件内的组件数组?
- git - 查找并替换损坏的 .git repo
- java - groovy / Java:拦截来自外部库的方法调用
- python-3.x - 如何在烧瓶中实现一个嵌套路由,每个路由都做不同的事情
- jersey - 如何在 Jersey Resources 中访问 Netty ChannelHandlerContext(或类似的)
- eclipse - 使用 Eclipse 运行/调试 Apache Fineract?