josie / alder-tools

Fix: bar width byte/char mismatch let fill clip text with multibyte °

c5ccef7b651f7e4a2bf4147b96c96f99b8a09e51
josie <administrator@josie-c.com> · 2026-08-29T12:34 · browse files at this commit

parents: ff0bca3

diff --git a/src/ui.rs b/src/ui.rs
index 7d572ee..c2a2019 100644
--- a/src/ui.rs
+++ b/src/ui.rs
@@ -219,11 +219,12 @@ fn meter_line(
         .map(|p| p.min(inner.saturating_sub(1)));
 
     // Value text right-aligned inside the bar (htop pattern); bold default fg.
-    let text: Vec<char> = if value_text.len() >= inner {
+    let text_len = value_text.chars().count();
+    let text: Vec<char> = if text_len >= inner {
         value_text.chars().rev().take(inner).collect::<Vec<_>>()
             .into_iter().rev().collect()
     } else {
-        let pad = inner - value_text.len();
+        let pad = inner - text_len;
         std::iter::repeat_n(' ', pad)
             .chain(value_text.chars())
             .collect()