power: set color when battery power low.
This commit is contained in:
parent
9c94122d1d
commit
793f1f63e9
15
src/colors.rs
Normal file
15
src/colors.rs
Normal file
@ -0,0 +1,15 @@
|
||||
use i3monkit::ColorRGB;
|
||||
|
||||
pub const WHITE: ColorRGB = ColorRGB(255, 255, 255);
|
||||
|
||||
pub fn lerp(c1: ColorRGB, c2: ColorRGB, alpha: f32) -> ColorRGB {
|
||||
ColorRGB(
|
||||
(c1.0 as f32 * (1. - alpha) + c2.0 as f32 * alpha) as u8,
|
||||
(c1.1 as f32 * (1. - alpha) + c2.1 as f32 * alpha) as u8,
|
||||
(c1.2 as f32 * (1. - alpha) + c2.2 as f32 * alpha) as u8,
|
||||
)
|
||||
}
|
||||
|
||||
pub fn to_string(c: ColorRGB) -> String {
|
||||
format!("#{:02x}{:02x}{:02x}", c.0, c.1, c.2)
|
||||
}
|
||||
@ -1,2 +1,3 @@
|
||||
pub mod colors;
|
||||
pub mod spark;
|
||||
pub mod widgets;
|
||||
|
||||
@ -4,7 +4,7 @@ use std::io::{BufRead, BufReader, Result};
|
||||
|
||||
use i3monkit::{Block, ColorRGB, Widget, WidgetUpdate};
|
||||
|
||||
use crate::spark;
|
||||
use crate::{colors, spark};
|
||||
|
||||
#[derive(Debug)]
|
||||
struct Stat {
|
||||
@ -20,18 +20,6 @@ pub struct CpuWidget {
|
||||
history: Vec<VecDeque<f32>>,
|
||||
}
|
||||
|
||||
fn color_lerp(c1: ColorRGB, c2: ColorRGB, alpha: f32) -> ColorRGB {
|
||||
ColorRGB(
|
||||
(c1.0 as f32 * (1. - alpha) + c2.0 as f32 * alpha) as u8,
|
||||
(c1.1 as f32 * (1. - alpha) + c2.1 as f32 * alpha) as u8,
|
||||
(c1.2 as f32 * (1. - alpha) + c2.2 as f32 * alpha) as u8,
|
||||
)
|
||||
}
|
||||
|
||||
fn color_to_string(c: ColorRGB) -> String {
|
||||
format!("#{:02x}{:02x}{:02x}", c.0, c.1, c.2)
|
||||
}
|
||||
|
||||
impl CpuWidget {
|
||||
fn read_status() -> Result<Vec<Stat>> {
|
||||
let file = File::open("/proc/stat")?;
|
||||
@ -92,10 +80,10 @@ impl CpuWidget {
|
||||
.iter()
|
||||
.zip(sg.chars())
|
||||
.map(|(v, g)| {
|
||||
let c = color_lerp(ColorRGB::green(), ColorRGB::red(), *v);
|
||||
let c = colors::lerp(ColorRGB::green(), ColorRGB::red(), *v);
|
||||
format!(
|
||||
r##"<span foreground="{}">{}</span>"##,
|
||||
color_to_string(c),
|
||||
colors::to_string(c),
|
||||
g
|
||||
)
|
||||
})
|
||||
|
||||
@ -13,9 +13,11 @@
|
||||
use std::collections::HashMap;
|
||||
|
||||
use glob::glob;
|
||||
use i3monkit::{Block, Widget, WidgetUpdate};
|
||||
use i3monkit::{Block, ColorRGB, Widget, WidgetUpdate};
|
||||
use thiserror::Error;
|
||||
|
||||
use crate::colors;
|
||||
|
||||
#[derive(Debug, Default)]
|
||||
pub struct PowerSupply {}
|
||||
|
||||
@ -71,14 +73,24 @@ impl PowerSupply {
|
||||
} else {
|
||||
BATT_0
|
||||
};
|
||||
|
||||
let color = if cap >= 50 {
|
||||
colors::WHITE
|
||||
} else if cap >= 25 {
|
||||
ColorRGB::yellow()
|
||||
} else {
|
||||
ColorRGB::red()
|
||||
};
|
||||
res.push(format!(
|
||||
"{} {}: <span face=\"pango:Font Awesome 5 Free\">{}</span>",
|
||||
r##"{} {}: {}% <span color="{}" face="pango:Font Awesome 5 Free">{}</span>"##,
|
||||
values
|
||||
.get("POWER_SUPPLY_MANUFACTURER")
|
||||
.unwrap_or(&"Unknown mfg"),
|
||||
values
|
||||
.get("POWER_SUPPLY_MODEL_NAME")
|
||||
.unwrap_or(&"Unknown model"),
|
||||
cap,
|
||||
colors::to_string(color),
|
||||
power,
|
||||
));
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user