🔀 Merge pull request #270 from Schneegans/feature/disable-on-battery-save

This commit is contained in:
Simon Schneegans
2023-01-07 13:48:11 +01:00
committed by GitHub
9 changed files with 198 additions and 52 deletions
+1
View File
@@ -12,6 +12,7 @@ SPDX-License-Identifier: CC-BY-4.0
#### New Features #### New Features
* **New Effect: Glitch.** This effect applies some intentional graphics issues to your windows. * **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 #### Other Enhancements
+13 -3
View File
@@ -88,6 +88,12 @@ class Extension {
this._upowerProxy = new UPowerProxy(Gio.DBus.system, 'org.freedesktop.UPower', this._upowerProxy = new UPowerProxy(Gio.DBus.system, 'org.freedesktop.UPower',
'/org/freedesktop/UPower'); '/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');
// We will monkey-patch these methods. Let's store the original ones. // We will monkey-patch these methods. Let's store the original ones.
this._origAddWindowClone = Workspace.prototype._addWindowClone; this._origAddWindowClone = Workspace.prototype._addWindowClone;
this._origWindowRemoved = Workspace.prototype._windowRemoved; this._origWindowRemoved = Workspace.prototype._windowRemoved;
@@ -381,9 +387,13 @@ class Extension {
return; return;
} }
// We may have to do nothing if running on battery power. // We may have to do nothing if running on battery power or if in power-save mode.
if (this._settings.get_boolean('disable-on-battery') && this._upowerProxy.OnBattery && let disableOnBattery =
previewNick == '') { 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); this._fixAnimationTimes(isDialogWindow, forOpening, null);
return; return;
} }
+55 -49
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: burn-my-windows\n" "Project-Id-Version: burn-my-windows\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -113,50 +113,50 @@ msgstr ""
msgid "Wisps" msgid "Wisps"
msgstr "" msgstr ""
#: prefs.js:122 #: prefs.js:134
msgid "Effects" msgid "Effects"
msgstr "" 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 #: resources/ui/gtk3/effectPage.ui:43
msgid "Preview this effect" msgid "Preview this effect"
msgstr "" msgstr ""
#: prefs.js:199 #: prefs.js:211
msgid "Use this effect when opening windows" msgid "Use this effect when opening windows"
msgstr "" msgstr ""
#: prefs.js:200 #: prefs.js:212
msgid "Use this effect when closing windows" msgid "Use this effect when closing windows"
msgstr "" msgstr ""
#: prefs.js:226 #: prefs.js:238
msgid "General Options" msgid "General Options"
msgstr "" msgstr ""
#: prefs.js:320 #: prefs.js:332
msgid "Gold Sponsors" msgid "Gold Sponsors"
msgstr "" msgstr ""
#: prefs.js:323 #: prefs.js:335
msgid "Silver Sponsors" msgid "Silver Sponsors"
msgstr "" msgstr ""
#: prefs.js:326 #: prefs.js:338
msgid "Bronze Sponsors" msgid "Bronze Sponsors"
msgstr "" msgstr ""
#: prefs.js:329 #: prefs.js:341
msgid "Past Sponsors" msgid "Past Sponsors"
msgstr "" msgstr ""
#. Translators: %s will be replaced by the effect's name. #. Translators: %s will be replaced by the effect's name.
#: prefs.js:536 #: prefs.js:548
#, javascript-format #, javascript-format
msgid "Preview for %s" msgid "Preview for %s"
msgstr "" msgstr ""
#: prefs.js:558 #: prefs.js:570
msgid "Close this Window to Preview the Effect!" msgid "Close this Window to Preview the Effect!"
msgstr "" msgstr ""
@@ -251,37 +251,38 @@ msgstr ""
#: resources/ui/gtk4/EnergizeB.ui:104 resources/ui/gtk4/EnergizeB.ui:138 #: 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:58 resources/ui/gtk4/Pixelate.ui:104
#: resources/ui/gtk4/Pixelate.ui:150 resources/ui/gtk4/prefs.ui:172 #: 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/prefs.ui:206 resources/ui/gtk4/prefs.ui:240
#: resources/ui/gtk4/Apparition.ui:104 resources/ui/gtk4/Apparition.ui:150 #: resources/ui/gtk4/Apparition.ui:58 resources/ui/gtk4/Apparition.ui:104
#: resources/ui/gtk4/Apparition.ui:196 resources/ui/gtk4/Apparition.ui:242 #: resources/ui/gtk4/Apparition.ui:150 resources/ui/gtk4/Apparition.ui:196
#: resources/ui/gtk4/Portal.ui:58 resources/ui/gtk4/Portal.ui:104 #: resources/ui/gtk4/Apparition.ui:242 resources/ui/gtk4/Portal.ui:58
#: resources/ui/gtk4/Portal.ui:150 resources/ui/gtk4/Portal.ui:196 #: resources/ui/gtk4/Portal.ui:104 resources/ui/gtk4/Portal.ui:150
#: resources/ui/gtk4/Portal.ui:230 resources/ui/gtk3/Incinerate.ui:81 #: resources/ui/gtk4/Portal.ui:196 resources/ui/gtk4/Portal.ui:230
#: resources/ui/gtk3/Incinerate.ui:130 resources/ui/gtk3/Incinerate.ui:179 #: resources/ui/gtk3/Incinerate.ui:81 resources/ui/gtk3/Incinerate.ui:130
#: resources/ui/gtk3/Incinerate.ui:241 resources/ui/gtk3/Incinerate.ui:284 #: resources/ui/gtk3/Incinerate.ui:179 resources/ui/gtk3/Incinerate.ui:241
#: resources/ui/gtk3/Wisps.ui:74 resources/ui/gtk3/Wisps.ui:123 #: resources/ui/gtk3/Incinerate.ui:284 resources/ui/gtk3/Wisps.ui:74
#: resources/ui/gtk3/Wisps.ui:166 resources/ui/gtk3/Fire.ui:125 #: resources/ui/gtk3/Wisps.ui:123 resources/ui/gtk3/Wisps.ui:166
#: resources/ui/gtk3/Fire.ui:173 resources/ui/gtk3/Fire.ui:221 #: resources/ui/gtk3/Fire.ui:125 resources/ui/gtk3/Fire.ui:173
#: resources/ui/gtk3/Fire.ui:283 resources/ui/gtk3/Fire.ui:351 #: resources/ui/gtk3/Fire.ui:221 resources/ui/gtk3/Fire.ui:283
#: resources/ui/gtk3/Glide.ui:95 resources/ui/gtk3/Glide.ui:144 #: resources/ui/gtk3/Fire.ui:351 resources/ui/gtk3/Glide.ui:95
#: resources/ui/gtk3/Glide.ui:193 resources/ui/gtk3/Glide.ui:242 #: resources/ui/gtk3/Glide.ui:144 resources/ui/gtk3/Glide.ui:193
#: resources/ui/gtk3/Glide.ui:291 resources/ui/gtk3/PixelWipe.ui:81 #: resources/ui/gtk3/Glide.ui:242 resources/ui/gtk3/Glide.ui:291
#: resources/ui/gtk3/PixelWipe.ui:130 resources/ui/gtk3/PixelWheel.ui:81 #: resources/ui/gtk3/PixelWipe.ui:81 resources/ui/gtk3/PixelWipe.ui:130
#: resources/ui/gtk3/PixelWheel.ui:130 resources/ui/gtk3/PixelWheel.ui:179 #: resources/ui/gtk3/PixelWheel.ui:81 resources/ui/gtk3/PixelWheel.ui:130
#: resources/ui/gtk3/Doom.ui:88 resources/ui/gtk3/Doom.ui:137 #: resources/ui/gtk3/PixelWheel.ui:179 resources/ui/gtk3/Doom.ui:88
#: resources/ui/gtk3/Doom.ui:186 resources/ui/gtk3/Doom.ui:235 #: resources/ui/gtk3/Doom.ui:137 resources/ui/gtk3/Doom.ui:186
#: resources/ui/gtk3/Glitch.ui:88 resources/ui/gtk3/Glitch.ui:137 #: resources/ui/gtk3/Doom.ui:235 resources/ui/gtk3/Glitch.ui:88
#: resources/ui/gtk3/Glitch.ui:186 resources/ui/gtk3/Glitch.ui:235 #: resources/ui/gtk3/Glitch.ui:137 resources/ui/gtk3/Glitch.ui:186
#: resources/ui/gtk3/Glitch.ui:278 resources/ui/gtk3/TVEffect.ui:67 #: resources/ui/gtk3/Glitch.ui:235 resources/ui/gtk3/Glitch.ui:278
#: resources/ui/gtk3/TVEffect.ui:110 resources/ui/gtk3/EnergizeA.ui:74 #: resources/ui/gtk3/TVEffect.ui:67 resources/ui/gtk3/TVEffect.ui:110
#: resources/ui/gtk3/EnergizeA.ui:123 resources/ui/gtk3/EnergizeA.ui:166 #: resources/ui/gtk3/EnergizeA.ui:74 resources/ui/gtk3/EnergizeA.ui:123
#: resources/ui/gtk3/Hexagon.ui:81 resources/ui/gtk3/Hexagon.ui:130 #: resources/ui/gtk3/EnergizeA.ui:166 resources/ui/gtk3/Hexagon.ui:81
#: resources/ui/gtk3/Hexagon.ui:179 resources/ui/gtk3/Hexagon.ui:222 #: resources/ui/gtk3/Hexagon.ui:130 resources/ui/gtk3/Hexagon.ui:179
#: resources/ui/gtk3/Hexagon.ui:265 resources/ui/gtk3/Hexagon.ui:327 #: resources/ui/gtk3/Hexagon.ui:222 resources/ui/gtk3/Hexagon.ui:265
#: resources/ui/gtk3/EnergizeB.ui:74 resources/ui/gtk3/EnergizeB.ui:123 #: resources/ui/gtk3/Hexagon.ui:327 resources/ui/gtk3/EnergizeB.ui:74
#: resources/ui/gtk3/EnergizeB.ui:166 resources/ui/gtk3/Pixelate.ui:81 #: resources/ui/gtk3/EnergizeB.ui:123 resources/ui/gtk3/EnergizeB.ui:166
#: resources/ui/gtk3/Pixelate.ui:130 resources/ui/gtk3/Pixelate.ui:179 #: resources/ui/gtk3/Pixelate.ui:81 resources/ui/gtk3/Pixelate.ui:130
#: resources/ui/gtk3/prefs.ui:225 resources/ui/gtk3/prefs.ui:269 #: 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:95 resources/ui/gtk3/Apparition.ui:144
#: resources/ui/gtk3/Apparition.ui:193 resources/ui/gtk3/Apparition.ui:242 #: resources/ui/gtk3/Apparition.ui:193 resources/ui/gtk3/Apparition.ui:242
#: resources/ui/gtk3/Apparition.ui:291 resources/ui/gtk3/Portal.ui:89 #: 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/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:36 resources/ui/adw/Pixelate.ui:69
#: resources/ui/adw/Pixelate.ui:102 resources/ui/adw/prefs.ui:63 #: 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/prefs.ui:85 resources/ui/adw/prefs.ui:107
#: resources/ui/adw/Apparition.ui:70 resources/ui/adw/Apparition.ui:103 #: resources/ui/adw/Apparition.ui:37 resources/ui/adw/Apparition.ui:70
#: resources/ui/adw/Apparition.ui:136 resources/ui/adw/Apparition.ui:169 #: resources/ui/adw/Apparition.ui:103 resources/ui/adw/Apparition.ui:136
#: resources/ui/adw/Portal.ui:36 resources/ui/adw/Portal.ui:69 #: resources/ui/adw/Apparition.ui:169 resources/ui/adw/Portal.ui:36
#: resources/ui/adw/Portal.ui:102 resources/ui/adw/Portal.ui:135 #: resources/ui/adw/Portal.ui:69 resources/ui/adw/Portal.ui:102
#: resources/ui/adw/Portal.ui:160 #: resources/ui/adw/Portal.ui:135 resources/ui/adw/Portal.ui:160
msgid "Reset to Default Value" msgid "Reset to Default Value"
msgstr "" msgstr ""
@@ -567,6 +568,11 @@ msgstr ""
msgid "Disable on Battery Power" msgid "Disable on Battery Power"
msgstr "" 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/gtk4/Apparition.ui:122 resources/ui/gtk3/Apparition.ui:167
#: resources/ui/adw/Apparition.ui:81 #: resources/ui/adw/Apparition.ui:81
msgid "Twirl Intensity" msgid "Twirl Intensity"
+12
View File
@@ -104,6 +104,18 @@ var PreferencesDialog = class PreferencesDialog {
// Bind general options properties. // Bind general options properties.
this.bindSwitch('destroy-dialogs'); this.bindSwitch('destroy-dialogs');
this.bindSwitch('disable-on-battery'); 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 // 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 // the time - it seems that pop!_OS does not support libadwaita even on GNOME 42). We
@@ -0,0 +1,11 @@
<!--
SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
SPDX-License-Identifier: CC0-1.0
-->
<node>
<interface name="net.hadess.PowerProfiles">
<property name="ActiveProfile" type="s" access="read"/>
</interface>
</node>
+22
View File
@@ -91,6 +91,28 @@ SPDX-License-Identifier: GPL-3.0-or-later
</object> </object>
</child> </child>
<child>
<object class="AdwActionRow" id="disable-on-power-save-row">
<property name="title" translatable="yes">Disable in Power-Save Mode</property>
<property name="activatable-widget">disable-on-power-save</property>
<child>
<object class="GtkSwitch" id="disable-on-power-save">
<property name="valign">center</property>
</object>
</child>
<child>
<object class="GtkButton" id="reset-disable-on-power-save">
<property name="icon-name">edit-clear-symbolic</property>
<property name="valign">center</property>
<property name="tooltip-text" translatable="yes">Reset to Default Value</property>
<style>
<class name="flat" />
</style>
</object>
</child>
</object>
</child>
</object> </object>
</child> </child>
+44
View File
@@ -277,6 +277,50 @@ SPDX-License-Identifier: GPL-3.0-or-later
</object> </object>
</child> </child>
<child>
<object class="GtkListBoxRow" id="disable-on-power-save-row">
<property name="margin-start">10</property>
<property name="margin-end">10</property>
<property name="margin-top">10</property>
<property name="margin-bottom">10</property>
<property name="activatable">0</property>
<child>
<object class="GtkBox">
<property name="spacing">8</property>
<child>
<object class="GtkLabel">
<property name="label" translatable="yes">Disable in Power-Save Mode</property>
<property name="xalign">0</property>
<property name="halign">start</property>
<property name="valign">center</property>
<property name="hexpand">1</property>
</object>
</child>
<child>
<object class="GtkSwitch" id="disable-on-power-save">
<property name="halign">end</property>
<property name="valign">center</property>
</object>
</child>
<child>
<object class="GtkButton" id="reset-disable-on-power-save">
<child>
<object class="GtkImage">
<property name="icon-name">edit-clear-symbolic</property>
<property name="icon-size">1</property>
</object>
</child>
<property name="tooltip-text" translatable="yes">Reset to Default Value</property>
<style>
<class name="flat" />
</style>
</object>
</child>
</object>
</child>
</object>
</child>
</object> </object>
</child> </child>
</object> </object>
+34
View File
@@ -214,6 +214,40 @@ SPDX-License-Identifier: GPL-3.0-or-later
</object> </object>
</child> </child>
<child>
<object class="GtkListBoxRow" id="disable-on-power-save-row">
<property name="activatable">0</property>
<child>
<object class="GtkBox">
<child>
<object class="GtkLabel">
<property name="label" translatable="yes">Disable in Power-Save Mode</property>
<property name="xalign">0</property>
<property name="halign">start</property>
<property name="valign">center</property>
<property name="hexpand">1</property>
</object>
</child>
<child>
<object class="GtkSwitch" id="disable-on-power-save">
<property name="halign">end</property>
<property name="valign">center</property>
</object>
</child>
<child>
<object class="GtkButton" id="reset-disable-on-power-save">
<property name="icon-name">edit-clear-symbolic</property>
<property name="tooltip-text" translatable="yes">Reset to Default Value</property>
<style>
<class name="flat" />
</style>
</object>
</child>
</object>
</child>
</object>
</child>
</object> </object>
</child> </child>
</object> </object>
@@ -25,6 +25,12 @@ SPDX-License-Identifier: CC0-1.0
<description>Enable effects only if plugged in.</description> <description>Enable effects only if plugged in.</description>
</key> </key>
<key name="disable-on-power-save" type="b">
<default>false</default>
<summary>Disable on Power Save</summary>
<description>Enable effects only if power saver is disabled.</description>
</key>
<key name="close-preview-effect" type="s"> <key name="close-preview-effect" type="s">
<default>""</default> <default>""</default>
<summary>Close Preview Effect</summary> <summary>Close Preview Effect</summary>