From e4aa5e7aae92f24000250984fa7b4ecefb0a235b Mon Sep 17 00:00:00 2001 From: Simon Schneegans Date: Sat, 7 Jan 2023 13:02:22 +0100 Subject: [PATCH 1/6] :wrench: Add initial code to disable on power-save mode --- extension.js | 20 ++++++++++++++++--- .../interfaces/net.hadess.PowerProfiles.xml | 11 ++++++++++ ...ell.extensions.burn-my-windows.gschema.xml | 6 ++++++ 3 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 resources/interfaces/net.hadess.PowerProfiles.xml diff --git a/extension.js b/extension.js index dc77ebd..c58784a 100644 --- a/extension.js +++ b/extension.js @@ -88,6 +88,16 @@ class Extension { this._upowerProxy = new UPowerProxy(Gio.DBus.system, 'org.freedesktop.UPower', '/org/freedesktop/UPower'); + // This is used to get the current power profile. + // Ab 41?? + 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'); + + console.log(this._powerProfilesProxy); + console.log(this._powerProfilesProxy.get_connection()); + // We will monkey-patch these methods. Let's store the original ones. this._origAddWindowClone = Workspace.prototype._addWindowClone; this._origWindowRemoved = Workspace.prototype._windowRemoved; @@ -381,9 +391,13 @@ class Extension { return; } - // We may have to do nothing if running on battery power. - if (this._settings.get_boolean('disable-on-battery') && this._upowerProxy.OnBattery && - previewNick == '') { + // We may have to do nothing if running on battery power or if in power-save mode. + 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'; + + if ((disableOnBattery || disableOnPowerSave) && previewNick == '') { this._fixAnimationTimes(isDialogWindow, forOpening, null); return; } diff --git a/resources/interfaces/net.hadess.PowerProfiles.xml b/resources/interfaces/net.hadess.PowerProfiles.xml new file mode 100644 index 0000000..f9223a5 --- /dev/null +++ b/resources/interfaces/net.hadess.PowerProfiles.xml @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/schemas/org.gnome.shell.extensions.burn-my-windows.gschema.xml b/schemas/org.gnome.shell.extensions.burn-my-windows.gschema.xml index 807ed9d..e0e2604 100644 --- a/schemas/org.gnome.shell.extensions.burn-my-windows.gschema.xml +++ b/schemas/org.gnome.shell.extensions.burn-my-windows.gschema.xml @@ -25,6 +25,12 @@ SPDX-License-Identifier: CC0-1.0 Enable effects only if plugged in. + + false + Disable on Power Save + Enable effects only if power saver is disabled. + + "" Close Preview Effect From c7488c6646f4c2da6599fda2d1cbbba0c4007ece Mon Sep 17 00:00:00 2001 From: Simon Schneegans Date: Sat, 7 Jan 2023 13:05:41 +0100 Subject: [PATCH 2/6] :beetle: Fix debug print --- extension.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extension.js b/extension.js index c58784a..a4d1c2e 100644 --- a/extension.js +++ b/extension.js @@ -95,8 +95,8 @@ class Extension { this._powerProfilesProxy = new PowerProfilesProxy( Gio.DBus.system, 'net.hadess.PowerProfiles', '/net/hadess/PowerProfiles'); - console.log(this._powerProfilesProxy); - console.log(this._powerProfilesProxy.get_connection()); + utils.debug(this._powerProfilesProxy); + utils.debug(this._powerProfilesProxy.get_connection()); // We will monkey-patch these methods. Let's store the original ones. this._origAddWindowClone = Workspace.prototype._addWindowClone; From 09f2b3bde9f62a795efba78089a402671542c052 Mon Sep 17 00:00:00 2001 From: Simon Schneegans Date: Sat, 7 Jan 2023 13:25:36 +0100 Subject: [PATCH 3/6] :wrench: Add switch to UI --- extension.js | 4 ---- prefs.js | 1 + resources/ui/adw/prefs.ui | 22 +++++++++++++++++++ resources/ui/gtk3/prefs.ui | 44 ++++++++++++++++++++++++++++++++++++++ resources/ui/gtk4/prefs.ui | 34 +++++++++++++++++++++++++++++ 5 files changed, 101 insertions(+), 4 deletions(-) diff --git a/extension.js b/extension.js index a4d1c2e..4462862 100644 --- a/extension.js +++ b/extension.js @@ -89,15 +89,11 @@ class Extension { '/org/freedesktop/UPower'); // This is used to get the current power profile. - // Ab 41?? 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'); - utils.debug(this._powerProfilesProxy); - utils.debug(this._powerProfilesProxy.get_connection()); - // We will monkey-patch these methods. Let's store the original ones. this._origAddWindowClone = Workspace.prototype._addWindowClone; this._origWindowRemoved = Workspace.prototype._windowRemoved; diff --git a/prefs.js b/prefs.js index 484f768..c6ccdf2 100644 --- a/prefs.js +++ b/prefs.js @@ -104,6 +104,7 @@ var PreferencesDialog = class PreferencesDialog { // Bind general options properties. this.bindSwitch('destroy-dialogs'); this.bindSwitch('disable-on-battery'); + this.bindSwitch('disable-on-power-save'); // 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 diff --git a/resources/ui/adw/prefs.ui b/resources/ui/adw/prefs.ui index ecfc4f0..51a65c1 100644 --- a/resources/ui/adw/prefs.ui +++ b/resources/ui/adw/prefs.ui @@ -91,6 +91,28 @@ SPDX-License-Identifier: GPL-3.0-or-later + + + Disable in Power-Save Mode + disable-on-power-save + + + center + + + + + edit-clear-symbolic + center + Reset to Default Value + + + + + + diff --git a/resources/ui/gtk3/prefs.ui b/resources/ui/gtk3/prefs.ui index ae9ee9f..6616832 100644 --- a/resources/ui/gtk3/prefs.ui +++ b/resources/ui/gtk3/prefs.ui @@ -277,6 +277,50 @@ SPDX-License-Identifier: GPL-3.0-or-later + + + 10 + 10 + 10 + 10 + 0 + + + 8 + + + Disable in Power-Save Mode + 0 + start + center + 1 + + + + + end + center + + + + + + + edit-clear-symbolic + 1 + + + Reset to Default Value + + + + + + + + diff --git a/resources/ui/gtk4/prefs.ui b/resources/ui/gtk4/prefs.ui index 239e53e..b148a91 100644 --- a/resources/ui/gtk4/prefs.ui +++ b/resources/ui/gtk4/prefs.ui @@ -214,6 +214,40 @@ SPDX-License-Identifier: GPL-3.0-or-later + + + 0 + + + + + Disable in Power-Save Mode + 0 + start + center + 1 + + + + + end + center + + + + + edit-clear-symbolic + Reset to Default Value + + + + + + + + From da66af199b96d54bf6e61f499444fd64dc085c23 Mon Sep 17 00:00:00 2001 From: Simon Schneegans Date: Sat, 7 Jan 2023 13:28:13 +0100 Subject: [PATCH 4/6] :wrench: Hide setting if power profiles deamon is not available --- prefs.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/prefs.js b/prefs.js index c6ccdf2..92f12e0 100644 --- a/prefs.js +++ b/prefs.js @@ -106,6 +106,17 @@ var PreferencesDialog = class PreferencesDialog { this.bindSwitch('disable-on-battery'); this.bindSwitch('disable-on-power-save'); + // 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'); + + if (powerProfilesProxy.get_name_owner() == null) { + this._builder.get_object('disable-on-power-save-row').set_visible(false); + } + // 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 From 71c5821a6af97dcb4b55e2e9c0255055611c5212 Mon Sep 17 00:00:00 2001 From: Simon Schneegans Date: Sat, 7 Jan 2023 13:39:02 +0100 Subject: [PATCH 5/6] :memo: Add changelog entry --- docs/changelog.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/changelog.md b/docs/changelog.md index 56b0a2b..e597167 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -12,6 +12,7 @@ SPDX-License-Identifier: CC-BY-4.0 #### New Features * **New Effect: Glitch.** This effect applies some intentional graphics issues to your windows. +* There is a new option to disable the effects when power-save mode is active. This may not only help to reduce power consumption, but also help in situation where the window animation do not run fluently in power-save mode. This option requires the power-profiles daemon, so it should be available for GNOME Shell 41 and beyond. #### Other Enhancements From e2b5658598b1f049e4a0975a9c5a09b8dd153fc6 Mon Sep 17 00:00:00 2001 From: Simon Schneegans Date: Sat, 7 Jan 2023 13:39:28 +0100 Subject: [PATCH 6/6] :globe_with_meridians: Update translation template --- po/burn-my-windows.pot | 104 ++++++++++++++++++++++------------------- 1 file changed, 55 insertions(+), 49 deletions(-) diff --git a/po/burn-my-windows.pot b/po/burn-my-windows.pot index 939bb4e..0665053 100644 --- a/po/burn-my-windows.pot +++ b/po/burn-my-windows.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: burn-my-windows\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-03 13:46+0100\n" +"POT-Creation-Date: 2023-01-07 13:39+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -113,50 +113,50 @@ msgstr "" msgid "Wisps" msgstr "" -#: prefs.js:122 +#: prefs.js:134 msgid "Effects" msgstr "" -#: prefs.js:164 resources/ui/gtk4/effectPage.ui:43 +#: prefs.js:176 resources/ui/gtk4/effectPage.ui:43 #: resources/ui/gtk3/effectPage.ui:43 msgid "Preview this effect" msgstr "" -#: prefs.js:199 +#: prefs.js:211 msgid "Use this effect when opening windows" msgstr "" -#: prefs.js:200 +#: prefs.js:212 msgid "Use this effect when closing windows" msgstr "" -#: prefs.js:226 +#: prefs.js:238 msgid "General Options" msgstr "" -#: prefs.js:320 +#: prefs.js:332 msgid "Gold Sponsors" msgstr "" -#: prefs.js:323 +#: prefs.js:335 msgid "Silver Sponsors" msgstr "" -#: prefs.js:326 +#: prefs.js:338 msgid "Bronze Sponsors" msgstr "" -#: prefs.js:329 +#: prefs.js:341 msgid "Past Sponsors" msgstr "" #. Translators: %s will be replaced by the effect's name. -#: prefs.js:536 +#: prefs.js:548 #, javascript-format msgid "Preview for %s" msgstr "" -#: prefs.js:558 +#: prefs.js:570 msgid "Close this Window to Preview the Effect!" msgstr "" @@ -251,37 +251,38 @@ msgstr "" #: resources/ui/gtk4/EnergizeB.ui:104 resources/ui/gtk4/EnergizeB.ui:138 #: resources/ui/gtk4/Pixelate.ui:58 resources/ui/gtk4/Pixelate.ui:104 #: resources/ui/gtk4/Pixelate.ui:150 resources/ui/gtk4/prefs.ui:172 -#: resources/ui/gtk4/prefs.ui:206 resources/ui/gtk4/Apparition.ui:58 -#: resources/ui/gtk4/Apparition.ui:104 resources/ui/gtk4/Apparition.ui:150 -#: resources/ui/gtk4/Apparition.ui:196 resources/ui/gtk4/Apparition.ui:242 -#: resources/ui/gtk4/Portal.ui:58 resources/ui/gtk4/Portal.ui:104 -#: resources/ui/gtk4/Portal.ui:150 resources/ui/gtk4/Portal.ui:196 -#: resources/ui/gtk4/Portal.ui:230 resources/ui/gtk3/Incinerate.ui:81 -#: resources/ui/gtk3/Incinerate.ui:130 resources/ui/gtk3/Incinerate.ui:179 -#: resources/ui/gtk3/Incinerate.ui:241 resources/ui/gtk3/Incinerate.ui:284 -#: resources/ui/gtk3/Wisps.ui:74 resources/ui/gtk3/Wisps.ui:123 -#: resources/ui/gtk3/Wisps.ui:166 resources/ui/gtk3/Fire.ui:125 -#: resources/ui/gtk3/Fire.ui:173 resources/ui/gtk3/Fire.ui:221 -#: resources/ui/gtk3/Fire.ui:283 resources/ui/gtk3/Fire.ui:351 -#: resources/ui/gtk3/Glide.ui:95 resources/ui/gtk3/Glide.ui:144 -#: resources/ui/gtk3/Glide.ui:193 resources/ui/gtk3/Glide.ui:242 -#: resources/ui/gtk3/Glide.ui:291 resources/ui/gtk3/PixelWipe.ui:81 -#: resources/ui/gtk3/PixelWipe.ui:130 resources/ui/gtk3/PixelWheel.ui:81 -#: resources/ui/gtk3/PixelWheel.ui:130 resources/ui/gtk3/PixelWheel.ui:179 -#: resources/ui/gtk3/Doom.ui:88 resources/ui/gtk3/Doom.ui:137 -#: resources/ui/gtk3/Doom.ui:186 resources/ui/gtk3/Doom.ui:235 -#: resources/ui/gtk3/Glitch.ui:88 resources/ui/gtk3/Glitch.ui:137 -#: resources/ui/gtk3/Glitch.ui:186 resources/ui/gtk3/Glitch.ui:235 -#: resources/ui/gtk3/Glitch.ui:278 resources/ui/gtk3/TVEffect.ui:67 -#: resources/ui/gtk3/TVEffect.ui:110 resources/ui/gtk3/EnergizeA.ui:74 -#: resources/ui/gtk3/EnergizeA.ui:123 resources/ui/gtk3/EnergizeA.ui:166 -#: resources/ui/gtk3/Hexagon.ui:81 resources/ui/gtk3/Hexagon.ui:130 -#: resources/ui/gtk3/Hexagon.ui:179 resources/ui/gtk3/Hexagon.ui:222 -#: resources/ui/gtk3/Hexagon.ui:265 resources/ui/gtk3/Hexagon.ui:327 -#: resources/ui/gtk3/EnergizeB.ui:74 resources/ui/gtk3/EnergizeB.ui:123 -#: resources/ui/gtk3/EnergizeB.ui:166 resources/ui/gtk3/Pixelate.ui:81 -#: resources/ui/gtk3/Pixelate.ui:130 resources/ui/gtk3/Pixelate.ui:179 -#: resources/ui/gtk3/prefs.ui:225 resources/ui/gtk3/prefs.ui:269 +#: resources/ui/gtk4/prefs.ui:206 resources/ui/gtk4/prefs.ui:240 +#: resources/ui/gtk4/Apparition.ui:58 resources/ui/gtk4/Apparition.ui:104 +#: resources/ui/gtk4/Apparition.ui:150 resources/ui/gtk4/Apparition.ui:196 +#: resources/ui/gtk4/Apparition.ui:242 resources/ui/gtk4/Portal.ui:58 +#: resources/ui/gtk4/Portal.ui:104 resources/ui/gtk4/Portal.ui:150 +#: resources/ui/gtk4/Portal.ui:196 resources/ui/gtk4/Portal.ui:230 +#: resources/ui/gtk3/Incinerate.ui:81 resources/ui/gtk3/Incinerate.ui:130 +#: resources/ui/gtk3/Incinerate.ui:179 resources/ui/gtk3/Incinerate.ui:241 +#: resources/ui/gtk3/Incinerate.ui:284 resources/ui/gtk3/Wisps.ui:74 +#: resources/ui/gtk3/Wisps.ui:123 resources/ui/gtk3/Wisps.ui:166 +#: resources/ui/gtk3/Fire.ui:125 resources/ui/gtk3/Fire.ui:173 +#: resources/ui/gtk3/Fire.ui:221 resources/ui/gtk3/Fire.ui:283 +#: resources/ui/gtk3/Fire.ui:351 resources/ui/gtk3/Glide.ui:95 +#: resources/ui/gtk3/Glide.ui:144 resources/ui/gtk3/Glide.ui:193 +#: resources/ui/gtk3/Glide.ui:242 resources/ui/gtk3/Glide.ui:291 +#: resources/ui/gtk3/PixelWipe.ui:81 resources/ui/gtk3/PixelWipe.ui:130 +#: resources/ui/gtk3/PixelWheel.ui:81 resources/ui/gtk3/PixelWheel.ui:130 +#: resources/ui/gtk3/PixelWheel.ui:179 resources/ui/gtk3/Doom.ui:88 +#: resources/ui/gtk3/Doom.ui:137 resources/ui/gtk3/Doom.ui:186 +#: resources/ui/gtk3/Doom.ui:235 resources/ui/gtk3/Glitch.ui:88 +#: resources/ui/gtk3/Glitch.ui:137 resources/ui/gtk3/Glitch.ui:186 +#: resources/ui/gtk3/Glitch.ui:235 resources/ui/gtk3/Glitch.ui:278 +#: resources/ui/gtk3/TVEffect.ui:67 resources/ui/gtk3/TVEffect.ui:110 +#: resources/ui/gtk3/EnergizeA.ui:74 resources/ui/gtk3/EnergizeA.ui:123 +#: resources/ui/gtk3/EnergizeA.ui:166 resources/ui/gtk3/Hexagon.ui:81 +#: resources/ui/gtk3/Hexagon.ui:130 resources/ui/gtk3/Hexagon.ui:179 +#: resources/ui/gtk3/Hexagon.ui:222 resources/ui/gtk3/Hexagon.ui:265 +#: resources/ui/gtk3/Hexagon.ui:327 resources/ui/gtk3/EnergizeB.ui:74 +#: resources/ui/gtk3/EnergizeB.ui:123 resources/ui/gtk3/EnergizeB.ui:166 +#: resources/ui/gtk3/Pixelate.ui:81 resources/ui/gtk3/Pixelate.ui:130 +#: resources/ui/gtk3/Pixelate.ui:179 resources/ui/gtk3/prefs.ui:225 +#: resources/ui/gtk3/prefs.ui:269 resources/ui/gtk3/prefs.ui:313 #: resources/ui/gtk3/Apparition.ui:95 resources/ui/gtk3/Apparition.ui:144 #: resources/ui/gtk3/Apparition.ui:193 resources/ui/gtk3/Apparition.ui:242 #: resources/ui/gtk3/Apparition.ui:291 resources/ui/gtk3/Portal.ui:89 @@ -320,12 +321,12 @@ msgstr "" #: resources/ui/adw/EnergizeB.ui:70 resources/ui/adw/EnergizeB.ui:95 #: resources/ui/adw/Pixelate.ui:36 resources/ui/adw/Pixelate.ui:69 #: resources/ui/adw/Pixelate.ui:102 resources/ui/adw/prefs.ui:63 -#: resources/ui/adw/prefs.ui:85 resources/ui/adw/Apparition.ui:37 -#: resources/ui/adw/Apparition.ui:70 resources/ui/adw/Apparition.ui:103 -#: resources/ui/adw/Apparition.ui:136 resources/ui/adw/Apparition.ui:169 -#: resources/ui/adw/Portal.ui:36 resources/ui/adw/Portal.ui:69 -#: resources/ui/adw/Portal.ui:102 resources/ui/adw/Portal.ui:135 -#: resources/ui/adw/Portal.ui:160 +#: resources/ui/adw/prefs.ui:85 resources/ui/adw/prefs.ui:107 +#: resources/ui/adw/Apparition.ui:37 resources/ui/adw/Apparition.ui:70 +#: resources/ui/adw/Apparition.ui:103 resources/ui/adw/Apparition.ui:136 +#: resources/ui/adw/Apparition.ui:169 resources/ui/adw/Portal.ui:36 +#: resources/ui/adw/Portal.ui:69 resources/ui/adw/Portal.ui:102 +#: resources/ui/adw/Portal.ui:135 resources/ui/adw/Portal.ui:160 msgid "Reset to Default Value" msgstr "" @@ -567,6 +568,11 @@ msgstr "" msgid "Disable on Battery Power" msgstr "" +#: resources/ui/gtk4/prefs.ui:224 resources/ui/gtk3/prefs.ui:292 +#: resources/ui/adw/prefs.ui:96 +msgid "Disable in Power-Save Mode" +msgstr "" + #: resources/ui/gtk4/Apparition.ui:122 resources/ui/gtk3/Apparition.ui:167 #: resources/ui/adw/Apparition.ui:81 msgid "Twirl Intensity"