75 lines
2.1 KiB
Rust
75 lines
2.1 KiB
Rust
use chrono::NaiveTime;
|
|
use i3monkit::{ColorRGB, Header, I3Protocol, WidgetCollection};
|
|
use i3xs::widgets::{
|
|
cpu::CpuWidget,
|
|
datetime::{DateTimeWidget, TimeColor},
|
|
disk::AllDiskSpeedWidget,
|
|
network::AllNetworkSpeedWidget,
|
|
power::PowerSupply,
|
|
};
|
|
use structopt::StructOpt;
|
|
|
|
#[derive(Debug, StructOpt)]
|
|
#[structopt(name = "i3xs", about = "Custom i3 status bar program.")]
|
|
struct Opt {}
|
|
|
|
fn main() {
|
|
let mut bar = WidgetCollection::new();
|
|
|
|
let _opts = Opt::from_args();
|
|
|
|
bar.push(PowerSupply::default());
|
|
bar.push(CpuWidget::default());
|
|
|
|
// Realtime upload/download rate for a interface
|
|
bar.push(AllNetworkSpeedWidget::new(6));
|
|
|
|
// Realtime read/write rate for a any active disks
|
|
bar.push(AllDiskSpeedWidget::new(6));
|
|
|
|
let mut dt = DateTimeWidget::tz("%H:%M %Z", chrono_tz::Europe::London);
|
|
dt.set_colors(vec![
|
|
TimeColor {
|
|
start: NaiveTime::from_hms_opt(0, 0, 0).unwrap(),
|
|
color: ColorRGB::red(),
|
|
},
|
|
TimeColor {
|
|
start: NaiveTime::from_hms_opt(8, 0, 0).unwrap(),
|
|
color: ColorRGB(255, 255, 255),
|
|
},
|
|
TimeColor {
|
|
start: NaiveTime::from_hms_opt(17, 0, 0).unwrap(),
|
|
color: ColorRGB::yellow(),
|
|
},
|
|
TimeColor {
|
|
start: NaiveTime::from_hms_opt(18, 0, 0).unwrap(),
|
|
color: ColorRGB::red(),
|
|
},
|
|
]);
|
|
bar.push(dt);
|
|
|
|
let mut dt = DateTimeWidget::new("%m/%d %H:%M");
|
|
dt.set_colors(vec![
|
|
TimeColor {
|
|
start: NaiveTime::from_hms_opt(0, 0, 0).unwrap(),
|
|
color: ColorRGB::red(),
|
|
},
|
|
TimeColor {
|
|
start: NaiveTime::from_hms_opt(7, 0, 0).unwrap(),
|
|
color: ColorRGB(255, 255, 255),
|
|
},
|
|
TimeColor {
|
|
start: NaiveTime::from_hms_opt(15, 0, 0).unwrap(),
|
|
color: ColorRGB::yellow(),
|
|
},
|
|
TimeColor {
|
|
start: NaiveTime::from_hms_opt(16, 0, 0).unwrap(),
|
|
color: ColorRGB::red(),
|
|
},
|
|
]);
|
|
bar.push(dt);
|
|
|
|
// Then start updating the status bar
|
|
bar.update_loop(I3Protocol::new(Header::new(1), std::io::stdout()));
|
|
}
|