@vasakgroup/plugin-power-profiles
v2.0.0
Published
A Tauri plugin to read and change the power profile (power-profiles-daemon) over D-Bus on Linux.
Readme
tauri-plugin-power-profiles
Plugin de Tauri para leer y cambiar el perfil de energía del equipo
(power-saver, balanced, performance) a través de
power-profiles-daemon
por D-Bus, con un evento cuando el perfil cambia.
Es parte de VasakOS: lo usan vasak-settings y el centro de control de
vasak-desktop. Sólo Linux.
Cómo funciona, y por qué es barato
- Una sola lectura. Al arrancar —en segundo plano, sin demorar la
ventana— el plugin hace un
GetAllde la interfaz del demonio y guarda el resultado.get_power_statedevuelve esa copia: abrir el selector no va al bus. - Señales, no sondeo. La copia se mantiene con
PropertiesChanged(el perfil cambió desde otra aplicación, o el demonio limitó el rendimiento por temperatura) yNameOwnerChanged(el demonio se instaló, arrancó o se cayó). Cada cambio real se emite como el eventopower-profile-changed. - Sin subprocesos. Todo es D-Bus por
zbus. - Los dos nombres del demonio. Desde la 0.20 se publica como
org.freedesktop.UPower.PowerProfilesy mantienenet.hadess.PowerProfilespor compatibilidad. El plugin prueba el nuevo primero y cae al viejo. - Sin demonio no es un error.
get_power_statedevuelveavailable: falsey la interfaz lo muestra «no disponible».
Instalación
# src-tauri/Cargo.toml
[dependencies]
tauri-plugin-power-profiles = "2"bun add @vasakgroup/plugin-power-profilestauri::Builder::default()
.plugin(tauri_plugin_power_profiles::init())Y en la capacidad de la ventana:
"permissions": ["power-profiles:default"]power-profiles:default permite los dos comandos. Escuchar el evento usa el
permiso core:event:default, que ya viene en core:default.
Uso
import {
getPowerState,
setPowerProfile,
onPowerStateChanged,
} from '@vasakgroup/plugin-power-profiles';
const state = await getPowerState();
// { available: true, profiles: ['power-saver', 'balanced', 'performance'],
// activeProfile: 'balanced', performanceDegraded: null }
await setPowerProfile('power-saver'); // devuelve el estado nuevo
const unlisten = await onPowerStateChanged((next) => {
console.log(next.activeProfile);
});| Comando | Devuelve | Notas |
|---|---|---|
| get_power_state | PowerState | De la copia; no va al bus. |
| set_power_profile(profile) | PowerState | Falla si el perfil no está en profiles o si no hay demonio. |
performanceDegraded trae la razón que da el demonio cuando limita el perfil
de rendimiento (lap-detected, high-operating-temperature), o null.
Desde Rust, el mismo gestor está en app.power_profiles() (trait
PowerProfilesExt).
Pruebas
cargo test # incluye las de bus: levantan un dbus-daemon privado con un demonio de mentira
bun run test # el binding de JavaScriptLas pruebas de bus no tocan el demonio de la máquina: arrancan su propio
dbus-daemon y publican ahí un power-profiles-daemon de mentira, con el nombre
nuevo o con el viejo, para probar la lectura, el cambio de perfil, un cambio
hecho desde afuera y el demonio que se va y vuelve. Si no hay dbus-daemon, lo
dicen y no fallan.
Licencia
GPL-3.0-or-later.
