Skip to content

Commit eb2df58

Browse files
authored
Merge pull request #4002 from lbartoletti/freebsd_temp
fix(FreeBSD): Use dev.cpu temperature sysctl
2 parents 8490a1d + 4ba1947 commit eb2df58

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

src/modules/temperature.cpp

+11-7
Original file line numberDiff line numberDiff line change
@@ -114,13 +114,17 @@ float waybar::modules::Temperature::getTemperature() {
114114

115115
auto zone = config_["thermal-zone"].isInt() ? config_["thermal-zone"].asInt() : 0;
116116

117-
if (sysctlbyname(fmt::format("hw.acpi.thermal.tz{}.temperature", zone).c_str(), &temp, &size,
118-
NULL, 0) != 0) {
119-
throw std::runtime_error(fmt::format(
120-
"sysctl hw.acpi.thermal.tz{}.temperature or dev.cpu.{}.temperature failed", zone, zone));
117+
// First, try with dev.cpu
118+
if ( (sysctlbyname(fmt::format("dev.cpu.{}.temperature", zone).c_str(), &temp, &size,
119+
NULL, 0) == 0) ||
120+
(sysctlbyname(fmt::format("hw.acpi.thermal.tz{}.temperature", zone).c_str(), &temp, &size,
121+
NULL, 0) == 0) ) {
122+
auto temperature_c = ((float)temp - 2732) / 10;
123+
return temperature_c;
121124
}
122-
auto temperature_c = ((float)temp - 2732) / 10;
123-
return temperature_c;
125+
126+
throw std::runtime_error(fmt::format(
127+
"sysctl hw.acpi.thermal.tz{}.temperature and dev.cpu.{}.temperature failed", zone, zone));
124128

125129
#else // Linux
126130
std::ifstream temp(file_path_);
@@ -148,4 +152,4 @@ bool waybar::modules::Temperature::isWarning(uint16_t temperature_c) {
148152
bool waybar::modules::Temperature::isCritical(uint16_t temperature_c) {
149153
return config_["critical-threshold"].isInt() &&
150154
temperature_c >= config_["critical-threshold"].asInt();
151-
}
155+
}

0 commit comments

Comments
 (0)