Skip to content

Commit

Permalink
support multiple items in hwmon-path of temperature module
Browse files Browse the repository at this point in the history
So user can share configuration file among different machines with different hardware
configurations.
  • Loading branch information
yangyingchao committed Jun 17, 2023
1 parent d367b7e commit e403c3b
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 3 deletions.
4 changes: 3 additions & 1 deletion man/waybar-temperature.5.scd
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ Addressed by *temperature*
*hwmon-path*: ++
typeof: string ++
The temperature path to use, e.g. */sys/class/hwmon/hwmon2/temp1_input* instead of one in */sys/class/thermal/*.
This can also be an array of strings. In this case, waybar will check each item in the array and use the first valid one.
This is suitable if you want to share the same configuration file among different machines with different hardware configurations.

*hwmon-path-abs*: ++
typeof: string ++
Expand Down Expand Up @@ -117,7 +119,7 @@ Addressed by *temperature*
```
"temperature": {
// "thermal-zone": 2,
// "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
// "hwmon-path": ["/sys/class/hwmon/hwmon2/temp1_input", "/sys/class/thermal/thermal_zone0/temp"],
// "critical-threshold": 80,
// "format-critical": "{temperatureC}°C ",
"format": "{temperatureC}°C "
Expand Down
14 changes: 12 additions & 2 deletions src/modules/temperature.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,18 @@ waybar::modules::Temperature::Temperature(const std::string& id, const Json::Val
#if defined(__FreeBSD__)
// try to read sysctl?
#else
if (config_["hwmon-path"].isString()) {
file_path_ = config_["hwmon-path"].asString();
auto& hwmon_path = config_["hwmon-path"];
if (hwmon_path.isString()) {
file_path_ = hwmon_path.asString();
} else if (hwmon_path.isArray()) {
// if hwmon_path is an array, loop to find first valid item
for (auto& item : hwmon_path) {
auto path = item.asString();
if (std::filesystem::exists(path)) {
file_path_ = path;
break;
}
}
} else if (config_["hwmon-path-abs"].isString() && config_["input-filename"].isString()) {
file_path_ = (*std::filesystem::directory_iterator(config_["hwmon-path-abs"].asString()))
.path()
Expand Down

0 comments on commit e403c3b

Please sign in to comment.