Merge remote-tracking branch 'upstream/master' into tray-child-window
This commit is contained in:
commit
fe9660254c
@ -19,18 +19,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
- `custom/text`: The `content` setting and all its properties are deprecated in favor of `format` with the same functionality. ([`#2676`](https://github.com/polybar/polybar/pull/2676))
|
- `custom/text`: The `content` setting and all its properties are deprecated in favor of `format` with the same functionality. ([`#2676`](https://github.com/polybar/polybar/pull/2676))
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
- `internal/temperature`: `%temperature-k%` token displays the temperature in kelvin ([`#2774`](https://github.com/polybar/polybar/discussions/2774), [`#2784`](https://github.com/polybar/polybar/pull/2784))
|
||||||
- `internal/pulseaudio`: `reverse-scroll` option ([`#2664`](https://github.com/polybar/polybar/pull/2664))
|
- `internal/pulseaudio`: `reverse-scroll` option ([`#2664`](https://github.com/polybar/polybar/pull/2664))
|
||||||
- `custom/script`: Repeat interval for script failure (`interval-fail`) and `exec-if` (`interval-if`) ([`#943`](https://github.com/polybar/polybar/issues/943), [`#2606`](https://github.com/polybar/polybar/issues/2606), [`#2630`](https://github.com/polybar/polybar/pull/2630))
|
- `custom/script`: Repeat interval for script failure (`interval-fail`) and `exec-if` (`interval-if`) ([`#943`](https://github.com/polybar/polybar/issues/943), [`#2606`](https://github.com/polybar/polybar/issues/2606), [`#2630`](https://github.com/polybar/polybar/pull/2630))
|
||||||
- `custom/text`: Loads the `format` setting, which supports the `<label>` tag, if the deprecated `content` is not defined ([`#1331`](https://github.com/polybar/polybar/issues/1331), [`#2673`](https://github.com/polybar/polybar/pull/2673), [`#2676`](https://github.com/polybar/polybar/pull/2676))
|
- `custom/text`: Loads the `format` setting, which supports the `<label>` tag, if the deprecated `content` is not defined ([`#1331`](https://github.com/polybar/polybar/issues/1331), [`#2673`](https://github.com/polybar/polybar/pull/2673), [`#2676`](https://github.com/polybar/polybar/pull/2676))
|
||||||
- Added experimental support for positioning the tray like a module
|
- Added experimental support for positioning the tray like a module
|
||||||
- `internal/backlight`: `scroll-interval` option ([`#2696`](https://github.com/polybar/polybar/issues/2696), [`#2700`](https://github.com/polybar/polybar/pull/2700))
|
- `internal/backlight`: `scroll-interval` option ([`#2696`](https://github.com/polybar/polybar/issues/2696), [`#2700`](https://github.com/polybar/polybar/pull/2700))
|
||||||
|
- `internal/temperature`: Added `zone-type` setting ([`#2572`](https://github.com/polybar/polybar/issues/2572), [`#2752`](https://github.com/polybar/polybar/pull/2752)) by [@xphoniex](https://github.com/xphoniex)
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
- `internal/fs`: Use `/` as a fallback if no mountpoints are specified ([`#2572`](https://github.com/polybar/polybar/issues/2572), [`#2705`](https://github.com/polybar/polybar/pull/2705))
|
- `internal/fs`: Use `/` as a fallback if no mountpoints are specified ([`#2572`](https://github.com/polybar/polybar/issues/2572), [`#2705`](https://github.com/polybar/polybar/pull/2705))
|
||||||
- `internal/backlight`: Detect backlight if none specified ([`#2572`](https://github.com/polybar/polybar/issues/2572), [`#2728`](https://github.com/polybar/polybar/pull/2728))
|
- `internal/backlight`: Detect backlight if none specified ([`#2572`](https://github.com/polybar/polybar/issues/2572), [`#2728`](https://github.com/polybar/polybar/pull/2728))
|
||||||
|
- Providing a negative min-width to a token adds right-padding ([`#2789`](https://github.com/polybar/polybar/issues/2789), [`#2801`](https://github.com/polybar/polybar/pull/2801)) by [@VanillaViking](https://github.com/VanillaViking).
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
- Waiting for double click interval on modules that don't have a double click action ([`#2663`](https://github.com/polybar/polybar/issues/2663), [`#2695`](https://github.com/polybar/polybar/pull/2695))
|
- Waiting for double click interval on modules that don't have a double click action ([`#2663`](https://github.com/polybar/polybar/issues/2663), [`#2695`](https://github.com/polybar/polybar/pull/2695))
|
||||||
|
- renderer: Small gaps when rendering emojis ([`#2785`](https://github.com/polybar/polybar/issues/2785), [`#2802`](https://github.com/polybar/polybar/pull/2802))
|
||||||
- config:
|
- config:
|
||||||
- Error reporting for deprecated config values ([`#2724`](https://github.com/polybar/polybar/issues/2724))
|
- Error reporting for deprecated config values ([`#2724`](https://github.com/polybar/polybar/issues/2724))
|
||||||
- Also monitor include-files for changes when --reload is set ([`#675`](https://github.com/polybar/polybar/issues/675), [`#2759`](https://github.com/polybar/polybar/pull/2759))
|
- Also monitor include-files for changes when --reload is set ([`#675`](https://github.com/polybar/polybar/issues/675), [`#2759`](https://github.com/polybar/polybar/pull/2759))
|
||||||
|
@ -20,3 +20,5 @@ set(SETTING_PATH_MESSAGING_FIFO "/tmp/polybar_mqueue.%pid%"
|
|||||||
CACHE STRING "Path to file containing the current temperature")
|
CACHE STRING "Path to file containing the current temperature")
|
||||||
set(SETTING_PATH_TEMPERATURE_INFO "/sys/class/thermal/thermal_zone%zone%/temp"
|
set(SETTING_PATH_TEMPERATURE_INFO "/sys/class/thermal/thermal_zone%zone%/temp"
|
||||||
CACHE STRING "Path to file containing the current temperature")
|
CACHE STRING "Path to file containing the current temperature")
|
||||||
|
set(SETTING_PATH_THERMAL_ZONE_WILDCARD "/sys/class/thermal/thermal_zone*"
|
||||||
|
CACHE STRING "Wildcard path to different thermal zones")
|
||||||
|
@ -196,6 +196,12 @@ namespace cairo {
|
|||||||
cairo_text_extents_t extents;
|
cairo_text_extents_t extents;
|
||||||
f->textwidth(subset, &extents);
|
f->textwidth(subset, &extents);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Make sure we don't advance partial pixels, this can cause problems
|
||||||
|
* later when cairo renders background colors over half-pixels.
|
||||||
|
*/
|
||||||
|
extents.x_advance = std::ceil(extents.x_advance);
|
||||||
|
|
||||||
// Draw the background
|
// Draw the background
|
||||||
if (t.bg_rect.h != 0.0) {
|
if (t.bg_rect.h != 0.0) {
|
||||||
save();
|
save();
|
||||||
|
@ -16,6 +16,7 @@ namespace drawtypes {
|
|||||||
size_t max{0_z};
|
size_t max{0_z};
|
||||||
string suffix{""s};
|
string suffix{""s};
|
||||||
bool zpad{false};
|
bool zpad{false};
|
||||||
|
bool rpadding{false};
|
||||||
};
|
};
|
||||||
|
|
||||||
class label : public non_copyable_mixin {
|
class label : public non_copyable_mixin {
|
||||||
|
@ -30,6 +30,7 @@ namespace modules {
|
|||||||
ramp_t m_ramp;
|
ramp_t m_ramp;
|
||||||
|
|
||||||
string m_path;
|
string m_path;
|
||||||
|
string m_zone_type;
|
||||||
int m_zone = 0;
|
int m_zone = 0;
|
||||||
// Base temperature used for where to start the ramp
|
// Base temperature used for where to start the ramp
|
||||||
int m_tempbase = 0;
|
int m_tempbase = 0;
|
||||||
|
@ -66,6 +66,7 @@ extern const char* const PATH_CPU_INFO;
|
|||||||
extern const char* const PATH_MEMORY_INFO;
|
extern const char* const PATH_MEMORY_INFO;
|
||||||
extern const char* const PATH_MESSAGING_FIFO;
|
extern const char* const PATH_MESSAGING_FIFO;
|
||||||
extern const char* const PATH_TEMPERATURE_INFO;
|
extern const char* const PATH_TEMPERATURE_INFO;
|
||||||
|
extern const char* const PATH_THERMAL_ZONE_WILDCARD;
|
||||||
extern const char* const WIRELESS_LIB;
|
extern const char* const WIRELESS_LIB;
|
||||||
|
|
||||||
bool version_details(const std::vector<std::string>& args);
|
bool version_details(const std::vector<std::string>& args);
|
||||||
|
@ -86,7 +86,11 @@ namespace drawtypes {
|
|||||||
if (tok.max != 0_z && string_util::char_len(repl) > tok.max) {
|
if (tok.max != 0_z && string_util::char_len(repl) > tok.max) {
|
||||||
repl = string_util::utf8_truncate(std::move(repl), tok.max) + tok.suffix;
|
repl = string_util::utf8_truncate(std::move(repl), tok.max) + tok.suffix;
|
||||||
} else if (tok.min != 0_z && repl.length() < tok.min) {
|
} else if (tok.min != 0_z && repl.length() < tok.min) {
|
||||||
repl.insert(0_z, tok.min - repl.length(), tok.zpad ? '0' : ' ');
|
if (tok.rpadding) {
|
||||||
|
repl.append(tok.min - repl.length(), ' ');
|
||||||
|
} else {
|
||||||
|
repl.insert(0_z, tok.min - repl.length(), tok.zpad ? '0' : ' ');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -231,6 +235,10 @@ namespace drawtypes {
|
|||||||
text = string_util::replace(text, token_str, token.token);
|
text = string_util::replace(text, token_str, token.token);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
if (token_str[pos + 1] == '-') {
|
||||||
|
token.rpadding = true;
|
||||||
|
pos++;
|
||||||
|
}
|
||||||
token.min = std::stoul(&token_str[pos + 1], nullptr, 10);
|
token.min = std::stoul(&token_str[pos + 1], nullptr, 10);
|
||||||
// When the number starts with 0 the string is 0-padded
|
// When the number starts with 0 the string is 0-padded
|
||||||
token.zpad = token_str[pos + 1] == '0';
|
token.zpad = token_str[pos + 1] == '0';
|
||||||
|
@ -16,12 +16,33 @@ namespace modules {
|
|||||||
temperature_module::temperature_module(const bar_settings& bar, string name_)
|
temperature_module::temperature_module(const bar_settings& bar, string name_)
|
||||||
: timer_module<temperature_module>(bar, move(name_)) {
|
: timer_module<temperature_module>(bar, move(name_)) {
|
||||||
m_zone = m_conf.get(name(), "thermal-zone", 0);
|
m_zone = m_conf.get(name(), "thermal-zone", 0);
|
||||||
|
m_zone_type = m_conf.get(name(), "zone-type", ""s);
|
||||||
m_path = m_conf.get(name(), "hwmon-path", ""s);
|
m_path = m_conf.get(name(), "hwmon-path", ""s);
|
||||||
m_tempbase = m_conf.get(name(), "base-temperature", 0);
|
m_tempbase = m_conf.get(name(), "base-temperature", 0);
|
||||||
m_tempwarn = m_conf.get(name(), "warn-temperature", 80);
|
m_tempwarn = m_conf.get(name(), "warn-temperature", 80);
|
||||||
set_interval(1s);
|
set_interval(1s);
|
||||||
m_units = m_conf.get(name(), "units", m_units);
|
m_units = m_conf.get(name(), "units", m_units);
|
||||||
|
|
||||||
|
if (!m_zone_type.empty()) {
|
||||||
|
bool zone_found = false;
|
||||||
|
vector<string> zone_paths = file_util::glob(PATH_THERMAL_ZONE_WILDCARD);
|
||||||
|
vector<string> available_zones;
|
||||||
|
for (auto &z: zone_paths) {
|
||||||
|
string zone_file = z + "/type";
|
||||||
|
string z_zone_type = string_util::strip_trailing_newline(file_util::contents(zone_file));
|
||||||
|
available_zones.push_back(z_zone_type);
|
||||||
|
if (z_zone_type == m_zone_type) {
|
||||||
|
m_path = z + "/temp";
|
||||||
|
zone_found = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!zone_found) {
|
||||||
|
throw module_error("zone-type '" + m_zone_type + "' was not found, available zone types: " + string_util::join(available_zones, ", "));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (m_path.empty()) {
|
if (m_path.empty()) {
|
||||||
m_path = string_util::replace(PATH_TEMPERATURE_INFO, "%zone%", to_string(m_zone));
|
m_path = string_util::replace(PATH_TEMPERATURE_INFO, "%zone%", to_string(m_zone));
|
||||||
}
|
}
|
||||||
@ -51,22 +72,27 @@ namespace modules {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool temperature_module::update() {
|
bool temperature_module::update() {
|
||||||
m_temp = std::strtol(file_util::contents(m_path).c_str(), nullptr, 10) / 1000.0f + 0.5f;
|
float temp = float(std::strtol(file_util::contents(m_path).c_str(), nullptr, 10)) / 1000.0;
|
||||||
int temp_f = floor(((1.8 * m_temp) + 32) + 0.5);
|
m_temp = std::lround( temp );
|
||||||
|
int temp_f = std::lround( (temp * 1.8) + 32.0 );
|
||||||
|
int temp_k = std::lround( temp + 273.15 );
|
||||||
|
|
||||||
string temp_c_string = to_string(m_temp);
|
string temp_c_string = to_string(m_temp);
|
||||||
string temp_f_string = to_string(temp_f);
|
string temp_f_string = to_string(temp_f);
|
||||||
|
string temp_k_string = to_string(temp_k);
|
||||||
|
|
||||||
// Add units if `units = true` in config
|
// Add units if `units = true` in config
|
||||||
if(m_units) {
|
if(m_units) {
|
||||||
temp_c_string += "°C";
|
temp_c_string += "°C";
|
||||||
temp_f_string += "°F";
|
temp_f_string += "°F";
|
||||||
|
temp_k_string += "K";
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto replace_tokens = [&](label_t& label) {
|
const auto replace_tokens = [&](label_t& label) {
|
||||||
label->reset_tokens();
|
label->reset_tokens();
|
||||||
label->replace_token("%temperature-f%", temp_f_string);
|
label->replace_token("%temperature-f%", temp_f_string);
|
||||||
label->replace_token("%temperature-c%", temp_c_string);
|
label->replace_token("%temperature-c%", temp_c_string);
|
||||||
|
label->replace_token("%temperature-k%", temp_k_string);
|
||||||
|
|
||||||
// DEPRECATED: Will be removed in later release
|
// DEPRECATED: Will be removed in later release
|
||||||
label->replace_token("%temperature%", temp_c_string);
|
label->replace_token("%temperature%", temp_c_string);
|
||||||
|
@ -19,6 +19,7 @@ const char* const PATH_CPU_INFO{"@SETTING_PATH_CPU_INFO@"};
|
|||||||
const char* const PATH_MEMORY_INFO{"@SETTING_PATH_MEMORY_INFO@"};
|
const char* const PATH_MEMORY_INFO{"@SETTING_PATH_MEMORY_INFO@"};
|
||||||
const char* const PATH_MESSAGING_FIFO{"@SETTING_PATH_MESSAGING_FIFO@"};
|
const char* const PATH_MESSAGING_FIFO{"@SETTING_PATH_MESSAGING_FIFO@"};
|
||||||
const char* const PATH_TEMPERATURE_INFO{"@SETTING_PATH_TEMPERATURE_INFO@"};
|
const char* const PATH_TEMPERATURE_INFO{"@SETTING_PATH_TEMPERATURE_INFO@"};
|
||||||
|
const char* const PATH_THERMAL_ZONE_WILDCARD{"@SETTING_PATH_THERMAL_ZONE_WILDCARD@"};
|
||||||
const char* const WIRELESS_LIB{"@WIRELESS_LIB@"};
|
const char* const WIRELESS_LIB{"@WIRELESS_LIB@"};
|
||||||
|
|
||||||
bool version_details(const std::vector<std::string>& args) {
|
bool version_details(const std::vector<std::string>& args) {
|
||||||
|
Loading…
Reference in New Issue
Block a user