diff --git a/CHANGELOG.md b/CHANGELOG.md index 51483dea..77b7ce2c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -51,6 +51,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#450](https://github.com/ClementTsang/bottom/pull/450): Tweak `default-light` colour scheme to look less terrible on white terminals. +- [#451](https://github.com/ClementTsang/bottom/pull/451): Add decimal place to disk values larger than 1GB for total read/write in process widgets, and read/write per second in process widgets and disk widgets. + ## Bug Fixes - [#416](https://github.com/ClementTsang/bottom/pull/416): Fixes grouped vs ungrouped modes in the processes widget having inconsistent spacing. diff --git a/src/app/data_farmer.rs b/src/app/data_farmer.rs index 4a2f470e..c58e4f1b 100644 --- a/src/app/data_farmer.rs +++ b/src/app/data_farmer.rs @@ -19,7 +19,7 @@ use std::{time::Instant, vec::Vec}; use crate::app::data_harvester::load_avg::LoadAvgHarvest; use crate::{ data_harvester::{batteries, cpu, disks, load_avg, mem, network, processes, temperature, Data}, - utils::gen_util::get_decimal_bytes, + utils::gen_util::{get_decimal_bytes, GIGA_LIMIT}, }; use regex::Regex; @@ -296,8 +296,16 @@ impl DataCollection { let converted_read = get_decimal_bytes(r_rate); let converted_write = get_decimal_bytes(w_rate); *io_labels = ( - format!("{:.*}{}/s", 0, converted_read.0, converted_read.1), - format!("{:.*}{}/s", 0, converted_write.0, converted_write.1), + if r_rate >= GIGA_LIMIT { + format!("{:.*}{}/s", 1, converted_read.0, converted_read.1) + } else { + format!("{:.*}{}/s", 0, converted_read.0, converted_read.1) + }, + if w_rate >= GIGA_LIMIT { + format!("{:.*}{}/s", 1, converted_write.0, converted_write.1) + } else { + format!("{:.*}{}/s", 0, converted_write.0, converted_write.1) + }, ); } } diff --git a/src/data_conversion.rs b/src/data_conversion.rs index 185aa811..c0f8529e 100644 --- a/src/data_conversion.rs +++ b/src/data_conversion.rs @@ -586,13 +586,32 @@ fn get_disk_io_strings( let converted_total_write = get_decimal_bytes(total_write); ( - format!("{:.*}{}/s", 0, converted_rps.0, converted_rps.1), - format!("{:.*}{}/s", 0, converted_wps.0, converted_wps.1), - format!("{:.*}{}", 0, converted_total_read.0, converted_total_read.1), - format!( - "{:.*}{}", - 0, converted_total_write.0, converted_total_write.1 - ), + if rps >= GIGA_LIMIT { + format!("{:.*}{}/s", 1, converted_rps.0, converted_rps.1) + } else { + format!("{:.*}{}/s", 0, converted_rps.0, converted_rps.1) + }, + if wps >= GIGA_LIMIT { + format!("{:.*}{}/s", 1, converted_wps.0, converted_wps.1) + } else { + format!("{:.*}{}/s", 0, converted_wps.0, converted_wps.1) + }, + if total_read >= GIGA_LIMIT { + format!("{:.*}{}", 1, converted_total_read.0, converted_total_read.1) + } else { + format!("{:.*}{}", 0, converted_total_read.0, converted_total_read.1) + }, + if total_write >= GIGA_LIMIT { + format!( + "{:.*}{}", + 1, converted_total_write.0, converted_total_write.1 + ) + } else { + format!( + "{:.*}{}", + 0, converted_total_write.0, converted_total_write.1 + ) + }, ) }