From c21790f5a86f8d7544e3f28473056d34aae3181d Mon Sep 17 00:00:00 2001 From: Simon Schneegans Date: Tue, 17 Jan 2023 20:13:07 +0100 Subject: [PATCH] :beetle: Fix issue #278 --- extension.js | 14 +++++++++----- prefs.js | 17 +++++++++++------ 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/extension.js b/extension.js index 4462862..4498a13 100644 --- a/extension.js +++ b/extension.js @@ -89,10 +89,14 @@ class Extension { '/org/freedesktop/UPower'); // This is used to get the current power profile. - const PowerProfilesProxy = Gio.DBusProxy.makeProxyWrapper( - utils.getStringResource('/interfaces/net.hadess.PowerProfiles.xml')); - this._powerProfilesProxy = new PowerProfilesProxy( - Gio.DBus.system, 'net.hadess.PowerProfiles', '/net/hadess/PowerProfiles'); + try { + const PowerProfilesProxy = Gio.DBusProxy.makeProxyWrapper( + utils.getStringResource('/interfaces/net.hadess.PowerProfiles.xml')); + this._powerProfilesProxy = new PowerProfilesProxy( + Gio.DBus.system, 'net.hadess.PowerProfiles', '/net/hadess/PowerProfiles'); + } catch (e) { + // Maybe the service is masked... + } // We will monkey-patch these methods. Let's store the original ones. this._origAddWindowClone = Workspace.prototype._addWindowClone; @@ -391,7 +395,7 @@ class Extension { let disableOnBattery = this._settings.get_boolean('disable-on-battery') && this._upowerProxy.OnBattery; let disableOnPowerSave = this._settings.get_boolean('disable-on-power-save') && - this._powerProfilesProxy.ActiveProfile == 'power-saver'; + this._powerProfilesProxy && this._powerProfilesProxy.ActiveProfile == 'power-saver'; if ((disableOnBattery || disableOnPowerSave) && previewNick == '') { this._fixAnimationTimes(isDialogWindow, forOpening, null); diff --git a/prefs.js b/prefs.js index 5ab36a1..dc2b818 100644 --- a/prefs.js +++ b/prefs.js @@ -108,15 +108,20 @@ var PreferencesDialog = class PreferencesDialog { // Check whether the power profiles daemon is available - if not, we hide the // corresponding settings row. - const PowerProfilesProxy = Gio.DBusProxy.makeProxyWrapper( - utils.getStringResource('/interfaces/net.hadess.PowerProfiles.xml')); - let powerProfilesProxy = new PowerProfilesProxy( - Gio.DBus.system, 'net.hadess.PowerProfiles', '/net/hadess/PowerProfiles'); + let hasPowerProfiles = false; + try { + const PowerProfilesProxy = Gio.DBusProxy.makeProxyWrapper( + utils.getStringResource('/interfaces/net.hadess.PowerProfiles.xml')); + let powerProfilesProxy = new PowerProfilesProxy( + Gio.DBus.system, 'net.hadess.PowerProfiles', '/net/hadess/PowerProfiles'); - if (powerProfilesProxy.get_name_owner() == null) { - this._builder.get_object('disable-on-power-save-row').set_visible(false); + hasPowerProfiles = powerProfilesProxy.get_name_owner() != null; + } catch (e) { + // Maybe the service is masked... } + this._builder.get_object('disable-on-power-save-row').set_visible(hasPowerProfiles); + // Starting with GNOME Shell 42, the settings dialog uses libadwaita (at least most of // the time - it seems that pop!_OS does not support libadwaita even on GNOME 42). We // have to use a different layout, as the stack sidebar looks pretty ugly with the