在侏儒壳扩展中包括二进制组件



开发gnome壳的扩展,主要涉及通过gobject内省使用c API。这意味着大多数可以用C实现的事情也可以在JavaScript中完成。但是在某些情况下,C API的特征无法通过内省结合来复制。能够用本机C代码桥接这些空白是有用的。

gnome shell扩展名可以包括从C代码创建的二进制组件吗?如果是这样,它们如何集成?

我也有同样的问题。还没有找到一种很好的方法。目前,我正在尝试两种不理想的方法:

  1. 硬码路径,例如: ~/.local/share/gnome-shell/extensions/myextension@myname.example.com/mybinary
  2. 全球安装二进制和独立于扩展。

一旦有了路径,就可以使用Util.spawnCommandLine

const Util = imports.misc.util;
Util.spawnCommandLine('/path/to/your/bin');

GLib.spawn_async如果需要回调:

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);
  }
});

我缺少的作品是,如果有一种方法可以通过辅助方法以某种方式获取扩展路径。但是,这些文档的发育不足,浏览源代码还没有找到我的解决方案。

相关内容

  • 没有找到相关文章

最新更新