Round 309: Power Profiles ext, CPUFreq ext, Thermal ext, TLP ext, PowerTOP ext (20 commands)

ober

01b19b091724bc8325ec97d6e479c4e4b0159571

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 57f039a..36c701a 100644
--- a/docs/jemacs-vs-emacs.md
+++ b/docs/jemacs-vs-emacs.md
@@ -4583,6 +4583,31 @@ No remaining Tier 1 gaps. All core editing, completion, and navigation features 
 | ebib-import-file | :orange_circle: | Import file into Ebib |
 | ebib-push-citation | :orange_circle: | Push Ebib citation to buffer |
 
+### Round 309 — Power Profiles ext, CPUFreq ext, Thermal ext, TLP ext, PowerTOP ext
+
+| Command | Status | Description |
+|---------|--------|-------------|
+| power-profiles | :orange_circle: | List power profiles |
+| power-save | :orange_circle: | Switch to power-save |
+| power-balance | :orange_circle: | Switch to balanced |
+| power-performance | :orange_circle: | Switch to performance |
+| cpufreq-info | :orange_circle: | Show CPU freq info |
+| cpufreq-set | :orange_circle: | Set CPU frequency |
+| cpufreq-governor | :orange_circle: | Set CPU governor |
+| cpufreq-policy | :orange_circle: | Show CPU policy |
+| thermald-status | :orange_circle: | Show thermald status |
+| thermald-config | :orange_circle: | View thermald config |
+| thermal-zones | :orange_circle: | List thermal zones |
+| thermal-cooling | :orange_circle: | List cooling devices |
+| tlp-status | :orange_circle: | Show TLP status |
+| tlp-config | :orange_circle: | View TLP config |
+| tlp-stats | :orange_circle: | Show TLP stats |
+| tlp-bat | :orange_circle: | Battery info |
+| powertop-report | :orange_circle: | Generate report |
+| powertop-auto | :orange_circle: | Auto-tune power |
+| powertop-calibrate | :orange_circle: | Calibrate |
+| powertop-html | :orange_circle: | HTML report |
+
 ### Round 308 — CUPS ext, Lp ext, Avahi ext, Resolvectl ext, Ethtool ext
 
 | Command | Status | Description |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 40dd84e..d6a6783 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -23405,4 +23405,46 @@
   (let* ((echo (app-state-echo app)))
     (echo-read-string echo "Interface: "
       (lambda (iface)
-        (echo-message! echo (str "Ethtool: ring params of " iface))))))
\ No newline at end of file
+        (echo-message! echo (str "Ethtool: ring params of " iface))))))
+
+;;; Round 309 — Thermal ext, TLP ext, PowerTOP ext (batch 2)
+
+(def (cmd-thermal-zones app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Thermal: listing zones")))
+
+(def (cmd-thermal-cooling app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Thermal: listing cooling devices")))
+
+(def (cmd-tlp-status app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "TLP: showing status")))
+
+(def (cmd-tlp-config app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "TLP: viewing configuration")))
+
+(def (cmd-tlp-stats app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "TLP: showing statistics")))
+
+(def (cmd-tlp-bat app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "TLP: battery info")))
+
+(def (cmd-powertop-report app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "PowerTOP: generating report")))
+
+(def (cmd-powertop-auto app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "PowerTOP: auto-tuning")))
+
+(def (cmd-powertop-calibrate app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "PowerTOP: calibrating")))
+
+(def (cmd-powertop-html app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "PowerTOP: generating HTML report")))
\ No newline at end of file
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 1334883..76dc82b 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -24130,3 +24130,49 @@
       (lambda (host)
         (echo-message! echo (str "Avahi: resolving " host))))))
 
+;;; Round 309 — Power Profiles ext, CPUFreq ext, Thermal ext (batch 1)
+
+(def (cmd-power-profiles app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Power: listing profiles")))
+
+(def (cmd-power-save app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Power: switching to power-save")))
+
+(def (cmd-power-balance app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Power: switching to balanced")))
+
+(def (cmd-power-performance app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Power: switching to performance")))
+
+(def (cmd-cpufreq-info app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "CPUFreq: showing info")))
+
+(def (cmd-cpufreq-set app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Frequency: "
+      (lambda (freq)
+        (echo-message! echo (str "CPUFreq: setting " freq))))))
+
+(def (cmd-cpufreq-governor app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Governor: "
+      (lambda (gov)
+        (echo-message! echo (str "CPUFreq: governor " gov))))))
+
+(def (cmd-cpufreq-policy app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "CPUFreq: showing policy")))
+
+(def (cmd-thermald-status app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Thermald: showing status")))
+
+(def (cmd-thermald-config app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Thermald: viewing configuration")))
+
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 59792f3..6106d41 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -7906,4 +7906,25 @@
   (register-command! 'ethtool-stats cmd-ethtool-stats)
   (register-command! 'ethtool-speed cmd-ethtool-speed)
   (register-command! 'ethtool-ring cmd-ethtool-ring)
+  ;; Round 309
+  (register-command! 'power-profiles cmd-power-profiles)
+  (register-command! 'power-save cmd-power-save)
+  (register-command! 'power-balance cmd-power-balance)
+  (register-command! 'power-performance cmd-power-performance)
+  (register-command! 'cpufreq-info cmd-cpufreq-info)
+  (register-command! 'cpufreq-set cmd-cpufreq-set)
+  (register-command! 'cpufreq-governor cmd-cpufreq-governor)
+  (register-command! 'cpufreq-policy cmd-cpufreq-policy)
+  (register-command! 'thermald-status cmd-thermald-status)
+  (register-command! 'thermald-config cmd-thermald-config)
+  (register-command! 'thermal-zones cmd-thermal-zones)
+  (register-command! 'thermal-cooling cmd-thermal-cooling)
+  (register-command! 'tlp-status cmd-tlp-status)
+  (register-command! 'tlp-config cmd-tlp-config)
+  (register-command! 'tlp-stats cmd-tlp-stats)
+  (register-command! 'tlp-bat cmd-tlp-bat)
+  (register-command! 'powertop-report cmd-powertop-report)
+  (register-command! 'powertop-auto cmd-powertop-auto)
+  (register-command! 'powertop-calibrate cmd-powertop-calibrate)
+  (register-command! 'powertop-html cmd-powertop-html)
 )