From b9935c991f1b7de5e9b1aabc3f5a23b5d778344e Mon Sep 17 00:00:00 2001 From: Bill Thiede Date: Mon, 31 Jul 2023 07:44:45 -0700 Subject: [PATCH] Make network device filtering a regex. Work and home have different naming schemes. --- Cargo.lock | 1 + Cargo.toml | 1 + src/widgets/network.rs | 7 ++++--- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c3046c5..f615d80 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -208,6 +208,7 @@ dependencies = [ "glob", "i3monkit", "num_cpus", + "regex", "structopt", "thiserror", ] diff --git a/Cargo.toml b/Cargo.toml index f1dedc7..f7f0e3c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -27,3 +27,4 @@ chrono = "0.4" chrono-tz = "0.5" glob = "0.3.1" thiserror = "1.0.40" +regex = "1.9.1" diff --git a/src/widgets/network.rs b/src/widgets/network.rs index f932018..a2c9b6f 100644 --- a/src/widgets/network.rs +++ b/src/widgets/network.rs @@ -7,12 +7,12 @@ use std::{ }; use i3monkit::{Block, Widget, WidgetUpdate}; +use regex::Regex; use crate::spark; const NETWORK_PATH_PREFIX: &str = "/sys/class/net"; const NETWORK_STAT_SUFFIX: &str = "statistics/dummy"; -const DEVICE_PREFIX: &str = "enp"; struct TransferStat { rx: u64, @@ -180,19 +180,20 @@ pub struct AllNetworkSpeedWidget { } impl AllNetworkSpeedWidget { pub fn new(num_samples: usize) -> Self { + let dev_pat= Regex::new("(enp|eno).*").expect("bad re"); let nics = std::fs::read_dir(NETWORK_PATH_PREFIX) .expect(&format!("couldn't list {NETWORK_PATH_PREFIX}")) .filter_map(|dir| { let d = dir.unwrap(); let p = d.file_name(); let p = p.to_string_lossy(); - if p.starts_with(DEVICE_PREFIX) { + if dev_pat.is_match(&p) { Some(NetworkSpeedWidget::new(&p, num_samples)) } else { None } }) - .collect(); + .collect(); AllNetworkSpeedWidget { num_samples, nics } }