Make network device filtering a regex.
Work and home have different naming schemes.
This commit is contained in:
@@ -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 }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user