Impl. showing the maximum value in a dyn. netgraph
This commit is contained in:
parent
276ae6b94a
commit
b35626c9fb
4 changed files with 58 additions and 3 deletions
|
@ -2,6 +2,8 @@
|
||||||
|
|
||||||
## Upcoming Changes
|
## Upcoming Changes
|
||||||
|
|
||||||
|
Impl. showing the maximum value in a dynamic netgraph.
|
||||||
|
|
||||||
## 0.1.7
|
## 0.1.7
|
||||||
|
|
||||||
When swaybar\_info starts, it no longer displays the traffic amount leading up
|
When swaybar\_info starts, it no longer displays the traffic amount leading up
|
||||||
|
|
|
@ -25,6 +25,8 @@ pub fn get_args() -> ArgsResult {
|
||||||
} else if arg.starts_with("--netgraph_max_bytes=") {
|
} else if arg.starts_with("--netgraph_max_bytes=") {
|
||||||
let (_, back) = arg.split_at(21);
|
let (_, back) = arg.split_at(21);
|
||||||
map.insert("netgraph".into(), back.into());
|
map.insert("netgraph".into(), back.into());
|
||||||
|
} else if arg.starts_with("--netgraph_dyn_display") {
|
||||||
|
map.insert("netgraph-dyndisplay".into(), String::new());
|
||||||
} else if arg.starts_with("--interval-sec=") {
|
} else if arg.starts_with("--interval-sec=") {
|
||||||
let (_, back) = arg.split_at(15);
|
let (_, back) = arg.split_at(15);
|
||||||
map.insert("interval-sec".into(), back.into());
|
map.insert("interval-sec".into(), back.into());
|
||||||
|
@ -67,6 +69,9 @@ pub fn print_usage() {
|
||||||
stderr_handle
|
stderr_handle
|
||||||
.write_all(b" \t\t\t\t (Set to \"dynamic\" instead of a byte count for dynamic sizing)\n")
|
.write_all(b" \t\t\t\t (Set to \"dynamic\" instead of a byte count for dynamic sizing)\n")
|
||||||
.ok();
|
.ok();
|
||||||
|
stderr_handle
|
||||||
|
.write_all(b" --netgraph_dyn_display\t\t\t\tEnable showing the current maximum value in the graph\n")
|
||||||
|
.ok();
|
||||||
stderr_handle
|
stderr_handle
|
||||||
.write_all(
|
.write_all(
|
||||||
b" --interval-sec=<seconds>\t\t\t\tOutput at intervals of <seconds> (default 5)\n",
|
b" --interval-sec=<seconds>\t\t\t\tOutput at intervals of <seconds> (default 5)\n",
|
||||||
|
|
32
src/main.rs
32
src/main.rs
|
@ -47,6 +47,7 @@ fn main() {
|
||||||
let mut net_width: Option<u16> = Some(11);
|
let mut net_width: Option<u16> = Some(11);
|
||||||
let mut net_graph_max: Option<f64> = None;
|
let mut net_graph_max: Option<f64> = None;
|
||||||
let mut net_graph_is_dynamic: bool = false;
|
let mut net_graph_is_dynamic: bool = false;
|
||||||
|
let mut net_graph_show_dynamic_max: bool = false;
|
||||||
let mut interval: Duration = Duration::from_secs(5);
|
let mut interval: Duration = Duration::from_secs(5);
|
||||||
if args_result.map.contains_key("netdev") {
|
if args_result.map.contains_key("netdev") {
|
||||||
net_obj = Some(proc::NetInfo::new(
|
net_obj = Some(proc::NetInfo::new(
|
||||||
|
@ -84,6 +85,9 @@ fn main() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if args_result.map.contains_key("netgraph-dyndisplay") {
|
||||||
|
net_graph_show_dynamic_max = true;
|
||||||
|
}
|
||||||
if args_result.map.contains_key("interval-sec") {
|
if args_result.map.contains_key("interval-sec") {
|
||||||
let seconds: Result<i64, _> = args_result.map.get("interval-sec").unwrap().parse();
|
let seconds: Result<i64, _> = args_result.map.get("interval-sec").unwrap().parse();
|
||||||
if let Ok(seconds_value) = seconds {
|
if let Ok(seconds_value) = seconds {
|
||||||
|
@ -128,6 +132,13 @@ fn main() {
|
||||||
let mut array = SwaybarArray::new();
|
let mut array = SwaybarArray::new();
|
||||||
let set_net_error = |is_empty: bool, array: &mut SwaybarArray, graph_max_opt: &Option<f64>| {
|
let set_net_error = |is_empty: bool, array: &mut SwaybarArray, graph_max_opt: &Option<f64>| {
|
||||||
if is_empty {
|
if is_empty {
|
||||||
|
if net_graph_is_dynamic && net_graph_show_dynamic_max {
|
||||||
|
array.push_object(SwaybarObject::from_error_string(
|
||||||
|
"net_graph_dyn_max".to_owned(),
|
||||||
|
"net ERROR".into(),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
if graph_max_opt.is_some() || net_graph_is_dynamic {
|
if graph_max_opt.is_some() || net_graph_is_dynamic {
|
||||||
array.push_object(SwaybarObject::from_error_string(
|
array.push_object(SwaybarObject::from_error_string(
|
||||||
"net_graph".to_owned(),
|
"net_graph".to_owned(),
|
||||||
|
@ -142,6 +153,12 @@ fn main() {
|
||||||
let up_obj = SwaybarObject::from_error_string("net_up".to_owned(), "Net ERROR".into());
|
let up_obj = SwaybarObject::from_error_string("net_up".to_owned(), "Net ERROR".into());
|
||||||
array.push_object(up_obj);
|
array.push_object(up_obj);
|
||||||
} else {
|
} else {
|
||||||
|
if net_graph_is_dynamic && net_graph_show_dynamic_max {
|
||||||
|
if let Some(dyn_max) = array.get_by_name_mut("net_graph_dyn_max") {
|
||||||
|
dyn_max.update_as_error("Net ERROR".to_owned());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if graph_max_opt.is_some() || net_graph_is_dynamic {
|
if graph_max_opt.is_some() || net_graph_is_dynamic {
|
||||||
if let Some(graph_ref) = array.get_by_name_mut("net_graph") {
|
if let Some(graph_ref) = array.get_by_name_mut("net_graph") {
|
||||||
graph_ref.update_as_error("Net ERROR".to_owned());
|
graph_ref.update_as_error("Net ERROR".to_owned());
|
||||||
|
@ -165,10 +182,17 @@ fn main() {
|
||||||
array: &mut SwaybarArray|
|
array: &mut SwaybarArray|
|
||||||
-> Result<(), proc::Error> {
|
-> Result<(), proc::Error> {
|
||||||
net.update()?;
|
net.update()?;
|
||||||
let (netinfo_string, graph_string) = net.get_netstring(net_graph_max)?;
|
let (netinfo_string, graph_string, history_max) = net.get_netstring(net_graph_max)?;
|
||||||
let netinfo_parts: Vec<&str> = netinfo_string.split_whitespace().collect();
|
let netinfo_parts: Vec<&str> = netinfo_string.split_whitespace().collect();
|
||||||
|
|
||||||
if is_empty {
|
if is_empty {
|
||||||
|
if net_graph_is_dynamic && net_graph_show_dynamic_max {
|
||||||
|
let mut graph_obj =
|
||||||
|
SwaybarObject::from_string("net_graph_dyn_max".to_owned(), history_max);
|
||||||
|
graph_obj.color = Some("#ffff88".into());
|
||||||
|
array.push_object(graph_obj);
|
||||||
|
}
|
||||||
|
|
||||||
if net_graph_max.is_some() || net_graph_is_dynamic {
|
if net_graph_max.is_some() || net_graph_is_dynamic {
|
||||||
let mut graph_obj =
|
let mut graph_obj =
|
||||||
SwaybarObject::from_string("net_graph".to_owned(), graph_string);
|
SwaybarObject::from_string("net_graph".to_owned(), graph_string);
|
||||||
|
@ -207,6 +231,12 @@ fn main() {
|
||||||
array.push_object(up_object);
|
array.push_object(up_object);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if net_graph_is_dynamic && net_graph_show_dynamic_max {
|
||||||
|
if let Some(graph_obj) = array.get_by_name_mut("net_graph_dyn_max") {
|
||||||
|
graph_obj.full_text = history_max;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if net_graph_max.is_some() || net_graph_is_dynamic {
|
if net_graph_max.is_some() || net_graph_is_dynamic {
|
||||||
if let Some(graph_obj) = array.get_by_name_mut("net_graph") {
|
if let Some(graph_obj) = array.get_by_name_mut("net_graph") {
|
||||||
graph_obj.full_text = graph_string;
|
graph_obj.full_text = graph_string;
|
||||||
|
|
22
src/proc.rs
22
src/proc.rs
|
@ -122,7 +122,11 @@ impl NetInfo {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_netstring(&mut self, graph_max_opt: Option<f64>) -> Result<(String, String), Error> {
|
// Returns netinfo down/up, graph, and history_max (if dynamic is enabled)
|
||||||
|
pub fn get_netstring(
|
||||||
|
&mut self,
|
||||||
|
graph_max_opt: Option<f64>,
|
||||||
|
) -> Result<(String, String, String), Error> {
|
||||||
let down_diff: f64 = if self.down > self.prev_down {
|
let down_diff: f64 = if self.down > self.prev_down {
|
||||||
let value = (self.down - self.prev_down) as f64;
|
let value = (self.down - self.prev_down) as f64;
|
||||||
self.prev_down = self.down;
|
self.prev_down = self.down;
|
||||||
|
@ -161,6 +165,8 @@ impl NetInfo {
|
||||||
up_diff
|
up_diff
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let mut diff_max_string = String::new();
|
||||||
|
|
||||||
if let Some(graph_max) = graph_max_opt {
|
if let Some(graph_max) = graph_max_opt {
|
||||||
let graph_value: u8 = if diff_max > graph_max {
|
let graph_value: u8 = if diff_max > graph_max {
|
||||||
8
|
8
|
||||||
|
@ -191,6 +197,18 @@ impl NetInfo {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if history_max > 1024.0 * 1024.0 {
|
||||||
|
write!(
|
||||||
|
&mut diff_max_string,
|
||||||
|
"{:.2} MiB",
|
||||||
|
history_max / (1024.0 * 1024.0)
|
||||||
|
)?;
|
||||||
|
} else if history_max > 1024.0 {
|
||||||
|
write!(&mut diff_max_string, "{:.2} KiB", history_max / 1024.0)?;
|
||||||
|
} else {
|
||||||
|
write!(&mut diff_max_string, "{:.0} B", history_max)?;
|
||||||
|
}
|
||||||
|
|
||||||
self.graph.clear();
|
self.graph.clear();
|
||||||
if history_max == 0.0 {
|
if history_max == 0.0 {
|
||||||
self.graph = String::from(" ");
|
self.graph = String::from(" ");
|
||||||
|
@ -212,7 +230,7 @@ impl NetInfo {
|
||||||
assert_eq!(self.graph_history.len(), 10);
|
assert_eq!(self.graph_history.len(), 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok((output, self.graph.clone()))
|
Ok((output, self.graph.clone(), diff_max_string))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue