From 41eb098a85b4a19753a79aee89a191f8b16c1680 Mon Sep 17 00:00:00 2001 From: Luca Maltagliati Date: Fri, 3 Sep 2021 10:39:31 +0200 Subject: [PATCH 1/7] feat:add tokens to display memory in MiB when GiB val <= 1.0 (#2472) --- include/utils/string.hpp | 1 + src/modules/memory.cpp | 6 ++++++ src/utils/string.cpp | 11 +++++++++++ 3 files changed, 18 insertions(+) diff --git a/include/utils/string.hpp b/include/utils/string.hpp index 270fc9701..76ece3252 100644 --- a/include/utils/string.hpp +++ b/include/utils/string.hpp @@ -96,6 +96,7 @@ namespace string_util { string floating_point(double value, size_t precision, bool fixed = false, const string& locale = ""); string filesize_mib(unsigned long long kibibytes, size_t precision = 0, const string& locale = ""); string filesize_gib(unsigned long long kibibytes, size_t precision = 0, const string& locale = ""); + string filesize_gib_mib(unsigned long long kibibytes, size_t precision, const string locale = ""); string filesize(unsigned long long kbytes, size_t precision = 0, bool fixed = false, const string& locale = ""); hash_type hash(const string& src); diff --git a/src/modules/memory.cpp b/src/modules/memory.cpp index f97864fb2..d89e48a4f 100644 --- a/src/modules/memory.cpp +++ b/src/modules/memory.cpp @@ -119,6 +119,12 @@ namespace modules { label->replace_token("%gb_swap_total%", string_util::filesize_gib(kb_swap_total, 2, m_bar.locale)); label->replace_token("%gb_swap_free%", string_util::filesize_gib(kb_swap_free, 2, m_bar.locale)); label->replace_token("%gb_swap_used%", string_util::filesize_gib(kb_swap_total - kb_swap_free, 2, m_bar.locale)); + label->replace_token("%used%", string_util::filesize_gib_mib(kb_total - kb_avail, 2, m_bar.locale)); + label->replace_token("%free%", string_util::filesize_gib_mib(kb_avail, 2, m_bar.locale)); + label->replace_token("%total%", string_util::filesize_gib_mib(kb_total, 2, m_bar.locale)); + label->replace_token("%swap_total%", string_util::filesize_gib_mib(kb_swap_total, 2, m_bar.locale)); + label->replace_token("%swap_free%", string_util::filesize_gib_mib(kb_swap_free, 2, m_bar.locale)); + label->replace_token("%swap_used%", string_util::filesize_gib_mib(kb_swap_total, 2, m_bar.locale)); }; if (m_label) { diff --git a/src/utils/string.cpp b/src/utils/string.cpp index 9df04b885..affc06fb5 100644 --- a/src/utils/string.cpp +++ b/src/utils/string.cpp @@ -291,6 +291,17 @@ namespace string_util { return floating_point(kibibytes / 1024.0 / 1024.0, precision, true, locale) + " GiB"; } + /** + * Create a GiB string, if the value in GiB is >= 1.0. Otherwise, create a MiB string. + */ + string filesize_gib_mib(unsigned long long kibibytes, size_t precision, const string locale) { + if(kibibytes / 1024.0 / 1024.0 < 1.0) { + return filesize_mib(kibibytes, precision, locale); + } else { + return filesize_gib(kibibytes, precision, locale); + } + } + /** * Create a filesize string by converting given bytes to highest unit possible */ From f67e7e103fba5b5b3ceb4bebec122a6debdf6e3d Mon Sep 17 00:00:00 2001 From: Luca Maltagliati Date: Fri, 3 Sep 2021 12:34:12 +0200 Subject: [PATCH 2/7] fix: correct swap_used calculation --- src/modules/memory.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/memory.cpp b/src/modules/memory.cpp index d89e48a4f..b970dc192 100644 --- a/src/modules/memory.cpp +++ b/src/modules/memory.cpp @@ -124,7 +124,7 @@ namespace modules { label->replace_token("%total%", string_util::filesize_gib_mib(kb_total, 2, m_bar.locale)); label->replace_token("%swap_total%", string_util::filesize_gib_mib(kb_swap_total, 2, m_bar.locale)); label->replace_token("%swap_free%", string_util::filesize_gib_mib(kb_swap_free, 2, m_bar.locale)); - label->replace_token("%swap_used%", string_util::filesize_gib_mib(kb_swap_total, 2, m_bar.locale)); + label->replace_token("%swap_used%", string_util::filesize_gib_mib(kb_swap_total - kb_swap_free, 2, m_bar.locale)); }; if (m_label) { From baf4ec201cf1ea83320897e72212008ca9b102da Mon Sep 17 00:00:00 2001 From: Luca Maltagliati Date: Fri, 3 Sep 2021 16:26:32 +0200 Subject: [PATCH 3/7] fix: pass variable by reference rather than by value --- include/utils/string.hpp | 2 +- src/utils/string.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/utils/string.hpp b/include/utils/string.hpp index 76ece3252..7c4566d83 100644 --- a/include/utils/string.hpp +++ b/include/utils/string.hpp @@ -96,7 +96,7 @@ namespace string_util { string floating_point(double value, size_t precision, bool fixed = false, const string& locale = ""); string filesize_mib(unsigned long long kibibytes, size_t precision = 0, const string& locale = ""); string filesize_gib(unsigned long long kibibytes, size_t precision = 0, const string& locale = ""); - string filesize_gib_mib(unsigned long long kibibytes, size_t precision, const string locale = ""); + string filesize_gib_mib(unsigned long long kibibytes, size_t precision, const string& locale = ""); string filesize(unsigned long long kbytes, size_t precision = 0, bool fixed = false, const string& locale = ""); hash_type hash(const string& src); diff --git a/src/utils/string.cpp b/src/utils/string.cpp index affc06fb5..0057cf29d 100644 --- a/src/utils/string.cpp +++ b/src/utils/string.cpp @@ -294,7 +294,7 @@ namespace string_util { /** * Create a GiB string, if the value in GiB is >= 1.0. Otherwise, create a MiB string. */ - string filesize_gib_mib(unsigned long long kibibytes, size_t precision, const string locale) { + string filesize_gib_mib(unsigned long long kibibytes, size_t precision, const string& locale) { if(kibibytes / 1024.0 / 1024.0 < 1.0) { return filesize_mib(kibibytes, precision, locale); } else { From 0e302776ac2d991b3a64e505f774daa6aeef52f0 Mon Sep 17 00:00:00 2001 From: Luca Maltagliati Date: Fri, 3 Sep 2021 22:13:41 +0200 Subject: [PATCH 4/7] fix: add precision arguments to filesize_gib_mib(); better condition --- include/utils/string.hpp | 2 +- src/modules/memory.cpp | 16 ++++++++-------- src/utils/string.cpp | 8 ++++---- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/include/utils/string.hpp b/include/utils/string.hpp index 7c4566d83..0af6f2731 100644 --- a/include/utils/string.hpp +++ b/include/utils/string.hpp @@ -96,7 +96,7 @@ namespace string_util { string floating_point(double value, size_t precision, bool fixed = false, const string& locale = ""); string filesize_mib(unsigned long long kibibytes, size_t precision = 0, const string& locale = ""); string filesize_gib(unsigned long long kibibytes, size_t precision = 0, const string& locale = ""); - string filesize_gib_mib(unsigned long long kibibytes, size_t precision, const string& locale = ""); + string filesize_gib_mib(unsigned long long kibibytes, size_t precision_mib, size_t precision_gib, const string& locale = ""); string filesize(unsigned long long kbytes, size_t precision = 0, bool fixed = false, const string& locale = ""); hash_type hash(const string& src); diff --git a/src/modules/memory.cpp b/src/modules/memory.cpp index b970dc192..34c52eb73 100644 --- a/src/modules/memory.cpp +++ b/src/modules/memory.cpp @@ -1,5 +1,5 @@ #include -#include + #include #include #include "drawtypes/label.hpp" @@ -119,12 +119,12 @@ namespace modules { label->replace_token("%gb_swap_total%", string_util::filesize_gib(kb_swap_total, 2, m_bar.locale)); label->replace_token("%gb_swap_free%", string_util::filesize_gib(kb_swap_free, 2, m_bar.locale)); label->replace_token("%gb_swap_used%", string_util::filesize_gib(kb_swap_total - kb_swap_free, 2, m_bar.locale)); - label->replace_token("%used%", string_util::filesize_gib_mib(kb_total - kb_avail, 2, m_bar.locale)); - label->replace_token("%free%", string_util::filesize_gib_mib(kb_avail, 2, m_bar.locale)); - label->replace_token("%total%", string_util::filesize_gib_mib(kb_total, 2, m_bar.locale)); - label->replace_token("%swap_total%", string_util::filesize_gib_mib(kb_swap_total, 2, m_bar.locale)); - label->replace_token("%swap_free%", string_util::filesize_gib_mib(kb_swap_free, 2, m_bar.locale)); - label->replace_token("%swap_used%", string_util::filesize_gib_mib(kb_swap_total - kb_swap_free, 2, m_bar.locale)); + label->replace_token("%used%", string_util::filesize_gib_mib(kb_total - kb_avail, 0, 2, m_bar.locale)); + label->replace_token("%free%", string_util::filesize_gib_mib(kb_avail, 0, 2, m_bar.locale)); + label->replace_token("%total%", string_util::filesize_gib_mib(kb_total, 0, 2, m_bar.locale)); + label->replace_token("%swap_total%", string_util::filesize_gib_mib(kb_swap_total, 0, 2, m_bar.locale)); + label->replace_token("%swap_free%", string_util::filesize_gib_mib(kb_swap_free, 0, 2, m_bar.locale)); + label->replace_token("%swap_used%", string_util::filesize_gib_mib(kb_swap_total - kb_swap_free, 0, 2, m_bar.locale)); }; if (m_label) { @@ -137,7 +137,7 @@ namespace modules { return true; } - + string memory_module::get_format() const { if (m_perc_memused>= m_perc_memused_warn && m_formatter->has_format(FORMAT_WARN)) { return FORMAT_WARN; diff --git a/src/utils/string.cpp b/src/utils/string.cpp index 0057cf29d..9ff1be195 100644 --- a/src/utils/string.cpp +++ b/src/utils/string.cpp @@ -294,11 +294,11 @@ namespace string_util { /** * Create a GiB string, if the value in GiB is >= 1.0. Otherwise, create a MiB string. */ - string filesize_gib_mib(unsigned long long kibibytes, size_t precision, const string& locale) { - if(kibibytes / 1024.0 / 1024.0 < 1.0) { - return filesize_mib(kibibytes, precision, locale); + string filesize_gib_mib(unsigned long long kibibytes, size_t precision_mib, size_t precision_gib, const string& locale) { + if(kibibytes < 1024 * 1024) { + return filesize_mib(kibibytes, precision_mib, locale); } else { - return filesize_gib(kibibytes, precision, locale); + return filesize_gib(kibibytes, precision_gib, locale); } } From 37e2184595aed11e1f9b8cd769f96ba98a8312a3 Mon Sep 17 00:00:00 2001 From: Luca Maltagliati Date: Fri, 3 Sep 2021 22:21:17 +0200 Subject: [PATCH 5/7] doc: add #2472 to CHANGELOG --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 580b8c648..2455eb3f9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -52,6 +52,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - The `POLYBAR_FLAGS` cmake variable can be used to pass extra C++ compiler flags. ### Added +- `module/memory`: Display MiB instead of GiB when GiB value is less than 1GiB + ([`2472`](https://github.com/polybar/polybar/issues/2472)) - Option to always show urgent windows in i3 module when `pin-workspace` is active ([`2374`](https://github.com/polybar/polybar/issues/2374)) - `internal/xworkspaces`: `reverse-scroll` can be used to reverse the scroll From be557bd61cb8bdaa019460c861bf88d7c4d798a3 Mon Sep 17 00:00:00 2001 From: Luca Maltagliati Date: Fri, 3 Sep 2021 22:31:54 +0200 Subject: [PATCH 6/7] fix: missing default argument values --- include/utils/string.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/utils/string.hpp b/include/utils/string.hpp index 0af6f2731..53b9b9ae6 100644 --- a/include/utils/string.hpp +++ b/include/utils/string.hpp @@ -96,7 +96,7 @@ namespace string_util { string floating_point(double value, size_t precision, bool fixed = false, const string& locale = ""); string filesize_mib(unsigned long long kibibytes, size_t precision = 0, const string& locale = ""); string filesize_gib(unsigned long long kibibytes, size_t precision = 0, const string& locale = ""); - string filesize_gib_mib(unsigned long long kibibytes, size_t precision_mib, size_t precision_gib, const string& locale = ""); + string filesize_gib_mib(unsigned long long kibibytes, size_t precision_mib = 0, size_t precision_gib = 0, const string& locale = ""); string filesize(unsigned long long kbytes, size_t precision = 0, bool fixed = false, const string& locale = ""); hash_type hash(const string& src); From 6663f6741bdb27d75db7e8ee32ccf008303cc961 Mon Sep 17 00:00:00 2001 From: Patrick Ziegler Date: Sat, 4 Sep 2021 13:07:29 +0200 Subject: [PATCH 7/7] Apply suggestions from code review --- CHANGELOG.md | 4 +++- src/modules/memory.cpp | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2455eb3f9..3ad80fba2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -52,7 +52,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - The `POLYBAR_FLAGS` cmake variable can be used to pass extra C++ compiler flags. ### Added -- `module/memory`: Display MiB instead of GiB when GiB value is less than 1GiB +- `internal/memory`: New tokens `%used%`, `%free%`, `%total%`, `%swap_total%`, + `%swap_free%`, and `%swap_used%` that automatically switch between MiB and GiB + when below or above 1GiB. ([`2472`](https://github.com/polybar/polybar/issues/2472)) - Option to always show urgent windows in i3 module when `pin-workspace` is active ([`2374`](https://github.com/polybar/polybar/issues/2374)) diff --git a/src/modules/memory.cpp b/src/modules/memory.cpp index 34c52eb73..eb36e5dc9 100644 --- a/src/modules/memory.cpp +++ b/src/modules/memory.cpp @@ -1,5 +1,5 @@ #include - #include +#include #include #include "drawtypes/label.hpp"