1
1
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
3
const DBus = imports.dbus;
3
const Gio = imports.gi.Gio;
4
4
const Lang = imports.lang;
6
const ScreenSaverIface = {
7
name: 'org.gnome.ScreenSaver',
8
methods: [{ name: 'GetActive',
15
signals: [{ name: 'ActiveChanged',
6
const ScreenSaverIface = <interface name="org.gnome.ScreenSaver">
7
<method name="GetActive">
8
<arg type="b" direction="out" />
10
<method name="Lock" />
11
<method name="SetActive">
12
<arg type="b" direction="in" />
14
<signal name="ActiveChanged">
15
<arg type="b" direction="out" />
19
const ScreenSaverInfo = Gio.DBusInterfaceInfo.new_for_xml(ScreenSaverIface);
19
21
function ScreenSaverProxy() {
22
var self = new Gio.DBusProxy({ g_connection: Gio.DBus.session,
23
g_interface_name: ScreenSaverInfo.name,
24
g_interface_info: ScreenSaverInfo,
25
g_name: 'org.gnome.ScreenSaver',
26
g_object_path: '/org/gnome/ScreenSaver',
27
g_flags: (Gio.DBusProxyFlags.DO_NOT_AUTO_START |
28
Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES) });
30
self.screenSaverActive = false;
32
self.connectSignal('ActiveChanged', function(proxy, senderName, [isActive]) {
33
self.screenSaverActive = isActive;
35
self.connect('notify::g-name-owner', function() {
36
if (self.g_name_owner) {
37
self.GetActiveRemote(function(result, excp) {
39
let [isActive] = result;
40
self.screenSaverActive = isActive;
44
self.screenSaverActive = false;
23
ScreenSaverProxy.prototype = {
25
DBus.session.proxifyObject(this,
26
'org.gnome.ScreenSaver',
27
'/org/gnome/ScreenSaver');
29
DBus.session.watch_name('org.gnome.ScreenSaver',
30
false, // do not launch a name-owner if none exists
31
Lang.bind(this, this._onSSAppeared),
32
Lang.bind(this, this._onSSVanished));
34
this.screenSaverActive = false;
35
this.connect('ActiveChanged',
36
Lang.bind(this, this._onActiveChanged));
39
_onSSAppeared: function(owner) {
40
this.GetActiveRemote(Lang.bind(this, function(isActive) {
41
this.screenSaverActive = isActive;
45
_onSSVanished: function(oldOwner) {
46
this.screenSaverActive = false;
49
_onActiveChanged: function(object, isActive) {
50
this.screenSaverActive = isActive;
53
DBus.proxifyPrototype(ScreenSaverProxy.prototype, ScreenSaverIface);