Plasmoide CPU Frequency Control: governor, limiti, EPP, boost e profili per task
Widget KDE Plasma 6 (org.enne2.cpufreq) per pilotare il profilo energetico della CPU: governor, limiti min/max, energy_performance_preference, boost/turbo, quattro profili pronti (Silenzioso, Risparmio, Bilanciato, Performance) e task con profilo dedicato che ripristina lo stato precedente alla fine del comando. Privilegi separati: il widget resta non privilegiato e l'unica operazione root passa da un helper a interfaccia ristretta in /usr/local/libexec/enne2-cpufreq/ (comandi a elenco chiuso, argomenti validati su sysfs, rilettura di verifica), invocato via pkexec con l'azione polkit dedicata org.enne2.cpufreq.set. La regola in /etc/polkit-1/rules.d/ concede il consenso senza prompt a utenti locali in sessione attiva nel gruppo wheel; senza la regola la policy chiede la password. Dettagli verificati su frigate (Plasma 6.7.5, kernel 7.2, amd-pstate-epp): - con boost disattivato cpuinfo_max_freq scende alla frequenza nominale, quindi il tetto hardware si legge da amd_pstate_max_freq e i profili applicano il boost prima dei limiti; - scrittura dei limiti in ordine sicuro (mai min > max intermedio); - baseline e contatore di riferimento per i task paralleli; - syncControls protetto da uiReady e try/catch: un ReferenceError su un id della rappresentazione non deve interrompere l'aggiornamento dello stato; - implicitWidth/Height costanti, altrimenti il containment riduce il widget a 68x68. Include install.sh/uninstall.sh (widget, backend, dry-run), README con modello di sicurezza e diagnostica, screenshot docs/widget.png. Licenza MIT.
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
/* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* enne2-cpufreq — consenso senza prompt per l'helper del plasmoide.
|
||||
*
|
||||
* Il permesso riguarda UNA sola azione (org.enne2.cpufreq.set) e quindi un solo
|
||||
* programma: /usr/local/libexec/enne2-cpufreq/cpufreq-helper, con gli argomenti
|
||||
* validati al suo interno. Condizioni: utente locale, sessione attiva, gruppo
|
||||
* wheel. Senza questa regola la .policy chiede la password a ogni modifica
|
||||
* (allow_active=auth_admin_keep): basta eliminare questo file per tornare al
|
||||
* comportamento con prompt.
|
||||
*/
|
||||
polkit.addRule(function (action, subject) {
|
||||
if (action.id !== "org.enne2.cpufreq.set") {
|
||||
return;
|
||||
}
|
||||
if (!subject.local || !subject.active) {
|
||||
return;
|
||||
}
|
||||
if (subject.isInGroup("wheel")) {
|
||||
return polkit.Result.YES;
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user