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:
Executable
+64
@@ -0,0 +1,64 @@
|
||||
#!/bin/sh
|
||||
# SPDX-License-Identifier: MIT
|
||||
# enne2-cpufreq — disinstallazione.
|
||||
# ./uninstall.sh rimuove widget (utente) e backend (sudo)
|
||||
# ./uninstall.sh --widget solo il plasmoide
|
||||
# ./uninstall.sh --backend solo helper/polkit/stato (root)
|
||||
# I task configurati (~/.config/enne2-cpufreq) NON vengono cancellati.
|
||||
set -u
|
||||
|
||||
PKG_DIR=$(cd "$(dirname "$0")" && pwd)
|
||||
ID=org.enne2.cpufreq
|
||||
LIBDIR=/usr/local/libexec/enne2-cpufreq
|
||||
POLICY_DST=/usr/share/polkit-1/actions/org.enne2.cpufreq.set.policy
|
||||
RULE_DST=/etc/polkit-1/rules.d/50-org.enne2.cpufreq.rules
|
||||
STATEDIR=/var/lib/enne2-cpufreq
|
||||
|
||||
MODE=all
|
||||
for arg in "$@"; do
|
||||
case "$arg" in
|
||||
--widget) MODE=widget ;;
|
||||
--backend) MODE=backend ;;
|
||||
--all) MODE=all ;;
|
||||
-h|--help) sed -n 's/^# \{0,1\}//p' "$0" | sed -n '1,10p'; exit 0 ;;
|
||||
*) printf 'opzione sconosciuta: %s\n' "$arg" >&2; exit 2 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
remove_widget() {
|
||||
if kpackagetool6 --type Plasma/Applet --show "$ID" >/dev/null 2>&1; then
|
||||
printf 'Rimuovo il plasmoide %s…\n' "$ID"
|
||||
kpackagetool6 --type Plasma/Applet --remove "$ID" || return 1
|
||||
else
|
||||
printf 'Plasmoide %s non installato.\n' "$ID"
|
||||
fi
|
||||
[ -L "$HOME/.local/bin/enne2-cpufreq-task" ] && rm -f "$HOME/.local/bin/enne2-cpufreq-task"
|
||||
return 0
|
||||
}
|
||||
|
||||
remove_backend() {
|
||||
[ "$(id -u)" -eq 0 ] || { printf 'ERRORE: richiede root.\n' >&2; return 1; }
|
||||
# ripristina lo stato hardware prima di togliere l'helper
|
||||
if [ -x "$LIBDIR/cpufreq-helper" ]; then
|
||||
"$LIBDIR/cpufreq-helper" task-end --all >/dev/null 2>&1
|
||||
fi
|
||||
rm -f "$POLICY_DST" "$RULE_DST"
|
||||
rm -rf "$LIBDIR"
|
||||
rm -rf "$STATEDIR"
|
||||
systemctl try-reload-or-restart polkit >/dev/null 2>&1 || true
|
||||
printf 'Backend rimosso.\n'
|
||||
return 0
|
||||
}
|
||||
|
||||
case "$MODE" in
|
||||
widget) remove_widget ;;
|
||||
backend) remove_backend ;;
|
||||
all)
|
||||
remove_widget
|
||||
if [ "$(id -u)" -eq 0 ]; then
|
||||
remove_backend
|
||||
else
|
||||
sudo "$0" --backend
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
Reference in New Issue
Block a user