gnome シェルの d-bus に問題があります。javascript でメッセージ dbus を介してスクリーンキャストを管理しようとしています。これはコードです:`
this.gdbusConnection = Gio.bus_get_sync(Gio.BusType.SESSION, null);
this.gdbusProxy = new Gio.DBusProxy({g_connection: this.gdbusConnection,
g_flags: Gio.DBusProxyFlags.NONE ,
g_interface_name: "org.gnome.Shell.Screencast",
g_name: "org.gnome.Shell.Screencast",
g_object_path: "/org/gnome/Shell/Screencast"});
this.gdbusProxy.call("org.gnome.Shell.Screencast.Screencast", null, Gio.DBusCallFlags.NONE, -1, null, this._doExtensionPreferences, null);`
このコードを実行すると、dbus モニターに次のように表示されます。
~$ dbus-monitor "interface=org.gnome.Shell.Screencast"
signal sender=org.freedesktop.DBus -> dest=:1.103 serial=2 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameAcquired
string ":1.103"
method call sender=:1.19 -> dest=org.gnome.Shell.Screencast serial=495 path=/org/gnome/Shell/Screencast; interface=org.gnome.Shell.Screencast; member=Screencast
method call sender=:1.19 -> dest=org.gnome.Shell.Screencast serial=500 path=/org/gnome/Shell/Screencast; interface=org.gnome.Shell.Screencast; member=StopScreencast
問題は送信者だと思います.dbusモニターで従来の方法でsceencastを開始すると、同じ関数が呼び出されますが、送信者が異なるため、何か提案はありますか?
method call sender=:1.6 -> dest=:1.19 serial=228 path=/org/gnome/Shell/Screencast; interface=org.gnome.Shell.Screencast; member=Screencast
string "Screencast da %d %t.webm"
array [
]
method call sender=:1.6 -> dest=:1.19 serial=229 path=/org/gnome/Shell/Screencast; interface=org.gnome.Shell.Screencast; member=StopScreencast
編集:これは正しいコードです。
const MyProxy = Gio.DBusProxy.makeProxyWrapper(LibRecorder.ScreencastIface);
this.instance = new MyProxy(Gio.DBus.session, 'org.gnome.Shell.Screencast','/org/gnome/Shel/Screencast'
, Lang.bind(this, function(proxy, error) {
if (error) {
log(error.message);
return;
} else
Lib.TalkativeLog('ESC > d-bus proy connected');
}));
this.instance.ScreencastRemote("test_proxy_ %d_ %t.webm", null, Lang.bind(this, function(result, error) {
if (error) {
log(error.message);
return;
} else
Lib.TalkativeLog('ESC > screencast execute - '+result[0]+' - '+result[1]);
}));