i3xs/src/bin/work.rs

75 lines
2.0 KiB
Rust

use chrono::NaiveTime;
use i3monkit::{ColorRGB, Header, I3Protocol, WidgetCollection};
use structopt::StructOpt;
use i3xs::widgets::cpu::CpuWidget;
use i3xs::widgets::datetime::{DateTimeWidget, TimeColor};
use i3xs::widgets::network::NetworkSpeedWidget;
use i3xs::widgets::power::PowerSupply;
#[derive(Debug, StructOpt)]
#[structopt(name = "i3xs", about = "Custom i3 status bar program.")]
struct Opt {
#[structopt(short, long)]
nic: String,
}
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(NetworkSpeedWidget::new(&opts.nic, 6));
let mut dt = DateTimeWidget::tz("%H:%M %Z", chrono_tz::Europe::London);
dt.set_colors(vec![
TimeColor {
start: NaiveTime::from_hms(0, 0, 0),
color: ColorRGB::red(),
},
TimeColor {
start: NaiveTime::from_hms(8, 0, 0),
color: ColorRGB(255, 255, 255),
},
TimeColor {
start: NaiveTime::from_hms(17, 0, 0),
color: ColorRGB::yellow(),
},
TimeColor {
start: NaiveTime::from_hms(18, 0, 0),
color: ColorRGB::red(),
},
]);
bar.push(dt);
let mut dt = DateTimeWidget::new("%m/%d %H:%M");
dt.set_colors(vec![
TimeColor {
start: NaiveTime::from_hms(0, 0, 0),
color: ColorRGB::red(),
},
TimeColor {
start: NaiveTime::from_hms(7, 0, 0),
color: ColorRGB(255, 255, 255),
},
TimeColor {
start: NaiveTime::from_hms(15, 0, 0),
color: ColorRGB::yellow(),
},
TimeColor {
start: NaiveTime::from_hms(16, 0, 0),
color: ColorRGB::red(),
},
]);
bar.push(dt);
// Then start updating the status bar
bar.update_loop(I3Protocol::new(Header::new(1), std::io::stdout()));
}