gnome-shell-extension: ルッキンググラスで動作する JS が拡張機能では動作しない

gnome-shell-extension: ルッキンググラスで動作する JS が拡張機能では動作しない

私は次のコード スニペットを持っています。これは (Looking Glass 内で) 私が持っている連絡先のリスト (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

この 2 つのコードは (私の知る限り) 同等です。 はContactSearchProvider基本的にの メソッドgetInitialResultSetを呼び出します。initial_searchContactSystem.get_default()

しかし、これらを同じコードのビットをgnomeシェルの拡張機能(enableメソッドと呼ぶ)に組み込みglobal.log(contacts.length)global.log(contacts2.length)私はいつも0

そのため、何らかの理由でこのコードはLooking-glassでは動作しますが、ない拡張機能で。これはなぜでしょうか? 拡張機能の実行時点で連絡先が読み込まれていないのでしょうか? 連絡先検索プロバイダーが何らかの理由で接続されていないのでしょうか? どうすれば回避できるでしょうか?

答え1

私は gnome-shell メーリング リストでこのことを質問しました。拡張機能は、ユーザーの連絡先が適切に読み込まれる前に、かなり早い段階で読み込まれることが判明しました。

連絡先リストを取得するコード スニペットに 5 秒の遅延を追加すると (システムにすべての連絡先を読み込む機会を与えるため)、うまく機能します。

関連情報