feat(power-profiles-daemon): split driver into cpu driver and platform driver

This commit is contained in:
Jeevitha Kannan K S
2025-03-21 16:23:39 +05:30
parent 8490a1d9b9
commit feb6dfb9d6
4 changed files with 28 additions and 12 deletions
+3 -2
View File
@@ -9,9 +9,10 @@ namespace waybar::modules {
struct Profile { struct Profile {
std::string name; std::string name;
std::string driver; std::string cpuDriver;
std::string platformDriver;
Profile(std::string n, std::string d) : name(std::move(n)), driver(std::move(d)) {} Profile(std::string n, std::string cd, std::string pd) : name(std::move(n)), cpuDriver(std::move(cd)), platformDriver(std::move(pd)) {}
}; };
class PowerProfilesDaemon : public ALabel { class PowerProfilesDaemon : public ALabel {
+3 -3
View File
@@ -25,7 +25,7 @@ $XDG_CONFIG_HOME/waybar/config
:[ Message displayed on the bar. {icon} and {profile} are respectively substituted with the icon representing the active profile and its full name. :[ Message displayed on the bar. {icon} and {profile} are respectively substituted with the icon representing the active profile and its full name.
|[ *tooltip-format* |[ *tooltip-format*
:[ string :[ string
:[ "Power profile: {profile}\\nDriver: {driver}" :[ "Power profile: {profile}\\nCPU driver: {cpu_driver}\\nPlatform driver: {platform_driver}"
:[ Messaged displayed in the module tooltip. {icon} and {profile} are respectively substituted with the icon representing the active profile and its full name. :[ Messaged displayed in the module tooltip. {icon} and {profile} are respectively substituted with the icon representing the active profile and its full name.
|[ *tooltip* |[ *tooltip*
:[ bool :[ bool
@@ -51,7 +51,7 @@ Compact display (default config):
``` ```
"power-profiles-daemon": { "power-profiles-daemon": {
"format": "{icon}", "format": "{icon}",
"tooltip-format": "Power profile: {profile}\nDriver: {driver}", "tooltip-format": "Power profile: {profile}\nCPU driver: {cpu_driver}\nPlatform driver: {platform_driver}",
"tooltip": true, "tooltip": true,
"format-icons": { "format-icons": {
"default": "", "default": "",
@@ -67,7 +67,7 @@ Display the full profile name:
``` ```
"power-profiles-daemon": { "power-profiles-daemon": {
"format": "{icon} {profile}", "format": "{icon} {profile}",
"tooltip-format": "Power profile: {profile}\nDriver: {driver}", "tooltip-format": "Power profile: {profile}\nCPU driver: {cpu_driver}\nPlatform driver: {platform_driver}",
"tooltip": true, "tooltip": true,
"format-icons": { "format-icons": {
"default": "", "default": "",
+1 -1
View File
@@ -151,7 +151,7 @@
}, },
"power-profiles-daemon": { "power-profiles-daemon": {
"format": "{icon}", "format": "{icon}",
"tooltip-format": "Power profile: {profile}\nDriver: {driver}", "tooltip-format": "Power profile: {profile}\nCPU driver: {cpu_driver}\nPlatform driver: {platform_driver}",
"tooltip": true, "tooltip": true,
"format-icons": { "format-icons": {
"default": "", "default": "",
+21 -6
View File
@@ -12,7 +12,7 @@ PowerProfilesDaemon::PowerProfilesDaemon(const std::string& id, const Json::Valu
if (config_["tooltip-format"].isString()) { if (config_["tooltip-format"].isString()) {
tooltipFormat_ = config_["tooltip-format"].asString(); tooltipFormat_ = config_["tooltip-format"].asString();
} else { } else {
tooltipFormat_ = "Power profile: {profile}\nDriver: {driver}"; tooltipFormat_ = "Power profile: {profile}\nCpuDriver: {cpu_driver}";
} }
// Fasten your seatbelt, we're up for quite a ride. The rest of the // Fasten your seatbelt, we're up for quite a ride. The rest of the
// init is performed asynchronously. There's 2 callbacks involved. // init is performed asynchronously. There's 2 callbacks involved.
@@ -95,15 +95,29 @@ void PowerProfilesDaemon::populateInitState() {
powerProfilesProxy_->get_cached_property(profilesVariant, "Profiles"); powerProfilesProxy_->get_cached_property(profilesVariant, "Profiles");
for (auto& variantDict : profilesVariant.get()) { for (auto& variantDict : profilesVariant.get()) {
Glib::ustring name; Glib::ustring name;
Glib::ustring driver; Glib::ustring cpuDriver;
Glib::ustring platformDriver;
if (auto p = variantDict.find("Profile"); p != variantDict.end()) { if (auto p = variantDict.find("Profile"); p != variantDict.end()) {
name = p->second.get(); name = p->second.get();
} }
if (auto d = variantDict.find("Driver"); d != variantDict.end()) { if (auto cd = variantDict.find("CpuDriver"); cd != variantDict.end()) {
driver = d->second.get(); cpuDriver = cd->second.get();
} }
if (auto pd = variantDict.find("PlatformDriver"); pd != variantDict.end()) {
platformDriver = pd->second.get();
}
if (cpuDriver.empty()) {
cpuDriver = "Unavailable";
spdlog::warn("Cannot find power profiles daemon cpu driver.");
}
if (platformDriver.empty()) {
platformDriver = "Unavailable";
spdlog::warn("Cannot find power profiles daemon platform driver.");
}
if (!name.empty()) { if (!name.empty()) {
availableProfiles_.emplace_back(std::move(name), std::move(driver)); availableProfiles_.emplace_back(std::move(name), std::move(cpuDriver), std::move(platformDriver));
} else { } else {
spdlog::error( spdlog::error(
"Power profiles daemon: power-profiles-daemon sent us an empty power profile name. " "Power profiles daemon: power-profiles-daemon sent us an empty power profile name. "
@@ -153,7 +167,8 @@ auto PowerProfilesDaemon::update() -> void {
// Set label // Set label
fmt::dynamic_format_arg_store<fmt::format_context> store; fmt::dynamic_format_arg_store<fmt::format_context> store;
store.push_back(fmt::arg("profile", profile.name)); store.push_back(fmt::arg("profile", profile.name));
store.push_back(fmt::arg("driver", profile.driver)); store.push_back(fmt::arg("cpu_driver", profile.cpuDriver));
store.push_back(fmt::arg("platform_driver", profile.platformDriver));
store.push_back(fmt::arg("icon", getIcon(0, profile.name))); store.push_back(fmt::arg("icon", getIcon(0, profile.name)));
label_.set_markup(fmt::vformat(format_, store)); label_.set_markup(fmt::vformat(format_, store));
if (tooltipEnabled()) { if (tooltipEnabled()) {