gnome-shell-extension:在 looking glass 中可以工作的 JS 在扩展中却不行

gnome-shell-extension:在 looking glass 中可以工作的 JS 在扩展中却不行

我有以下代码片段,它(在镜子中)给出了我拥有的联系人列表(由 gnome-contacts 管理):

// METHOD 1:
const ContactDisplay = imports.ui.contactDisplay;
let csp = new ContactDisplay.ContactSearchProvider();
let contacts = csp.getInitialResultSet(['']);
contacts.length // 120 contacts

// METHOD 2:
const ContactSystem = Shell.ContactSystem;
let cs = ContactSystem.get_default();
let contacts2 = cs.initial_search(['']);
contacts2.length // 120 contacts

这两段代码(据我所知)是等效的,因为ContactSearchProvider基本上getInitialResultSet调用了initial_search的方法ContactSystem.get_default()

然而,当我把这些相同的将代码放入 gnome shell 扩展中(例如方法enable),然后我global.log(contacts.length)global.log(contacts2.length)我总是得到0

因此出于某种原因,这段代码在镜子中有效,但是不是在扩展中。为什么会这样?在执行扩展时联系人是否未加载?联系人搜索提供程序是否未与我建立连接?我该如何解决?

答案1

我在 gnome-shell 邮件列表上询问了这个问题——结果发现扩展是在很早就加载的,在用户的联系人正确加载之前。

在检索联系人列表的代码片段中添加 5 秒的延迟(以便系统有机会加载所有联系人)效果很好。

相关内容