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())); }