Make network device filtering a regex.
Work and home have different naming schemes.
This commit is contained in:
parent
f51bbf62d9
commit
5473f0b0c5
1
Cargo.lock
generated
1
Cargo.lock
generated
@ -208,6 +208,7 @@ dependencies = [
|
|||||||
"glob",
|
"glob",
|
||||||
"i3monkit",
|
"i3monkit",
|
||||||
"num_cpus",
|
"num_cpus",
|
||||||
|
"regex",
|
||||||
"structopt",
|
"structopt",
|
||||||
"thiserror",
|
"thiserror",
|
||||||
]
|
]
|
||||||
|
|||||||
@ -27,3 +27,4 @@ chrono = "0.4"
|
|||||||
chrono-tz = "0.5"
|
chrono-tz = "0.5"
|
||||||
glob = "0.3.1"
|
glob = "0.3.1"
|
||||||
thiserror = "1.0.40"
|
thiserror = "1.0.40"
|
||||||
|
regex = "1.9.1"
|
||||||
|
|||||||
@ -7,12 +7,12 @@ use std::{
|
|||||||
};
|
};
|
||||||
|
|
||||||
use i3monkit::{Block, Widget, WidgetUpdate};
|
use i3monkit::{Block, Widget, WidgetUpdate};
|
||||||
|
use regex::Regex;
|
||||||
|
|
||||||
use crate::spark;
|
use crate::spark;
|
||||||
|
|
||||||
const NETWORK_PATH_PREFIX: &str = "/sys/class/net";
|
const NETWORK_PATH_PREFIX: &str = "/sys/class/net";
|
||||||
const NETWORK_STAT_SUFFIX: &str = "statistics/dummy";
|
const NETWORK_STAT_SUFFIX: &str = "statistics/dummy";
|
||||||
const DEVICE_PREFIX: &str = "enp";
|
|
||||||
|
|
||||||
struct TransferStat {
|
struct TransferStat {
|
||||||
rx: u64,
|
rx: u64,
|
||||||
@ -180,19 +180,20 @@ pub struct AllNetworkSpeedWidget {
|
|||||||
}
|
}
|
||||||
impl AllNetworkSpeedWidget {
|
impl AllNetworkSpeedWidget {
|
||||||
pub fn new(num_samples: usize) -> Self {
|
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)
|
let nics = std::fs::read_dir(NETWORK_PATH_PREFIX)
|
||||||
.expect(&format!("couldn't list {NETWORK_PATH_PREFIX}"))
|
.expect(&format!("couldn't list {NETWORK_PATH_PREFIX}"))
|
||||||
.filter_map(|dir| {
|
.filter_map(|dir| {
|
||||||
let d = dir.unwrap();
|
let d = dir.unwrap();
|
||||||
let p = d.file_name();
|
let p = d.file_name();
|
||||||
let p = p.to_string_lossy();
|
let p = p.to_string_lossy();
|
||||||
if p.starts_with(DEVICE_PREFIX) {
|
if dev_pat.is_match(&p) {
|
||||||
Some(NetworkSpeedWidget::new(&p, num_samples))
|
Some(NetworkSpeedWidget::new(&p, num_samples))
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
AllNetworkSpeedWidget { num_samples, nics }
|
AllNetworkSpeedWidget { num_samples, nics }
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user