[gnome-shell] status/powerProfiles: Remember last selected non-default profile



commit 4f155d3757e35f090fdcee2d8f3a0c2c7271512f
Author: Florian Müllner <fmuellner gnome org>
Date:   Fri Jul 29 20:00:18 2022 +0200

    status/powerProfiles: Remember last selected non-default profile
    
    When we move to quick settings, this will allow us to toggle
    between two profiles even where more profiles are available.
    
    Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2391>

 data/org.gnome.shell.gschema.xml.in |  9 +++++++++
 js/ui/status/powerProfiles.js       | 11 +++++++++--
 2 files changed, 18 insertions(+), 2 deletions(-)
---
diff --git a/data/org.gnome.shell.gschema.xml.in b/data/org.gnome.shell.gschema.xml.in
index d3f3c702d2..c56a3399eb 100644
--- a/data/org.gnome.shell.gschema.xml.in
+++ b/data/org.gnome.shell.gschema.xml.in
@@ -94,6 +94,15 @@
         adapter is ever seen not to have devices associated to it.
       </description>
     </key>
+    <key name="last-selected-power-profile" type="s">
+      <default>"power-saver"</default>
+      <summary>The last selected non-default power profile</summary>
+      <description>
+        Some systems support more than two power profiles. In order to still support
+        toggling between two profiles, this key records the last selected non-default
+        profile.
+      </description>
+    </key>
     <key name="welcome-dialog-last-shown-version" type="s">
       <default>''</default>
       <summary>The last version the “Welcome to GNOME” dialog was shown for</summary>
diff --git a/js/ui/status/powerProfiles.js b/js/ui/status/powerProfiles.js
index 9878abfaca..f9a97a64fc 100644
--- a/js/ui/status/powerProfiles.js
+++ b/js/ui/status/powerProfiles.js
@@ -32,6 +32,8 @@ const PROFILE_PARAMS = {
     },
 };
 
+const LAST_PROFILE_KEY = 'last-selected-power-profile';
+
 var Indicator = GObject.registerClass(
 class Indicator extends PanelMenu.SystemIndicator {
     _init() {
@@ -101,14 +103,19 @@ class Indicator extends PanelMenu.SystemIndicator {
         if (!this._item.visible)
             return;
 
+        const {ActiveProfile: activeProfile} = this._proxy;
+
         for (const [profile, item] of this._profileItems) {
-            item.setOrnament(profile === this._proxy.ActiveProfile
+            item.setOrnament(profile === activeProfile
                 ? PopupMenu.Ornament.CHECK
                 : PopupMenu.Ornament.NONE);
         }
 
-        const {label, iconName} = PROFILE_PARAMS[this._proxy.ActiveProfile];
+        const {label, iconName} = PROFILE_PARAMS[activeProfile];
         this._item.label.text = label;
         this._item.icon.icon_name = iconName;
+
+        if (activeProfile !== 'balanced')
+            global.settings.set_string(LAST_PROFILE_KEY, activeProfile);
     }
 });


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]