我正在编写一个简单的扩展程序,通过单击扩展按钮来打开浏览器。我想知道是否有一个函数可以执行传递的shell命令作为参数。此外,如果有人可以为扩展开发提出一个很好的简单参考,那将非常有用。
答案 0 :(得分:5)
来自https://github.com/GNOME/gnome-shell/blob/master/js/misc/util.js:
// Runs @command_line in the background, handling any errors that
// occur when trying to parse or start the program.
function spawnCommandLine(command_line) {
try {
let [success, argv] = GLib.shell_parse_argv(command_line);
trySpawn(argv);
} catch (err) {
_handleSpawnError(command_line, err);
}
}
那里的方法有一些变化。保存自己的头痛,只需将GitHub存储库添加为书签。
一些快速链接:
我无法强调你读取gnome-shell源代码的余量。不幸的是,它现在被编译成一个资源文件,所以我们没有本地副本偶然发现。
答案 1 :(得分:0)
如果您对结果不感兴趣 - 即当您想打开浏览器窗口时 - 您可以像这样使用 GLib.spawn_command_line_async :
const GLib = imports.gi.GLib;
...
(this._menuEntries[i]).connect('activate', () => {
GLib.spawn_command_line_async('firefox http://example.com?p='+ my_params[i]);
});
如果需要同步结果,请阅读https://gjs.guide/guides/gio/subprocesses.html