diff options
Diffstat (limited to 'js/dbusServices/screensaver')
-rw-r--r-- | js/dbusServices/screensaver/main.js | 11 | ||||
-rw-r--r-- | js/dbusServices/screensaver/screenSaverService.js | 70 |
2 files changed, 81 insertions, 0 deletions
diff --git a/js/dbusServices/screensaver/main.js b/js/dbusServices/screensaver/main.js new file mode 100644 index 0000000..2a08d14 --- /dev/null +++ b/js/dbusServices/screensaver/main.js @@ -0,0 +1,11 @@ +/* exported main */ + +const { DBusService } = imports.dbusService; +const { ScreenSaverService } = imports.screenSaverService; + +function main() { + const service = new DBusService( + 'org.gnome.ScreenSaver', + new ScreenSaverService()); + service.run(); +} diff --git a/js/dbusServices/screensaver/screenSaverService.js b/js/dbusServices/screensaver/screenSaverService.js new file mode 100644 index 0000000..2c1546e --- /dev/null +++ b/js/dbusServices/screensaver/screenSaverService.js @@ -0,0 +1,70 @@ +// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- +/* exported ScreenSaverService */ + +const { Gio, GLib } = imports.gi; + +const { loadInterfaceXML } = imports.misc.dbusUtils; +const { ServiceImplementation } = imports.dbusService; + +const ScreenSaverIface = loadInterfaceXML('org.gnome.ScreenSaver'); +const ScreenSaverProxy = Gio.DBusProxy.makeProxyWrapper(ScreenSaverIface); + +var ScreenSaverService = class extends ServiceImplementation { + constructor() { + super(ScreenSaverIface, '/org/gnome/ScreenSaver'); + + this._autoShutdown = false; + + this._proxy = new ScreenSaverProxy(Gio.DBus.session, + 'org.gnome.Shell.ScreenShield', + '/org/gnome/ScreenSaver', + (proxy, error) => { + if (error) + log(error.message); + }); + + this._proxy.connectSignal('ActiveChanged', + (proxy, sender, params) => { + this._dbusImpl.emit_signal('ActiveChanged', + new GLib.Variant('(b)', params)); + }); + this._proxy.connectSignal('WakeUpScreen', + () => this._dbusImpl.emit_signal('WakeUpScreen', null)); + } + + async LockAsync(params, invocation) { + try { + await this._proxy.LockAsync(...params); + invocation.return_value(null); + } catch (error) { + this._handleError(invocation, error); + } + } + + async GetActiveAsync(params, invocation) { + try { + const res = await this._proxy.GetActiveAsync(...params); + invocation.return_value(new GLib.Variant('(b)', res)); + } catch (error) { + this._handleError(invocation, error); + } + } + + async SetActiveAsync(params, invocation) { + try { + await this._proxy.SetActiveAsync(...params); + invocation.return_value(null); + } catch (error) { + this._handleError(invocation, error); + } + } + + async GetActiveTimeAsync(params, invocation) { + try { + const res = await this._proxy.GetActiveTimeAsync(...params); + invocation.return_value(new GLib.Variant('(u)', res)); + } catch (error) { + this._handleError(invocation, error); + } + } +}; |