J'ai la même question. Je n'ai pas encore trouvé un bon moyen de le faire. Actuellement, je suis en train 2 approches non idéales pour le faire:
- Code dur le chemin, .: par exemple
~/.local/share/gnome-shell/extensions/[email protected]/mybinary
- Installez le binaire au niveau mondial et indépendant de l'extension.
Une fois que vous avez le chemin que vous pouvez par exemple utiliser Util.spawnCommandLine
:
const Util = imports.misc.util;
Util.spawnCommandLine('/path/to/your/bin');
Ou GLib.spawn_async
si vous avez besoin d'un rappel:
const GLib = imports.gi.GLib;
let [success, pid] = GLib.spawn_async(null,
['/path/to/your/bin', '--param1','--param2'],
null,
GLib.SpawnFlags.SEARCH_PATH | GLib.SpawnFlags.DO_NOT_REAP_CHILD,
null);
if (!success) {
global.log('ERROR NO SUCCESS');
return;
}
GLib.child_watch_add(GLib.PRIORITY_DEFAULT, pid, function (pid, status) {
GLib.spawn_close_pid(pid);
if (status !== 0 && status !== '0') {
global.log('ERROR');
}
else {
global.log('SUCCESS', status);
}
});
La pièce que je suis absent est s'il y a un moyen d'obtenir le chemin d'extension en quelque sorte via une méthode d'assistance. Mais les docs sont terriblement sous-développés et la navigation dans le code source ne m'a pas encore trouvé la solution.