From 64b2008c5646d96b47662ca82cbe91b37feffc0f Mon Sep 17 00:00:00 2001 From: Ilya Zlobintsev Date: Sun, 29 Jun 2025 09:22:41 +0300 Subject: [PATCH] feat: skip ppd actions disable for tuned-ppd (#643) --- Cargo.lock | 12 +++++----- lact-cli/Cargo.toml | 2 +- lact-client/Cargo.toml | 2 +- lact-daemon/Cargo.toml | 2 +- .../src/system/power_profiles_daemon.rs | 24 +++++++++++++++---- lact-gui/Cargo.toml | 2 +- lact-schema/Cargo.toml | 2 +- lact/Cargo.toml | 2 +- pkg/recipes/lact-headless/recipe.yml | 2 +- pkg/recipes/lact-libadwaita/recipe.yml | 2 +- pkg/recipes/lact/recipe.yml | 2 +- 11 files changed, 35 insertions(+), 19 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 33d18226..72551bad 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1260,7 +1260,7 @@ dependencies = [ [[package]] name = "lact" -version = "0.8.0" +version = "0.8.1" dependencies = [ "anyhow", "divan", @@ -1272,7 +1272,7 @@ dependencies = [ [[package]] name = "lact-cli" -version = "0.8.0" +version = "0.8.1" dependencies = [ "anyhow", "lact-client", @@ -1282,7 +1282,7 @@ dependencies = [ [[package]] name = "lact-client" -version = "0.8.0" +version = "0.8.1" dependencies = [ "amdgpu-sysfs", "anyhow", @@ -1297,7 +1297,7 @@ dependencies = [ [[package]] name = "lact-daemon" -version = "0.8.0" +version = "0.8.1" dependencies = [ "amdgpu-sysfs", "anyhow", @@ -1335,7 +1335,7 @@ dependencies = [ [[package]] name = "lact-gui" -version = "0.8.0" +version = "0.8.1" dependencies = [ "amdgpu-sysfs", "anyhow", @@ -1363,7 +1363,7 @@ dependencies = [ [[package]] name = "lact-schema" -version = "0.8.0" +version = "0.8.1" dependencies = [ "amdgpu-sysfs", "anyhow", diff --git a/lact-cli/Cargo.toml b/lact-cli/Cargo.toml index 755c5dfa..eb04883c 100644 --- a/lact-cli/Cargo.toml +++ b/lact-cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lact-cli" -version = "0.8.0" +version = "0.8.1" edition = "2021" [dependencies] diff --git a/lact-client/Cargo.toml b/lact-client/Cargo.toml index 7f753bc9..2571437b 100644 --- a/lact-client/Cargo.toml +++ b/lact-client/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lact-client" -version = "0.8.0" +version = "0.8.1" edition = "2021" [dependencies] diff --git a/lact-daemon/Cargo.toml b/lact-daemon/Cargo.toml index 448f4f04..f9f36ce0 100644 --- a/lact-daemon/Cargo.toml +++ b/lact-daemon/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lact-daemon" -version = "0.8.0" +version = "0.8.1" edition = "2021" [features] diff --git a/lact-daemon/src/system/power_profiles_daemon.rs b/lact-daemon/src/system/power_profiles_daemon.rs index 68ffd95e..403dd5ff 100644 --- a/lact-daemon/src/system/power_profiles_daemon.rs +++ b/lact-daemon/src/system/power_profiles_daemon.rs @@ -1,6 +1,8 @@ +use std::collections::HashMap; + use anyhow::{anyhow, Context}; use tracing::{debug, error, info, warn}; -use zbus::{proxy, Connection}; +use zbus::{proxy, zvariant::OwnedValue, Connection}; const CONFLICTING_ACTIONS: [&str; 1] = ["amdgpu_dpm"]; const MIN_PPD_MINOR_VERSION: u32 = 30; @@ -37,6 +39,18 @@ async fn disable_conflicting_actions( ) -> anyhow::Result<()> { debug!("connected to power-profiles-daemon {version}"); + let profiles = client.profiles().await?; + for profile in profiles { + if let Some(driver) = profile.get("Driver") { + if let Ok(driver) = driver.downcast_ref::() { + if driver == "tuned" { + info!("tuned-ppd detected, not disabling actions"); + return Ok(()); + } + } + } + } + let (_major, minor) = version .split_once('.') .with_context(|| format!("Could not parse version string '{version}'"))?; @@ -107,9 +121,7 @@ trait PowerProfilesDaemon { /// ActionsInfo property #[zbus(property)] - fn actions_info( - &self, - ) -> zbus::Result>>; + fn actions_info(&self) -> zbus::Result>>; /// ActiveProfile property #[zbus(property)] @@ -121,4 +133,8 @@ trait PowerProfilesDaemon { /// Version property #[zbus(property)] fn version(&self) -> zbus::Result; + + /// Profiles property + #[zbus(property)] + fn profiles(&self) -> zbus::Result>>; } diff --git a/lact-gui/Cargo.toml b/lact-gui/Cargo.toml index d36d95a2..8c29c195 100644 --- a/lact-gui/Cargo.toml +++ b/lact-gui/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lact-gui" -version = "0.8.0" +version = "0.8.1" authors = ["Ilya Zlobintsev "] edition = "2021" diff --git a/lact-schema/Cargo.toml b/lact-schema/Cargo.toml index ace4c1fc..36239adf 100644 --- a/lact-schema/Cargo.toml +++ b/lact-schema/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lact-schema" -version = "0.8.0" +version = "0.8.1" edition = "2021" [features] diff --git a/lact/Cargo.toml b/lact/Cargo.toml index 79865dc2..3fd43884 100644 --- a/lact/Cargo.toml +++ b/lact/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lact" -version = "0.8.0" +version = "0.8.1" edition = "2021" [features] diff --git a/pkg/recipes/lact-headless/recipe.yml b/pkg/recipes/lact-headless/recipe.yml index 4a0b9d0a..274b2b5f 100644 --- a/pkg/recipes/lact-headless/recipe.yml +++ b/pkg/recipes/lact-headless/recipe.yml @@ -3,7 +3,7 @@ metadata: description: GPU control utility arch: x86_64 license: MIT - version: 0.8.0 + version: 0.8.1 maintainer: ilya-zlobintsev url: https://github.com/ilya-zlobintsev/lact source: diff --git a/pkg/recipes/lact-libadwaita/recipe.yml b/pkg/recipes/lact-libadwaita/recipe.yml index ab891de0..6b646f7c 100644 --- a/pkg/recipes/lact-libadwaita/recipe.yml +++ b/pkg/recipes/lact-libadwaita/recipe.yml @@ -3,7 +3,7 @@ metadata: description: GPU control utility arch: x86_64 license: MIT - version: 0.8.0 + version: 0.8.1 maintainer: ilya-zlobintsev url: https://github.com/ilya-zlobintsev/lact source: diff --git a/pkg/recipes/lact/recipe.yml b/pkg/recipes/lact/recipe.yml index 8e704539..91ed056e 100644 --- a/pkg/recipes/lact/recipe.yml +++ b/pkg/recipes/lact/recipe.yml @@ -3,7 +3,7 @@ metadata: description: GPU control utility arch: x86_64 license: MIT - version: 0.8.0 + version: 0.8.1 maintainer: ilya-zlobintsev url: https://github.com/ilya-zlobintsev/lact source: