微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 DBus 打开扩展首选项?

如何解决如何使用 DBus 打开扩展首选项?

$ gnome-shell --version      
GNOME Shell 40.2

我正在尝试在 gjs-console 中打开扩展首选项。

我找到了一种使用 dbus-send 打开首选项的方法

dbus-send --session --print-reply --reply-timeout=2000 --type=method_call --dest=org.gnome.Shell.Extensions /org/gnome/Shell/Extensions org.gnome.Shell.Extensions.LaunchExtensionPrefs string:'text-translator'

但我坚持使用 gjs

  1. 运行gjs-console
  2. 连接到总线代理并调用方法。 PS你可以尝试打开你想要的任何其他扩展的首选项,用你的扩展uuid替换“text-translator” "
const GLib = imports.gi.GLib;
const Gio = imports.gi.Gio;
dbus = Gio.DBusProxy.new_for_bus_sync(Gio.BusType.SESSION,Gio.DBusProxyFlags.NONE,null,"org.gnome.Shell","/org/gnome/Shell/Extensions","org.gnome.Shell.Extensions",null);
dbus.call_sync("LaunchExtensionPrefs",new GLib.Variant("(s)",[ "text-translator" ]),-1,null);

但是得到这个错误

typein:4:6 uncaught exception: Object
  @typein:4:6
  @<stdin>:1:42

我不知道如何调试。

我的问题是从我的扩展程序内部打开我的扩展程序首选项。如果有任何其他方法可以做到这一点,我愿意接受任何帮助。

解决方法

好吧,现在我看到错误出现在 object_pathnew_for_bus_sync 参数中。我使用了 /org/gnome/Shell/Extensions 而预期为 /org/gnome/Shell

这个脚本工作正常

const GLib = imports.gi.GLib;
const Gio = imports.gi.Gio;
dbus = Gio.DBusProxy.new_for_bus_sync(Gio.BusType.SESSION,Gio.DBusProxyFlags.NONE,null,"org.gnome.Shell","/org/gnome/Shell","org.gnome.Shell.Extensions",null);
dbus.call_sync("LaunchExtensionPrefs",new GLib.Variant("(s)",[ "text-translator" ]),-1,null);
,

我的问题是从我的扩展程序内部打开我的扩展程序首选项。

可以直接打开:

Main.extensionManager.openExtensionPrefs('your-extension-uuid','',{});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。