Status Menu: use Gnome Session DBus for shutdown and logout
Around 2.91.90, gnome-session-save was renamed to gnome-session-quit. This commit restores compatibility with the older gnome-session, for those testing under GNOME 2.32 or below, by calling the DBus methods directly. https://bugzilla.gnome.org/show_bug.cgi?id=644591
This commit is contained in:
parent
f6fc88cc2d
commit
73274e201b
@ -102,3 +102,24 @@ Inhibitor.prototype = {
|
|||||||
};
|
};
|
||||||
DBus.proxifyPrototype(Inhibitor.prototype, InhibitorIface);
|
DBus.proxifyPrototype(Inhibitor.prototype, InhibitorIface);
|
||||||
Signals.addSignalMethods(Inhibitor.prototype);
|
Signals.addSignalMethods(Inhibitor.prototype);
|
||||||
|
|
||||||
|
|
||||||
|
// Not the full interface, only the methods we use
|
||||||
|
const SessionManagerIface = {
|
||||||
|
name: 'org.gnome.SessionManager',
|
||||||
|
methods: [
|
||||||
|
{ name: 'Logout', inSignature: 'u', outSignature: '' },
|
||||||
|
{ name: 'Shutdown', inSignature: '', outSignature: '' }
|
||||||
|
]
|
||||||
|
};
|
||||||
|
|
||||||
|
function SessionManager() {
|
||||||
|
this._init();
|
||||||
|
}
|
||||||
|
|
||||||
|
SessionManager.prototype = {
|
||||||
|
_init: function() {
|
||||||
|
DBus.session.proxifyObject(this, 'org.gnome.SessionManager', '/org/gnome/SessionManager');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
DBus.proxifyPrototype(SessionManager.prototype, SessionManagerIface);
|
@ -50,6 +50,7 @@ StatusMenuButton.prototype = {
|
|||||||
this._user = this._gdm.get_user(GLib.get_user_name());
|
this._user = this._gdm.get_user(GLib.get_user_name());
|
||||||
this._presence = new GnomeSession.Presence();
|
this._presence = new GnomeSession.Presence();
|
||||||
this._presenceItems = {};
|
this._presenceItems = {};
|
||||||
|
this._session = new GnomeSession.SessionManager();
|
||||||
|
|
||||||
this._account_mgr = Tp.AccountManager.dup()
|
this._account_mgr = Tp.AccountManager.dup()
|
||||||
|
|
||||||
@ -210,7 +211,7 @@ StatusMenuButton.prototype = {
|
|||||||
|
|
||||||
_onQuitSessionActivate: function() {
|
_onQuitSessionActivate: function() {
|
||||||
Main.overview.hide();
|
Main.overview.hide();
|
||||||
Util.spawn(['gnome-session-quit', '--logout']);
|
this._session.LogoutRemote(0);
|
||||||
},
|
},
|
||||||
|
|
||||||
_onSuspendOrPowerOffActivate: function() {
|
_onSuspendOrPowerOffActivate: function() {
|
||||||
@ -222,7 +223,7 @@ StatusMenuButton.prototype = {
|
|||||||
this._upClient.suspend_sync(null);
|
this._upClient.suspend_sync(null);
|
||||||
}));
|
}));
|
||||||
} else {
|
} else {
|
||||||
Util.spawn(['gnome-session-quit', '--power-off']);
|
this._session.ShutdownRemote();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user