Вызов функции из другого расширения gnome

Мой вопрос прост, возможно ли вызвать функцию, объявленную в другом расширении gnome, из моего собственного расширения gnome?


person taharqa    schedule 19.05.2020    source источник


Ответы (2)


При использовании GNOME 3.36 вы можете использовать ExtensionManager для поиска расширения.

const Main = imports.ui.main;
const ExtensionManager = Main.extensionManager;

// Looking up the extension
let someExtension = ExtensionManager.lookup('some@extension');

// Importing a module
const SomeModule = someExtension.imports.someModule;

Но, как указал ptomato, это довольно плохая идея, и я бы рассчитывал на то, что в какой-то момент это взорвется. Если вы хотите получить доступ к живым классам, загруженным из их расширения, вы, вероятно, сами или вам придется обратиться к автору напрямую.

person andy.holmes    schedule 20.05.2020
comment
Спасибо @andy.holmes. В какой-то момент, когда версия gnome увеличивается, все равно все взрывается;) - person taharqa; 21.05.2020
comment
Ну, чтобы было ясно, это позволит вам только создавать классы или вызывать функции, определенные в модулях расширения. Доступ к классам, созданным при помощи расширения, или вызов их методов — это другой вопрос. - person andy.holmes; 23.05.2020

да. Вам просто нужно убедиться, что другое расширение GNOME Shell прячет функцию где-то, где ваше расширение может ее найти, например, в глобальном объекте.

(Но, пожалуйста, не делайте этого в любом случае. Невозможно предсказать, будет ли у кого-то установлено конкретное расширение, и есть причина, по которой не существует системы зависимостей для расширений.)

person ptomato    schedule 20.05.2020
comment
Мой вопрос должен был быть, можете ли вы показать мне, как с этим справиться, если это возможно? И тогда да, вы правы, я не должен этого делать. Но это для частного расширения, я буду использовать его для собственного использования. Спасибо - person taharqa; 20.05.2020