如何使用 DBus 打开扩展首选项?
How to open extension prefs with 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
- 运行
gjs-console
- 连接到总线代理并调用该方法。 PS 您可以尝试为您想要的任何其他扩展打开首选项,将“text-translator”替换为您的扩展 uuid
“
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" ]), 0, -1, null);
但是出现这个错误:
typein:4:6 uncaught exception: Object
@typein:4:6
@<stdin>:1:42
-我不知道如何调试它。
我的问题是从我的扩展中打开我的扩展首选项。如果有任何其他方法可以做到这一点,我愿意接受任何帮助。
好吧,现在我看到错误在 object_path
到 new_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" ]), 0, -1, null);
My problem is to open my extension prefs from inside my extension.
可以直接打开:
Main.extensionManager.openExtensionPrefs('your-extension-uuid', '', {});
$ 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
- 运行
gjs-console
- 连接到总线代理并调用该方法。 PS 您可以尝试为您想要的任何其他扩展打开首选项,将“text-translator”替换为您的扩展 uuid “
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" ]), 0, -1, null);
但是出现这个错误:
typein:4:6 uncaught exception: Object
@typein:4:6
@<stdin>:1:42
-我不知道如何调试它。
我的问题是从我的扩展中打开我的扩展首选项。如果有任何其他方法可以做到这一点,我愿意接受任何帮助。
好吧,现在我看到错误在 object_path
到 new_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" ]), 0, -1, null);
My problem is to open my extension prefs from inside my extension.
可以直接打开:
Main.extensionManager.openExtensionPrefs('your-extension-uuid', '', {});