Мой вопрос прост, возможно ли вызвать функцию, объявленную в другом расширении gnome, из моего собственного расширения gnome?
Вызов функции из другого расширения gnome
Ответы (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
Спасибо @andy.holmes. В какой-то момент, когда версия gnome увеличивается, все равно все взрывается;)
- person taharqa; 21.05.2020
Ну, чтобы было ясно, это позволит вам только создавать классы или вызывать функции, определенные в модулях расширения. Доступ к классам, созданным при помощи расширения, или вызов их методов — это другой вопрос.
- person andy.holmes; 23.05.2020
да. Вам просто нужно убедиться, что другое расширение GNOME Shell прячет функцию где-то, где ваше расширение может ее найти, например, в глобальном объекте.
(Но, пожалуйста, не делайте этого в любом случае. Невозможно предсказать, будет ли у кого-то установлено конкретное расширение, и есть причина, по которой не существует системы зависимостей для расширений.)
person
ptomato
schedule
20.05.2020
Мой вопрос должен был быть, можете ли вы показать мне, как с этим справиться, если это возможно? И тогда да, вы правы, я не должен этого делать. Но это для частного расширения, я буду использовать его для собственного использования. Спасибо
- person taharqa; 20.05.2020